for (;;) {
if (c & 0200) {
if (c == EOI) {
+ newline();
flush(op-_obuf);
return;
}
echo(c);
}
else if (c == EOI) {
+ newline();
flush(op - _obuf);
return;
}
break;
}
else if (c == EOI) {
+ newline();
flush(op-_obuf);
return;
}
}
else if (c == '\'') escaped = 1;
}
- }
- while (escaped || c != stopc);
+ } while (escaped || c != stopc);
echo(c);
if (c == '\n')
break; /* Don't eat # */
LoadChar(c);
c = skipspaces(c,1);
if (c != '(') { /* no replacement if no () */
- error("macro %s needs arguments",
+ warning("macro %s needs arguments",
idef->id_text);
PushBack();
return 0;
/* skipspaces() skips any white space and returns the first
non-space character.
*/
+ register int nlseen = 0;
+
for (;;) {
- while (class(ch) == STSKIP)
+ while (class(ch) == STSKIP) {
+ nlseen = 0;
LoadChar(ch);
+ }
if (skipnl && class(ch) == STNL) {
LoadChar(ch);
++LineNumber;
+ nlseen++;
continue;
}
/* How about "\\\n"????????? */
return '/';
}
}
- else
+ else if (nlseen && ch == '#') {
+ domacro();
+ LoadChar(ch);
+ /* ch is the first character of a line. This means
+ * that nlseen will still be true.
+ */
+ } else
return ch;
}
}