xref: /csrg-svn/old/tbl/te.c (revision 14513)
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