fix ctrl macro for ANSI C
[unix-history] / usr / src / usr.bin / window / error.c
index 040b98b..1db7423 100644 (file)
@@ -1,10 +1,17 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)error.c     3.5 84/01/12";
+static char sccsid[] = "@(#)error.c    3.12 %G%";
 #endif
 
 #endif
 
+/*
+ * Copyright (c) 1983 Regents of the University of California,
+ * All rights reserved.  Redistribution permitted subject to
+ * the terms of the Berkeley Software License Agreement.
+ */
+
 #include "defs.h"
 #include "value.h"
 #include "context.h"
 #include "defs.h"
 #include "value.h"
 #include "context.h"
+#include "char.h"
 
 #define ERRLINES 10                    /* number of lines for errwin */
 
 
 #define ERRLINES 10                    /* number of lines for errwin */
 
@@ -12,39 +19,46 @@ static      char *sccsid = "@(#)error.c     3.5 84/01/12";
 error(fmt, a, b, c, d, e, f, g, h)
 char *fmt;
 {
 error(fmt, a, b, c, d, e, f, g, h)
 char *fmt;
 {
+       register struct context *x;
        register struct ww *w;
 
        register struct ww *w;
 
-       if (cx.x_type != X_FILE) {
+       for (x = &cx; x != 0 && x->x_type != X_FILE; x = x->x_link)
+               ;
+       if (x == 0) {
                if (terse)
                        wwbell();
                else {
                if (terse)
                        wwbell();
                else {
-                       (void) wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h);
-                       (void) wwputs("  ", cmdwin);
+                       wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h);
+                       wwputs("  ", cmdwin);
                }
                return;
        }
                }
                return;
        }
-       if (cx.x_noerrwin)
+       if (x->x_noerr)
                return;
                return;
-       if ((w = cx.x_errwin) == 0) {
+       if ((w = x->x_errwin) == 0) {
                char buf[512];
 
                char buf[512];
 
-               (void) sprintf(buf, "Errors from %s", cx.x_filename);
-               if ((w = cx.x_errwin = openiwin(ERRLINES, buf)) == 0) {
-                       (void) wwputs("Can't open error window.  ", cmdwin);
-                       cx.x_noerrwin = 1;
+               (void) sprintf(buf, "Errors from %s", x->x_filename);
+               if ((w = x->x_errwin = openiwin(ERRLINES, buf)) == 0) {
+                       wwputs("Can't open error window.  ", cmdwin);
+                       x->x_noerr = 1;
                        return;
                }
        }
                        return;
                }
        }
-       more(w);
-       (void) wwprintf(w, "line %d: ", cx.x_lineno);
-       (void) wwprintf(w, fmt, a, b, c, d, e, f, g, h);
-       (void) wwputc('\n', w);
+       if (more(w, 0) == 2) {
+               x->x_noerr = 1;
+               return;
+       }
+       wwprintf(w, "line %d: ", x->x_lineno);
+       wwprintf(w, fmt, a, b, c, d, e, f, g, h);
+       wwputc('\n', w);
 }
 
 err_end()
 {
 }
 
 err_end()
 {
-       if (cx.x_errwin != 0) {
-               waitnl(cx.x_errwin);
+       if (cx.x_type == X_FILE && cx.x_errwin != 0) {
+               if (!cx.x_noerr)
+                       waitnl(cx.x_errwin);
                closeiwin(cx.x_errwin);
                cx.x_errwin = 0;
        }
                closeiwin(cx.x_errwin);
                cx.x_errwin = 0;
        }