1*14194Sedward #ifndef lint 2*14194Sedward static char *sccsid = "@(#)error.c 1.1 83/07/28"; 3*14194Sedward #endif 4*14194Sedward 5*14194Sedward #include "defs.h" 6*14194Sedward 7*14194Sedward struct ww *openwin(); 8*14194Sedward 9*14194Sedward extern int lineno; /* line number in source file */ 10*14194Sedward 11*14194Sedward static char *filename; /* source file name */ 12*14194Sedward static struct ww *errwin; /* window for error reporting */ 13*14194Sedward static int errlineno; /* lineno in errwin */ 14*14194Sedward static char baderror; /* can't open the error window */ 15*14194Sedward 16*14194Sedward #define ERRLINES 10 /* number of lines in errwin */ 17*14194Sedward 18*14194Sedward /*VARARGS1*/ 19*14194Sedward error(fmt, a, b, c, d, e, f, g, h) 20*14194Sedward char *fmt; 21*14194Sedward { 22*14194Sedward if (filename == 0) { 23*14194Sedward if (terse) 24*14194Sedward Ding(); 25*14194Sedward else { 26*14194Sedward wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h); 27*14194Sedward wwputs(" ", cmdwin); 28*14194Sedward } 29*14194Sedward return; 30*14194Sedward } 31*14194Sedward if (baderror) 32*14194Sedward return; 33*14194Sedward if (errwin == 0) { 34*14194Sedward char buf[512]; 35*14194Sedward 36*14194Sedward (void) sprintf(buf, "Errors from %s", filename); 37*14194Sedward if ((errwin = openwin(ERRLINES, buf)) == 0) { 38*14194Sedward wwprintf(cmdwin, "Can't open error window. "); 39*14194Sedward baderror++; 40*14194Sedward return; 41*14194Sedward } 42*14194Sedward errlineno = 0; 43*14194Sedward } 44*14194Sedward if (errlineno++ > ERRLINES - 4) { 45*14194Sedward waitnl(errwin); 46*14194Sedward errlineno = 0; 47*14194Sedward } 48*14194Sedward if (lineno != 0) 49*14194Sedward wwprintf(errwin, "line %d: ", lineno); 50*14194Sedward wwprintf(errwin, fmt, a, b, c, d, e, f, g, h); 51*14194Sedward wwprintf(errwin, "\r\n"); 52*14194Sedward } 53*14194Sedward 54*14194Sedward beginerror(fn) 55*14194Sedward char *fn; 56*14194Sedward { 57*14194Sedward filename = fn; 58*14194Sedward } 59*14194Sedward 60*14194Sedward enderror() 61*14194Sedward { 62*14194Sedward if (errwin != 0) { 63*14194Sedward waitnl(errwin); 64*14194Sedward closewin(errwin); 65*14194Sedward errwin = 0; 66*14194Sedward } 67*14194Sedward baderror = 0; 68*14194Sedward filename = 0; 69*14194Sedward } 70