]> git.pond.sub.org Git - empserver/commitdiff
(xdprval): Fix for strings with characters printed as escapes. Print
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 31 Aug 2004 17:45:45 +0000 (17:45 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 31 Aug 2004 17:45:45 +0000 (17:45 +0000)
null pointer as `nil' to distinguish it from empty string.

src/lib/commands/xdump.c

index a29e0d50ea327b975f70071f2cc442d6ba6d05a1..f6340db42f21507aeed110ae43f79d7b60d1fce6 100644 (file)
@@ -303,17 +303,19 @@ xdprval(struct valstr *val, char *sep)
        pr("%s%g", sep, val->val_as.dbl);
        break;
     case NSC_STRING:
-       pr("%s\"", sep);
        s = val->val_as.str;
-       while (s && *s) {
-           for (e = s; *e != '"' && isprint(*e); ++e) ;
-           pr("%*s", (int)(e-s), s);
-           for (; *e && !isprint(*e); ++e) {
-               pr("\\%3o", *e);
+       if (s) {
+           pr("%s\"", sep);
+           while (*s) {
+               for (e = s; *e != '"' && isprint(*e); ++e) ;
+               pr("%.*s", (int)(e-s), s);
+               if (*e)
+                   pr("\\%03o", *e++);
+               s = e;
            }
-           s = e;
-       }
-       prnf("\"");
+           prnf("\"");
+       } else
+           pr("%snil", sep);
        break;
     default:
        CANT_HAPPEN("Bad VAL type");