- *str++ = '\\'; /* backslash in place */
- *str++ = ch; /* get the escape char, no further check */
- continue; /* carry on */
- }
-
- /* if new line we have a new line break, which is illegal */
- if (ch == '\n') {
- werror (W_NEWLINE_IN_STRING);
- *str++ = '\n';
- lineno=++yylineno;
- column=0;
- continue;
- }
-
- /* if this is a quote then we have work to do */
- /* find the next non whitespace character */
- /* if that is a double quote then carry on */
- if (ch == '\"') {
- *str++ = ch ; /* Pass end of this string or substring to evaluator */
+ else {
+ buf[0] = '\\';
+ buf[1] = ch;
+ dbuf_append(&dbuf, buf, 2); /* get the escape char, no further check */
+ }
+ break; /* carry on */
+
+ case '\n':
+ /* if new line we have a new line break, which is illegal */
+ werror(W_NEWLINE_IN_STRING);
+ dbuf_append(&dbuf, "\n", 1);
+ lineno = ++yylineno;
+ column = 0;
+ break;
+
+ case '"':
+ /* if this is a quote then we have work to do */
+ /* find the next non whitespace character */
+ /* if that is a double quote then carry on */
+ dbuf_append(&dbuf, "\"", 1); /* Pass end of this string or substring to evaluator */