BSD 4 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 30 Dec 1979 18:16:49 +0000 (10:16 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 30 Dec 1979 18:16:49 +0000 (10:16 -0800)
Work on file usr/src/cmd/tbl/te.c

Synthesized-from: CSRG//cd1/4.0

usr/src/cmd/tbl/te.c [new file with mode: 0644]

diff --git a/usr/src/cmd/tbl/te.c b/usr/src/cmd/tbl/te.c
new file mode 100644 (file)
index 0000000..75ea7de
--- /dev/null
@@ -0,0 +1,67 @@
+ /* 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,BUFSIZ,tabin);
+while (p==0)
+       {
+       if (swapin()==0)
+               return(0);
+       p = fgets(s,BUFSIZ,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);
+}