diff --git a/src/svalue.c b/src/svalue.c index 2402b571e439f9be8b3c6beba8a2c52139b2d7df..76d874535a59a234a49fb0a870526d1211477819 100644 --- a/src/svalue.c +++ b/src/svalue.c @@ -17,8 +17,10 @@ #include "dynamic_buffer.h" #include "interpret.h" #include "gc.h" +#include "pike_macros.h" +#include <ctype.h> -RCSID("$Id: svalue.c,v 1.21 1998/03/28 14:58:51 grubba Exp $"); +RCSID("$Id: svalue.c,v 1.22 1998/04/06 04:10:53 hubbe Exp $"); struct svalue dest_ob_zero = { T_INT, 0 }; @@ -758,26 +760,28 @@ void describe_svalue(struct svalue *s,int indent,struct processing *p) my_putchar('\\'); my_putchar('r'); break; - - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - my_putchar('\\'); - my_putchar('0'); - my_putchar('0'); - my_putchar('0' + s->u.string->str[i]); - break; + case '"': case '\\': my_putchar('\\'); - default: my_putchar(s->u.string->str[i]); + break; + + default: + if(is8bitalnum(s->u.string->str[i]) || isprint(s->u.string->str[i])) + { + my_putchar(s->u.string->str[i]); + break; + } + + case 0: case 1: case 2: case 3: case 4: + case 5: case 6: case 7: + my_putchar('\\'); + my_putchar('0'); + my_putchar('0'); + my_putchar('0' + s->u.string->str[i]); + break; } } my_putchar('"');