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