xref: /csrg-svn/usr.bin/window/error.c (revision 15857)
114194Sedward #ifndef lint
2*15857Sedward static	char *sccsid = "@(#)error.c	3.6 84/01/13";
314194Sedward #endif
414194Sedward 
514194Sedward #include "defs.h"
615580Sedward #include "value.h"
715580Sedward #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 {
1515681Sedward 	register struct ww *w;
1615681Sedward 
1715580Sedward 	if (cx.x_type != X_FILE) {
1814194Sedward 		if (terse)
1914418Sedward 			wwbell();
2014194Sedward 		else {
2114418Sedward 			(void) wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h);
2214418Sedward 			(void) wwputs("  ", cmdwin);
2314194Sedward 		}
2414194Sedward 		return;
2514194Sedward 	}
26*15857Sedward 	if (cx.x_noerr)
2714194Sedward 		return;
2815681Sedward 	if ((w = cx.x_errwin) == 0) {
2914194Sedward 		char buf[512];
3014194Sedward 
3115580Sedward 		(void) sprintf(buf, "Errors from %s", cx.x_filename);
3215681Sedward 		if ((w = cx.x_errwin = openiwin(ERRLINES, buf)) == 0) {
3315681Sedward 			(void) wwputs("Can't open error window.  ", cmdwin);
34*15857Sedward 			cx.x_noerr = 1;
3514194Sedward 			return;
3614194Sedward 		}
3714194Sedward 	}
38*15857Sedward 	if (more(w, 0) == 2) {
39*15857Sedward 		cx.x_noerr = 1;
40*15857Sedward 		return;
41*15857Sedward 	}
4215681Sedward 	(void) wwprintf(w, "line %d: ", cx.x_lineno);
4315681Sedward 	(void) wwprintf(w, fmt, a, b, c, d, e, f, g, h);
4415681Sedward 	(void) wwputc('\n', w);
4514194Sedward }
4614194Sedward 
4715580Sedward err_end()
4814194Sedward {
4915580Sedward 	if (cx.x_errwin != 0) {
50*15857Sedward 		if (!cx.x_noerr)
51*15857Sedward 			waitnl(cx.x_errwin);
5215580Sedward 		closeiwin(cx.x_errwin);
5315580Sedward 		cx.x_errwin = 0;
5414194Sedward 	}
5514194Sedward }
56