make runtime error messages emacs-compatible
authorceriel <none@none>
Mon, 13 Feb 1989 18:28:17 +0000 (18:28 +0000)
committerceriel <none@none>
Mon, 13 Feb 1989 18:28:17 +0000 (18:28 +0000)
lang/m2/libm2/Traps.mod
lang/m2/libm2/catch.c

index 35ea1ba..fb93b4b 100644 (file)
@@ -28,7 +28,7 @@ IMPLEMENTATION MODULE Traps;
   (* Write message "str" on standard error, preceeded by filename and
      linenumber if possible
   *)
-  VAR  p, q: POINTER TO CHAR;
+  VAR  p: POINTER TO CHAR;
        l: CARDINAL;
        lino: INTEGER;
        buf, buf2: ARRAY [0..255] OF CHAR;
@@ -36,11 +36,16 @@ IMPLEMENTATION MODULE Traps;
   BEGIN
        p := EM.FILN();
        IF p # NIL THEN
-               q := p;
+               i := 1;
+               buf[0] := '"';
                WHILE p^ # 0C DO
+                       buf[i] := p^;
+                       INC(i);
                        p := ADDRESS(p) + 1;
                END;
-               IF Unix.write(2, q, ADDRESS(p) - ADDRESS(q)) < 0 THEN END;
+               buf[i] := '"';
+               INC(i);
+               IF Unix.write(2, ADR(buf), i) < 0 THEN END;
        ELSE
                l := Argv(0, buf);
                IF Unix.write(2, ADR(buf), l-1) < 0 THEN END;
@@ -48,12 +53,13 @@ IMPLEMENTATION MODULE Traps;
        lino := EM.LINO();
        i := 0;
        IF lino # 0 THEN
-               i := 2;
-               buf[0] := ',';
-               buf[1] := ' ';
+               i := 7;
+               buf[0] := ','; buf[1] := ' ';
+               buf[2] := 'l'; buf[3] := 'i'; buf[4] := 'n'; buf[5] := 'e';
+               buf[6] := ' ';
                IF lino < 0 THEN
-                       buf[2] := '-';
-                       i := 3;
+                       buf[7] := '-';
+                       i := 8;
                        lino := - lino;
                END;
                j := 0;
index 15a6b75..3d3529f 100644 (file)
@@ -45,7 +45,7 @@ static struct errm {
        { M2_TOOMANY,   "too many nested traps + handlers"},
        { M2_NORESULT,  "no RETURN from procedure function"},
        { M2_UOVFL,     "cardinal overflow"},
-       { M2_FORCH,     "Warning: FOR-loop control variable was changed in the body"},
+       { M2_FORCH,     "(warning) FOR-loop control variable was changed in the body"},
        { M2_UUVFL,     "cardinal underflow"},
        { M2_INTERNAL,  "internal error; ask an expert for help"},
        { M2_UNIXSIG,   "got a unix signal"},