114194Sedward #ifndef lint 2*15580Sedward static char *sccsid = "@(#)error.c 3.3 83/11/22"; 314194Sedward #endif 414194Sedward 514194Sedward #include "defs.h" 6*15580Sedward #include "value.h" 7*15580Sedward #include "context.h" 814194Sedward 914418Sedward #define ERRLINES 10 /* number of lines for errwin */ 1014194Sedward 1114194Sedward /*VARARGS1*/ 1214194Sedward error(fmt, a, b, c, d, e, f, g, h) 1314194Sedward char *fmt; 1414194Sedward { 15*15580Sedward if (cx.x_type != X_FILE) { 1614194Sedward if (terse) 1714418Sedward wwbell(); 1814194Sedward else { 1914418Sedward (void) wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h); 2014418Sedward (void) wwputs(" ", cmdwin); 2114194Sedward } 2214194Sedward return; 2314194Sedward } 24*15580Sedward if (cx.x_baderr) 2514194Sedward return; 26*15580Sedward if (cx.x_errwin == 0) { 2714194Sedward char buf[512]; 2814194Sedward 29*15580Sedward (void) sprintf(buf, "Errors from %s", cx.x_filename); 30*15580Sedward if ((cx.x_errwin = openiwin(ERRLINES, buf)) == 0) { 3114418Sedward (void) wwprintf(cmdwin, "Can't open error window. "); 32*15580Sedward cx.x_baderr = 1; 3314194Sedward return; 3414194Sedward } 35*15580Sedward cx.x_errlineno = 0; 3614194Sedward } 37*15580Sedward if (cx.x_errlineno++ > ERRLINES - 4) { 38*15580Sedward waitnl(cx.x_errwin); 39*15580Sedward cx.x_errlineno = 0; 4014194Sedward } 41*15580Sedward if (cx.x_lineno != 0) 42*15580Sedward (void) wwprintf(cx.x_errwin, "line %d: ", cx.x_lineno); 43*15580Sedward (void) wwprintf(cx.x_errwin, fmt, a, b, c, d, e, f, g, h); 44*15580Sedward (void) wwprintf(cx.x_errwin, "\n"); 4514194Sedward } 4614194Sedward 47*15580Sedward err_end() 4814194Sedward { 49*15580Sedward if (cx.x_errwin != 0) { 50*15580Sedward waitnl(cx.x_errwin); 51*15580Sedward closeiwin(cx.x_errwin); 52*15580Sedward cx.x_errwin = 0; 5314194Sedward } 5414194Sedward } 55