put display save area back into formal routine structure
[unix-history] / usr / src / usr.bin / pascal / libpc / ERROR.c
index 2ea1ac4..c6d7cb3 100644 (file)
@@ -1,6 +1,6 @@
 /* Copyright (c) 1979 Regents of the University of California */
 
 /* Copyright (c) 1979 Regents of the University of California */
 
-static char sccsid[] = "@(#)ERROR.c 1.3 %G%";
+static char sccsid[] = "@(#)ERROR.c 1.7 %G%";
 
 #include       <stdio.h>
 #include       <signal.h>
 
 #include       <stdio.h>
 #include       <signal.h>
@@ -14,26 +14,24 @@ static char sccsid[] = "@(#)ERROR.c 1.3 %G%";
  * from errdata by the makefile using the editor script make.ed1.
  */
 long
  * from errdata by the makefile using the editor script make.ed1.
  */
 long
-ERROR(errnum, errordata)
+ERROR(msg, d1, d2, d3, d4)
 
 
-       short   errnum;
-       double  errordata;
+       char    *msg;
+       int     d1, d2, d3, d4;
 {
        union cvt {
 {
        union cvt {
+               int     intdat;
                long    longdat;
                char    *strngdat;
                double  dbldat;
        } errdata;
 
                long    longdat;
                char    *strngdat;
                double  dbldat;
        } errdata;
 
-       errdata.dbldat = errordata;
+       errdata.dbldat = 0.0;
+       errdata.intdat = d1;
        PFLUSH();
        PFLUSH();
-       if (_entry[errnum].entryaddr != 0) {
-               (*_entry[errnum].entryaddr)(errdata);
-               return;
-       }
        fputc('\n',stderr);
        SETRACE();
        fputc('\n',stderr);
        SETRACE();
-       switch (errnum) {
+       switch ((int)msg) {
        case ECHR:
                fprintf(stderr, "Argument to chr of %D is out of range\n"
                        ,errdata.longdat);
        case ECHR:
                fprintf(stderr, "Argument to chr of %D is out of range\n"
                        ,errdata.longdat);
@@ -117,7 +115,7 @@ ERROR(errnum, errordata)
                        errdata.longdat);
                return(errdata.longdat);
        case EFMTSIZE:
                        errdata.longdat);
                return(errdata.longdat);
        case EFMTSIZE:
-               fprintf(stderr,"Negative format width: %D\n",errdata.longdat);
+               fprintf(stderr,"Non-positive format width: %D\n",errdata.longdat);
                return(0);
        case EGOTO:
                fputs("Active frame not found in non-local goto\n", stderr);
                return(0);
        case EGOTO:
                fputs("Active frame not found in non-local goto\n", stderr);
@@ -129,28 +127,6 @@ ERROR(errnum, errordata)
        case EOUTOFMEM:
                fputs("Ran out of memory\n",stderr);
                return(0);
        case EOUTOFMEM:
                fputs("Ran out of memory\n",stderr);
                return(0);
-       case ECTLWR:
-               fprintf(stderr, "Range lower bound of %D out of set bounds\n",
-                       errdata.longdat);
-               return(0);
-       case ECTUPR:
-               fprintf(stderr, "Range upper bound of %D out of set bounds\n",
-                       errdata.longdat);
-               return(0);
-       case ECTSNG:
-               fprintf(stderr, "Value of %D out of set bounds\n",
-                       errdata.longdat);
-               return(0);
-       case ENARGS:
-               if (errdata.longdat < 0)
-                       fprintf(stderr,
-                               "There were %D too few arguments to formal routine\n",
-                               -errdata.longdat);
-               else
-                       fprintf(stderr,
-                               "There were %D too many arguments to formal routine\n",
-                               errdata.longdat);
-               return(0);
        case EARGV:
                fprintf(stderr,"Argument to argv of %D is out of range\n"
                        ,errdata.longdat);
        case EARGV:
                fprintf(stderr,"Argument to argv of %D is out of range\n"
                        ,errdata.longdat);
@@ -179,7 +155,7 @@ ERROR(errnum, errordata)
                        errdata.longdat);
                return(errdata.longdat);
        default:
                        errdata.longdat);
                return(errdata.longdat);
        default:
-               fputs("Panic: unknown error\n",stderr);
+               fprintf(stderr, msg, d1, d2, d3, d4);
                return(0);
        }
 }
                return(0);
        }
 }