|
|
1.1 ! root 1: /* Copyright (c) 1979 Regents of the University of California */ ! 2: ! 3: static char sccsid[] = "@(#)ERROR.c 1.1 10/29/80"; ! 4: ! 5: #include "stdio.h" ! 6: #include "signal.h" ! 7: #include "h01errs.h" ! 8: ! 9: /* ! 10: * Routine ERROR is called from the runtime library when a runtime error ! 11: * occurs. Its arguments are the internal number of the error which occurred, ! 12: * and an error specific piece of error data. The error file is constructed ! 13: * from errdata by the makefile using the editor script make.ed1. ! 14: */ ! 15: ERROR(errnum, errdata) ! 16: ! 17: long errnum; ! 18: union cvt { ! 19: long longdat; ! 20: char *strngdat; ! 21: double dbldat; ! 22: } errdata; ! 23: { ! 24: PFLUSH(); ! 25: fputc('\n',stderr); ! 26: SETRACE(); ! 27: switch (errnum) { ! 28: case ECHR: ! 29: fprintf(stderr, "Argument to chr of %d is out of range\n" ! 30: ,errdata.longdat); ! 31: return(errdata.longdat); ! 32: case EHALT: ! 33: fputs("Call to procedure halt\n",stderr); ! 34: PCEXIT(0); ! 35: case ENILPTR: ! 36: fputs("Pointer value out of legal range\n",stderr); ! 37: return(0); ! 38: case EPASTEOF: ! 39: fprintf(stderr,"%s: Tried to read past end of file\n" ! 40: ,errdata.strngdat); ! 41: return(0); ! 42: case EREADIT: ! 43: fprintf(stderr,"%s: Attempt to read, but open for writing\n" ! 44: ,errdata.strngdat); ! 45: return(0); ! 46: case EWRITEIT: ! 47: fprintf(stderr,"%s: Attempt to write, but open for reading\n" ! 48: ,errdata.strngdat); ! 49: return(0); ! 50: case ECLOSE: ! 51: fprintf(stderr,"%s: Close failed\n",errdata.strngdat); ! 52: return(0); ! 53: case ELLIMIT: ! 54: fprintf(stderr,"%s: Line limit exceeded\n",errdata.strngdat); ! 55: return(0); ! 56: case ESQRT: ! 57: fprintf(stderr,"Negative argument of %E to sqrt\n" ! 58: ,errdata.dbldat); ! 59: return(errdata.dbldat); ! 60: case EREFINAF: ! 61: fprintf(stderr,"%s: ",errdata.strngdat); ! 62: case ENOFILE: ! 63: fputs("Reference to an inactive file\n",stderr); ! 64: return(0); ! 65: case EWRITE: ! 66: fputs("Could not write to ",stderr); ! 67: perror(errdata.strngdat); ! 68: return(0); ! 69: case EOPEN: ! 70: fputs("Could not open ",stderr); ! 71: perror(errdata.strngdat); ! 72: return(0); ! 73: case ECREATE: ! 74: fputs("Could not create ",stderr); ! 75: perror(errdata.strngdat); ! 76: return(0); ! 77: case EREMOVE: ! 78: fputs("Could not remove ",stderr); ! 79: perror(errdata.strngdat); ! 80: return(0); ! 81: case ESEEK: ! 82: fputs("Could not reset ",stderr); ! 83: perror(errdata.strngdat); ! 84: return(0); ! 85: case ENAMESIZE: ! 86: fprintf(stderr,"%s: File name too long\n",errdata.strngdat); ! 87: return(0); ! 88: case ELN: ! 89: fprintf(stderr,"Non-positive argument of %E to ln\n" ! 90: ,errdata.dbldat); ! 91: return(errdata.dbldat); ! 92: case EBADINUM: ! 93: fprintf(stderr,"%s: Bad data found on integer read\n" ! 94: ,errdata.strngdat); ! 95: return(0); ! 96: case EBADFNUM: ! 97: fprintf(stderr,"%s: Bad data found on real read\n" ! 98: ,errdata.strngdat); ! 99: return(0); ! 100: case ENUMNTFD: ! 101: fprintf(stderr, ! 102: "Unknown name \"%s\" found on enumerated type read\n", ! 103: errdata.strngdat); ! 104: return(0); ! 105: case ENAMRNG: ! 106: fprintf(stderr, ! 107: "Enumerated type value of %d is out of range on output\n", ! 108: errdata.longdat); ! 109: return(errdata.longdat); ! 110: case EFMTSIZE: ! 111: fprintf(stderr,"Negative format width: %d\n",errdata.longdat); ! 112: return(0); ! 113: case EGOTO: ! 114: fputs("Active frame not found in non-local goto\n", stderr); ! 115: return(0); ! 116: case ECASE: ! 117: fprintf(stderr,"Label of %d not found in case\n" ! 118: ,errdata.longdat); ! 119: return(errdata.longdat); ! 120: case EOUTOFMEM: ! 121: fputs("Ran out of memory\n",stderr); ! 122: return(0); ! 123: case ECTLWR: ! 124: fprintf(stderr, "Range lower bound of %d out of set bounds\n", ! 125: errdata.longdat); ! 126: return(0); ! 127: case ECTUPR: ! 128: fprintf(stderr, "Range upper bound of %d out of set bounds\n", ! 129: errdata.longdat); ! 130: return(0); ! 131: case ECTSNG: ! 132: fprintf(stderr, "Value of %d out of set bounds\n", ! 133: errdata.longdat); ! 134: return(0); ! 135: case ENARGS: ! 136: if (errdata.longdat < 0) ! 137: fprintf(stderr, ! 138: "There were %d too few arguments to formal routine\n", ! 139: -errdata.longdat); ! 140: else ! 141: fprintf(stderr, ! 142: "There were %d too many arguments to formal routine\n", ! 143: errdata.longdat); ! 144: return(0); ! 145: case EARGV: ! 146: fprintf(stderr,"Argument to argv of %d is out of range\n" ! 147: ,errdata.longdat); ! 148: return(errdata.longdat); ! 149: case EPACK: ! 150: fprintf(stderr,"i = %d: Bad i to pack(a,i,z)\n" ! 151: ,errdata.longdat); ! 152: return(errdata.longdat); ! 153: case EUNPACK: ! 154: fprintf(stderr,"i = %d: Bad i to unpack(z,a,i)\n" ! 155: ,errdata.longdat); ! 156: return(errdata.longdat); ! 157: case ERANGE: ! 158: fprintf(stderr,"Value of %d is out of range\n",errdata.longdat); ! 159: return(errdata.longdat); ! 160: case ESUBSC: ! 161: fprintf(stderr,"Subscript value of %d is out of range\n" ! 162: ,errdata.longdat); ! 163: return(errdata.longdat); ! 164: case EASRT: ! 165: fprintf(stderr,"Assertion failed: %s\n",errdata.strngdat); ! 166: return(0); ! 167: case ESTLIM: ! 168: fprintf(stderr, ! 169: "Statement count limit exceeded, %d statements executed\n", ! 170: errdata.longdat); ! 171: return(errdata.longdat); ! 172: default: ! 173: fputs("Panic: unknown error\n",stderr); ! 174: return(0); ! 175: } ! 176: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.