(xdprval): Fix for strings with characters printed as escapes. Print

null pointer as `nil' to distinguish it from empty string.
This commit is contained in:
Markus Armbruster 2004-08-31 17:45:45 +00:00
parent 7a4f133d1c
commit 5346422665

View file

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