xref: /csrg-svn/usr.bin/window/error.c (revision 15580)
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