From: kaashoek Date: Sun, 29 May 1988 13:55:56 +0000 (+0000) Subject: Quotes en back-slashes moeten ook speciaal behandeld wordeni in strings. X-Git-Tag: release-5-5~3242 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=95b5bdcdc5d01997baf4dbba3d2eca0abf1c84a3;p=ack.git Quotes en back-slashes moeten ook speciaal behandeld wordeni in strings. --- diff --git a/util/ceg/as_parser/eval/eval.c b/util/ceg/as_parser/eval/eval.c index af3a788f3..98d55e6d6 100644 --- a/util/ceg/as_parser/eval/eval.c +++ b/util/ceg/as_parser/eval/eval.c @@ -225,34 +225,42 @@ char *quest; pr_text_with_conversions( str) char *str; { - char *s, *ptr, *next_conversion(), *pr_conversion(); + char *ptr, *next_conversion(), *pr_conversion(); while ( ptr = next_conversion( str)) { /* ptr points to '%'-sign */ *ptr = '\0'; printf( "fprint( outfile, \""); - - for ( s = str; *s != '\0'; s++) - if ( *s == '\n') - printf( "\\n"); - else - putchar( *s); - + pr_string( str); printf( "\");"); *ptr = '%'; str = pr_conversion( ptr); } printf( "fprint( outfile, \""); + pr_string( str); + printf( "\");"); +} - for ( s = str; *s != '\0'; s++) - if ( *s == '\n') - printf( "\\n"); - else - putchar( *s); - printf( "\");"); +pr_string( s) +char *s; +{ + for ( ; *s != '\0'; s++) + switch ( *s) { + case '"' : printf( "\\\""); + break; + + case '\\': printf( "\\\\"); + break; + + case '\n': printf( "\\n"); + break; + + default : printf( "%c", *s); + } } + char *next_conversion( str) char *str; {