1 5cedca1b 2004-05-15 devnull /* te.c: error message control, input line count */
2 5cedca1b 2004-05-15 devnull # include "t.h"
5 5cedca1b 2004-05-15 devnull error(char *s)
7 c5561c23 2004-05-16 devnull fprintf(stderr, "\n%s:%d: %s\n", ifile, iline, s);
8 c5561c23 2004-05-16 devnull fprintf(stderr, "tbl quits\n");
14 5cedca1b 2004-05-15 devnull gets1(char *s, int size)
16 5cedca1b 2004-05-15 devnull char *p, *ns;
21 c5561c23 2004-05-16 devnull p = fgetln(tabin, &nbl);
22 5cedca1b 2004-05-15 devnull while (p == 0) {
23 5cedca1b 2004-05-15 devnull if (swapin() == 0)
24 5cedca1b 2004-05-15 devnull return(0);
25 c5561c23 2004-05-16 devnull p = fgetln(tabin, &nbl);
27 c5561c23 2004-05-16 devnull if(p != 0 && p[nbl-1] == '\n')
29 5cedca1b 2004-05-15 devnull if(nbl >= size)
30 5cedca1b 2004-05-15 devnull error("input buffer too small");
31 5cedca1b 2004-05-15 devnull p[nbl] = 0;
32 5cedca1b 2004-05-15 devnull strcpy(s, p);
33 5cedca1b 2004-05-15 devnull s += nbl;
34 5cedca1b 2004-05-15 devnull for (nbl = 0; *s == '\\' && s > ns; s--)
36 5cedca1b 2004-05-15 devnull if (linstart && nbl % 2) /* fold escaped nl if in table */
37 5cedca1b 2004-05-15 devnull gets1(s + 1, size - (s-ns));
39 5cedca1b 2004-05-15 devnull return(p);
43 5cedca1b 2004-05-15 devnull # define BACKMAX 500
44 5cedca1b 2004-05-15 devnull char backup[BACKMAX];
45 5cedca1b 2004-05-15 devnull char *backp = backup;
48 5cedca1b 2004-05-15 devnull un1getc(int c)
50 5cedca1b 2004-05-15 devnull if (c == '\n')
52 5cedca1b 2004-05-15 devnull *backp++ = c;
53 5cedca1b 2004-05-15 devnull if (backp >= backup + BACKMAX)
54 5cedca1b 2004-05-15 devnull error("too much backup");
59 5cedca1b 2004-05-15 devnull get1char(void)
62 5cedca1b 2004-05-15 devnull if (backp > backup)
63 5cedca1b 2004-05-15 devnull c = *--backp;
65 c5561c23 2004-05-16 devnull c = fgetc(tabin);
66 5cedca1b 2004-05-15 devnull if (c == 0) /* EOF */ {
67 5cedca1b 2004-05-15 devnull if (swapin() == 0)
68 5cedca1b 2004-05-15 devnull error("unexpected EOF");
69 c5561c23 2004-05-16 devnull c = fgetc(tabin);
71 5cedca1b 2004-05-15 devnull if (c == '\n')
73 5cedca1b 2004-05-15 devnull return(c);