1*14513Ssam #ifndef lint 2*14513Ssam static char sccsid[] = "@(#)te.c 4.2 08/11/83"; 3*14513Ssam #endif 411039Sshannon 511039Sshannon /* te.c: error message control, input line count */ 611039Sshannon # include "t..c" 711039Sshannon error(s) 811039Sshannon char *s; 911039Sshannon { 1011039Sshannon fprintf(stderr, "\n%s: line %d: %s\n", ifile, iline, s); 1111039Sshannon # ifdef unix 1211039Sshannon fprintf(stderr, "tbl quits\n"); 1311039Sshannon exit(1); 1411039Sshannon # endif 1511039Sshannon # ifdef gcos 1611039Sshannon fprintf(stderr, "run terminated due to error condition detected by tbl preprocessor\n"); 1711039Sshannon exit(0); 1811039Sshannon # endif 1911039Sshannon } 2011039Sshannon gets1(s) 2111039Sshannon char *s; 2211039Sshannon { 2311039Sshannon char *p; 2411039Sshannon int nbl = 0; 2511039Sshannon iline++; 2611039Sshannon p=fgets(s,BUFSIZ,tabin); 2711039Sshannon while (p==0) 2811039Sshannon { 2911039Sshannon if (swapin()==0) 3011039Sshannon return(0); 3111039Sshannon p = fgets(s,BUFSIZ,tabin); 3211039Sshannon } 3311039Sshannon 3411039Sshannon while (*s) s++; 3511039Sshannon s--; 3611039Sshannon if (*s == '\n') *s-- =0; 3711039Sshannon for(nbl=0; *s == '\\' && s>p; s--) 3811039Sshannon nbl++; 3911039Sshannon if (linstart && nbl % 2) /* fold escaped nl if in table */ 4011039Sshannon gets1(s+1); 4111039Sshannon 4211039Sshannon return(p); 4311039Sshannon } 4411039Sshannon # define BACKMAX 500 4511039Sshannon char backup[BACKMAX]; 4611039Sshannon char *backp = backup; 4711039Sshannon un1getc(c) 4811039Sshannon { 4911039Sshannon if (c=='\n') 5011039Sshannon iline--; 5111039Sshannon *backp++ = c; 5211039Sshannon if (backp >= backup+BACKMAX) 5311039Sshannon error("too much backup"); 5411039Sshannon } 5511039Sshannon get1char() 5611039Sshannon { 5711039Sshannon int c; 5811039Sshannon if (backp>backup) 5911039Sshannon c = *--backp; 6011039Sshannon else 6111039Sshannon c=getc(tabin); 6211039Sshannon if (c== EOF) /* EOF */ 6311039Sshannon { 6411039Sshannon if (swapin() ==0) 6511039Sshannon error("unexpected EOF"); 6611039Sshannon c = getc(tabin); 6711039Sshannon } 6811039Sshannon if (c== '\n') 6911039Sshannon iline++; 7011039Sshannon return(c); 7111039Sshannon } 72