|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: static char sccsid[] = "@(#)error.c 3.14 (Berkeley) 6/29/88";
20: #endif /* not lint */
21:
22: #include "defs.h"
23: #include "value.h"
24: #include "context.h"
25: #include "char.h"
26:
27: #define ERRLINES 10 /* number of lines for errwin */
28:
29: /*VARARGS1*/
30: error(fmt, a, b, c, d, e, f, g, h)
31: char *fmt;
32: {
33: register struct context *x;
34: register struct ww *w;
35:
36: for (x = &cx; x != 0 && x->x_type != X_FILE; x = x->x_link)
37: ;
38: if (x == 0) {
39: if (terse)
40: wwbell();
41: else {
42: wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h);
43: wwputs(" ", cmdwin);
44: }
45: return;
46: }
47: if (x->x_noerr)
48: return;
49: if ((w = x->x_errwin) == 0) {
50: char buf[512];
51:
52: (void) sprintf(buf, "Errors from %s", x->x_filename);
53: if ((w = x->x_errwin = openiwin(ERRLINES, buf)) == 0) {
54: wwputs("Can't open error window. ", cmdwin);
55: x->x_noerr = 1;
56: return;
57: }
58: }
59: if (more(w, 0) == 2) {
60: x->x_noerr = 1;
61: return;
62: }
63: wwprintf(w, "line %d: ", x->x_lineno);
64: wwprintf(w, fmt, a, b, c, d, e, f, g, h);
65: wwputc('\n', w);
66: }
67:
68: err_end()
69: {
70: if (cx.x_type == X_FILE && cx.x_errwin != 0) {
71: if (!cx.x_noerr)
72: waitnl(cx.x_errwin);
73: closeiwin(cx.x_errwin);
74: cx.x_errwin = 0;
75: }
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.