install approved copyright notice
[unix-history] / usr / src / usr.bin / window / error.c
CommitLineData
60de5df9 1/*
46e9ea25
KB
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
5e8b0e60
KB
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.
60de5df9
EW
16 */
17
46e9ea25 18#ifndef lint
5e8b0e60 19static char sccsid[] = "@(#)error.c 3.14 (Berkeley) %G%";
46e9ea25
KB
20#endif /* not lint */
21
46285cba 22#include "defs.h"
1c0ca238
EW
23#include "value.h"
24#include "context.h"
0e64e422 25#include "char.h"
46285cba 26
bb94cfe3 27#define ERRLINES 10 /* number of lines for errwin */
46285cba
EW
28
29/*VARARGS1*/
30error(fmt, a, b, c, d, e, f, g, h)
31char *fmt;
32{
bb4a0c0b 33 register struct context *x;
3b06703c
EW
34 register struct ww *w;
35
bb4a0c0b
EW
36 for (x = &cx; x != 0 && x->x_type != X_FILE; x = x->x_link)
37 ;
38 if (x == 0) {
46285cba 39 if (terse)
7ecf4dca 40 wwbell();
46285cba 41 else {
b1189050
EW
42 wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h);
43 wwputs(" ", cmdwin);
46285cba
EW
44 }
45 return;
46 }
bb4a0c0b 47 if (x->x_noerr)
46285cba 48 return;
bb4a0c0b 49 if ((w = x->x_errwin) == 0) {
46285cba
EW
50 char buf[512];
51
bb4a0c0b
EW
52 (void) sprintf(buf, "Errors from %s", x->x_filename);
53 if ((w = x->x_errwin = openiwin(ERRLINES, buf)) == 0) {
b1189050 54 wwputs("Can't open error window. ", cmdwin);
bb4a0c0b 55 x->x_noerr = 1;
46285cba
EW
56 return;
57 }
46285cba 58 }
4a972f7c 59 if (more(w, 0) == 2) {
bb4a0c0b 60 x->x_noerr = 1;
4a972f7c
EW
61 return;
62 }
bb4a0c0b 63 wwprintf(w, "line %d: ", x->x_lineno);
b1189050
EW
64 wwprintf(w, fmt, a, b, c, d, e, f, g, h);
65 wwputc('\n', w);
46285cba
EW
66}
67
1c0ca238 68err_end()
46285cba 69{
bb4a0c0b 70 if (cx.x_type == X_FILE && cx.x_errwin != 0) {
4a972f7c
EW
71 if (!cx.x_noerr)
72 waitnl(cx.x_errwin);
1c0ca238
EW
73 closeiwin(cx.x_errwin);
74 cx.x_errwin = 0;
46285cba 75 }
46285cba 76}