114194Sedward #ifndef lint 2*16309Sedward static char *sccsid = "@(#)error.c 3.8 84/04/08"; 314194Sedward #endif 414194Sedward 514194Sedward #include "defs.h" 615580Sedward #include "value.h" 715580Sedward #include "context.h" 8*16309Sedward #include "char.h" 914194Sedward 1014418Sedward #define ERRLINES 10 /* number of lines for errwin */ 1114194Sedward 1214194Sedward /*VARARGS1*/ 1314194Sedward error(fmt, a, b, c, d, e, f, g, h) 1414194Sedward char *fmt; 1514194Sedward { 1615681Sedward register struct ww *w; 1715681Sedward 1815580Sedward if (cx.x_type != X_FILE) { 1914194Sedward if (terse) 20*16309Sedward wwputc(ctrl(g), cmdwin); 2114194Sedward else { 2216121Sedward wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h); 2316121Sedward wwputs(" ", cmdwin); 2414194Sedward } 2514194Sedward return; 2614194Sedward } 2715857Sedward if (cx.x_noerr) 2814194Sedward return; 2915681Sedward if ((w = cx.x_errwin) == 0) { 3014194Sedward char buf[512]; 3114194Sedward 3215580Sedward (void) sprintf(buf, "Errors from %s", cx.x_filename); 3315681Sedward if ((w = cx.x_errwin = openiwin(ERRLINES, buf)) == 0) { 3416121Sedward wwputs("Can't open error window. ", cmdwin); 3515857Sedward cx.x_noerr = 1; 3614194Sedward return; 3714194Sedward } 3814194Sedward } 3915857Sedward if (more(w, 0) == 2) { 4015857Sedward cx.x_noerr = 1; 4115857Sedward return; 4215857Sedward } 4316121Sedward wwprintf(w, "line %d: ", cx.x_lineno); 4416121Sedward wwprintf(w, fmt, a, b, c, d, e, f, g, h); 4516121Sedward wwputc('\n', w); 4614194Sedward } 4714194Sedward 4815580Sedward err_end() 4914194Sedward { 5015580Sedward if (cx.x_errwin != 0) { 5115857Sedward if (!cx.x_noerr) 5215857Sedward waitnl(cx.x_errwin); 5315580Sedward closeiwin(cx.x_errwin); 5415580Sedward cx.x_errwin = 0; 5514194Sedward } 5614194Sedward } 57