/* te.c: error message control, input line count */ # include "t..c" error(s) char *s; { fprintf(stderr, "\n%s: line %d: %s\n", ifile, iline, s); # ifdef unix fprintf(stderr, "tbl quits\n"); exit(1); # endif # ifdef gcos fprintf(stderr, "run terminated due to error condition detected by tbl preprocessor\n"); exit(0); # endif } gets1(s) char *s; { char *p; int nbl = 0; iline++; p=fgets(s,512,tabin); while (p==0) { if (swapin()==0) return(0); p = fgets(s,512,tabin); } while (*s) s++; s--; if (*s == '\n') *s-- =0; for(nbl=0; *s == '\\' && s>p; s--) nbl++; if (linstart && nbl % 2) /* fold escaped nl if in table */ gets1(s+1); return(p); } # define BACKMAX 500 char backup[BACKMAX]; char *backp = backup; un1getc(c) { if (c=='\n') iline--; *backp++ = c; if (backp >= backup+BACKMAX) error("too much backup"); } get1char() { int c; if (backp>backup) c = *--backp; else c=getc(tabin); if (c== EOF) /* EOF */ { if (swapin() ==0) error("unexpected EOF"); c = getc(tabin); } if (c== '\n') iline++; return(c); }