1*11039Sshannon /* te.c 4.1 83/02/12 */ 2*11039Sshannon 3*11039Sshannon /* te.c: error message control, input line count */ 4*11039Sshannon # include "t..c" 5*11039Sshannon error(s) 6*11039Sshannon char *s; 7*11039Sshannon { 8*11039Sshannon fprintf(stderr, "\n%s: line %d: %s\n", ifile, iline, s); 9*11039Sshannon # ifdef unix 10*11039Sshannon fprintf(stderr, "tbl quits\n"); 11*11039Sshannon exit(1); 12*11039Sshannon # endif 13*11039Sshannon # ifdef gcos 14*11039Sshannon fprintf(stderr, "run terminated due to error condition detected by tbl preprocessor\n"); 15*11039Sshannon exit(0); 16*11039Sshannon # endif 17*11039Sshannon } 18*11039Sshannon gets1(s) 19*11039Sshannon char *s; 20*11039Sshannon { 21*11039Sshannon char *p; 22*11039Sshannon int nbl = 0; 23*11039Sshannon iline++; 24*11039Sshannon p=fgets(s,BUFSIZ,tabin); 25*11039Sshannon while (p==0) 26*11039Sshannon { 27*11039Sshannon if (swapin()==0) 28*11039Sshannon return(0); 29*11039Sshannon p = fgets(s,BUFSIZ,tabin); 30*11039Sshannon } 31*11039Sshannon 32*11039Sshannon while (*s) s++; 33*11039Sshannon s--; 34*11039Sshannon if (*s == '\n') *s-- =0; 35*11039Sshannon for(nbl=0; *s == '\\' && s>p; s--) 36*11039Sshannon nbl++; 37*11039Sshannon if (linstart && nbl % 2) /* fold escaped nl if in table */ 38*11039Sshannon gets1(s+1); 39*11039Sshannon 40*11039Sshannon return(p); 41*11039Sshannon } 42*11039Sshannon # define BACKMAX 500 43*11039Sshannon char backup[BACKMAX]; 44*11039Sshannon char *backp = backup; 45*11039Sshannon un1getc(c) 46*11039Sshannon { 47*11039Sshannon if (c=='\n') 48*11039Sshannon iline--; 49*11039Sshannon *backp++ = c; 50*11039Sshannon if (backp >= backup+BACKMAX) 51*11039Sshannon error("too much backup"); 52*11039Sshannon } 53*11039Sshannon get1char() 54*11039Sshannon { 55*11039Sshannon int c; 56*11039Sshannon if (backp>backup) 57*11039Sshannon c = *--backp; 58*11039Sshannon else 59*11039Sshannon c=getc(tabin); 60*11039Sshannon if (c== EOF) /* EOF */ 61*11039Sshannon { 62*11039Sshannon if (swapin() ==0) 63*11039Sshannon error("unexpected EOF"); 64*11039Sshannon c = getc(tabin); 65*11039Sshannon } 66*11039Sshannon if (c== '\n') 67*11039Sshannon iline++; 68*11039Sshannon return(c); 69*11039Sshannon } 70