|
|
1.1 root 1: #include "stdio.h"
2: #include "signal.h"
3: #include "h00vars.h"
4: #include "h01errs.h"
5:
6: /*
7: * Routine error is called from the interpreter when a runtime error occurs.
8: * Its argument is the internal number of the error which occurred.
9: * See Edata, Emake etc.
10: */
11: error(errnum)
12: long errnum;
13: {
14: register long i;
15: extern long errno;
16:
17: signal(SIGINT,SIG_IGN);
18: signal(SIGSEGV,SIG_DFL);
19: signal(SIGFPE,SIG_DFL);
20: i = errno;
21: pflush();
22: errno = i;
23: fputs("\n\n",stderr);
24: switch (errnum) {
25: case EINTR:
26: break;
27: case ECHR:
28: fputs("Argument to chr out of range\n",stderr);
29: break;
30: case EASSIGN:
31: fputs("Overflow during assignment conversion\n",stderr);
32: break;
33: case EFIXADD:
34: fputs("Overflow in fixed point addition\n",stderr);
35: break;
36: case EFLTADD:
37: fputs("Floating point addition out of range\n",stderr);
38: break;
39: case EFIXSUB:
40: fputs("Overflow in fixed point subtraction\n",stderr);
41: break;
42: case EFLTSUB:
43: fputs("Floating point subtraction out of range\n",stderr);
44: break;
45: case EFIXMUL:
46: fputs("Overflow in fixed point multiplication\n",stderr);
47: break;
48: case EFLTMUL:
49: fputs("Floating point multiplication out of range\n",stderr);
50: break;
51: case EFIXDIV:
52: fputs("Fixed point division by zero\n",stderr);
53: break;
54: case EFLTDIV:
55: fputs("Floating point division error\n",stderr);
56: break;
57: case EMODDIV:
58: fputs("Fixed point modulo by zero\n",stderr);
59: break;
60: case EFIXNEG:
61: fputs("Overflow in fixed point negation\n",stderr);
62: break;
63: case ESYSTEM:
64: fputs("Panic: Computational error in interpreter\n",stderr);
65: break;
66: case EBUILTIN:
67: fputs("Overflow in builtin function\n",stderr);
68: break;
69: case EHALT:
70: /*
71: nodump = 0;
72: */
73: fputs("Call to procedure halt\n",stderr);
74: break;
75: case ENILPTR:
76: fputs("Reference through a nil pointer\n",stderr);
77: break;
78: case EPASTEOF:
79: fprintf(stderr,"%s: Tried to read past end of file\n",file);
80: break;
81: case EREADIT:
82: fprintf(stderr,"%s: Attempt to read, but open for writing\n",file);
83: break;
84: case EWRITEIT:
85: fprintf(stderr,"%s: Attempt to write, but open for reading\n",file);
86: break;
87: case ECLOSE:
88: fprintf(stderr,"%s: Close failed\n",file);
89: break;
90: case ELLIMIT:
91: fprintf(stderr,"%s: Line limit exceeded\n",file);
92: break;
93: case ESQRT:
94: fputs("Negative argument to sqrt\n",stderr);
95: break;
96: case ESTKNEMP:
97: fputs("Panic: stack not empty between statements\n",stderr);
98: break;
99: case ESUBSCR:
100: fputs("Subscript out of range\n",stderr);
101: break;
102: case EREFINAF:
103: fputs("Reference to an inactive file\n",stderr);
104: break;
105: case EWRITE:
106: fputs("Could not write to ",stderr);
107: perror(file);
108: break;
109: case EOPEN:
110: fputs("Could not open ",stderr);
111: perror(file);
112: break;
113: case ECREATE:
114: fputs("Could not create ",stderr);
115: perror(file);
116: break;
117: case EREMOVE:
118: fputs("Could not remove ",stderr);
119: perror(file);
120: break;
121: case ESEEK:
122: fputs("Could not reset ",stderr);
123: perror(file);
124: break;
125: case ENAMESIZE:
126: fputs("File name too long\n",stderr);
127: break;
128: case ELN:
129: fputs("Non-positive argument to ln\n",stderr);
130: break;
131: case EBADOP:
132: fputs("Panic: bad op code\n",stderr);
133: break;
134: case EBADINUM:
135: fputs("Bad data found on integer read\n",stderr);
136: break;
137: case EBADFNUM:
138: fputs("Bad data found on real read\n",stderr);
139: break;
140: case EGOTO:
141: fputs("Panic: active frame not found in goto\n",stderr);
142: break;
143: case ECASE:
144: fputs("Label not found in case\n",stderr);
145: break;
146: case EOUTOFMEM:
147: fputs("Ran out of memory\n",stderr);
148: break;
149: case ETRASHHEAP:
150: fputs("Attempt to dispose of previously deallocated memory\n",stderr);
151: break;
152: case ECTTOT:
153: fputs("Constructed set argument exceeds set bounds\n",stderr);
154: break;
155: case EARGV:
156: fputs("Argument to argv out of range\n",stderr);
157: break;
158: case EPACK:
159: fputs("Bad i to pack(a,i,z)\n",stderr);
160: break;
161: case EUNPACK:
162: fputs("Bad i to unpack(z,a,i)\n",stderr);
163: break;
164: case ERANGE:
165: fputs("Value out of range\n",stderr);
166: break;
167: case EASRT:
168: fputs("Assertion failed\n",stderr);
169: break;
170: case ESTLIM:
171: fputs("Statement count limit exceeded\n",stderr);
172: break;
173: case ESTKOVFLO:
174: fputs("Runtime stack overflow\n",stderr);
175: break;
176: case EFRAMESIZE:
177: fputs("Compiler restricts declarations to 32768 bytes per block\n",stderr);
178: break;
179: default:
180: fputs("Panic: unknown error\n",stderr);
181: }
182: if (nodump == 0)
183: backtrace(errnum);
184: psexit(errnum);
185: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.