+ if (oldstyle) {
+ /* We must read until the closing backquote, giving special
+ treatment to some slashes, and then push the string and
+ reread it as input, interpreting it normally. */
+ register char *out;
+ register c;
+ int savelen;
+ char *str;
+
+ STARTSTACKSTR(out);
+ while ((c = pgetc ()) != '`') {
+ if (c == '\\') {
+ c = pgetc ();
+ if (c != '\\' && c != '`' && c != '$'
+ && (!dblquote || c != '"'))
+ STPUTC('\\', out);
+ }
+ STPUTC(c, out);
+ }
+ STPUTC('\0', out);
+ savelen = out - stackblock();
+ if (savelen > 0) {
+ str = ckmalloc(savelen);
+ bcopy(stackblock(), str, savelen);
+ }
+ setinputstring(str, 1);
+ }