-static adns_status cs_str(vbuf *vb, const void *data) {
- const char *const *ddp= data;
- const char *dp= *ddp;
+static int csp_qstring(vbuf *vb, const char *dp) {
+ unsigned char ch;
+ char buf[10];
+
+ if (!adns__vbuf_append(vb,"\"",1)) return 0;
+
+ while ((ch= *dp++)) {
+ if (ch >= 32 && ch <= 126 && ch != '"' && ch != '\\') {
+ if (!adns__vbuf_append(vb,&ch,1)) return 0;
+ } else {
+ sprintf(buf,"\\%02x",ch);
+ if (!adns__vbuf_appendstr(vb,buf)) return 0;
+ }
+ }