Commit | Line | Data |
---|---|---|
dc5f2268 KB |
1 | /*- |
2 | * Copyright (c) 1980 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * %sccs.include.proprietary.c% | |
099b7138 KM |
6 | */ |
7 | ||
8 | #ifndef lint | |
dc5f2268 KB |
9 | static char sccsid[] = "@(#)error.c 5.2 (Berkeley) %G%"; |
10 | #endif /* not lint */ | |
099b7138 KM |
11 | |
12 | /* | |
13 | * error.c | |
14 | * | |
15 | * Error handling routines for f77 compiler pass 1, 4.2 BSD. | |
16 | * | |
17 | * University of Utah CS Dept modification history: | |
18 | * | |
19 | * Revision 1.2 84/08/20 17:57:20 donn | |
20 | * Added strategic colons to the format strings in execerr() and dclerr(). | |
21 | * | |
22 | */ | |
23 | ||
24 | #include "defs.h" | |
25 | ||
26 | ||
27 | warn1(s,t) | |
28 | char *s, *t; | |
29 | { | |
30 | char buff[100]; | |
31 | sprintf(buff, s, t); | |
32 | warn(buff); | |
33 | } | |
34 | ||
35 | ||
36 | warn(s) | |
37 | char *s; | |
38 | { | |
39 | if(nowarnflag) | |
40 | return; | |
41 | fprintf(diagfile, "Warning on line %d of %s: %s\n", lineno, infname, s); | |
42 | ++nwarn; | |
43 | } | |
44 | ||
45 | ||
46 | errstr(s, t) | |
47 | char *s, *t; | |
48 | { | |
49 | char buff[100]; | |
50 | sprintf(buff, s, t); | |
51 | err(buff); | |
52 | } | |
53 | ||
54 | ||
55 | errnm(fmt, l, s) | |
56 | char *fmt; | |
57 | int l; | |
58 | register char *s; | |
59 | { | |
60 | char buff[VL+1]; | |
61 | register int i; | |
62 | ||
63 | i = 0; | |
64 | while (i < l) | |
65 | { | |
66 | buff[i] = s[i]; | |
67 | i++; | |
68 | } | |
69 | buff[i] = '\0'; | |
70 | ||
71 | errstr(fmt, buff); | |
72 | } | |
73 | ||
74 | warnnm(fmt, l, s) | |
75 | char *fmt; | |
76 | int l; | |
77 | register char *s; | |
78 | { | |
79 | char buff[VL+1]; | |
80 | register int i; | |
81 | ||
82 | i = 0; | |
83 | while (i < l) | |
84 | { | |
85 | buff[i] = s[i]; | |
86 | i++; | |
87 | } | |
88 | buff[i] = '\0'; | |
89 | ||
90 | warn1(fmt, buff); | |
91 | } | |
92 | ||
93 | erri(s,t) | |
94 | char *s; | |
95 | int t; | |
96 | { | |
97 | char buff[100]; | |
98 | sprintf(buff, s, t); | |
99 | err(buff); | |
100 | } | |
101 | ||
102 | ||
103 | err(s) | |
104 | char *s; | |
105 | { | |
106 | fprintf(diagfile, "Error on line %d of %s: %s\n", lineno, infname, s); | |
107 | ++nerr; | |
108 | optoff(); | |
109 | } | |
110 | ||
111 | ||
112 | yyerror(s) | |
113 | char *s; | |
114 | { err(s); } | |
115 | ||
116 | ||
117 | ||
118 | dclerr(s, v) | |
119 | char *s; | |
120 | Namep v; | |
121 | { | |
122 | char buff[100]; | |
123 | ||
124 | if(v) | |
125 | { | |
126 | sprintf(buff, "Declaration error for %s: %s", varstr(VL, v->varname), s); | |
127 | err(buff); | |
128 | } | |
129 | else | |
130 | errstr("Declaration error: %s", s); | |
131 | } | |
132 | ||
133 | ||
134 | ||
135 | execerr(s, n) | |
136 | char *s, *n; | |
137 | { | |
138 | char buf1[100], buf2[100]; | |
139 | ||
140 | sprintf(buf1, "Execution error: %s", s); | |
141 | sprintf(buf2, buf1, n); | |
142 | err(buf2); | |
143 | } | |
144 | ||
145 | ||
146 | fatal(t) | |
147 | char *t; | |
148 | { | |
149 | fprintf(diagfile, "Compiler error line %d of %s: %s\n", lineno, infname, t); | |
150 | if (debugflag[8]) | |
151 | showbuffer(); | |
152 | if (debugflag[0]) | |
153 | abort(); | |
154 | done(3); | |
155 | exit(3); | |
156 | } | |
157 | ||
158 | ||
159 | ||
160 | ||
161 | fatalstr(t,s) | |
162 | char *t, *s; | |
163 | { | |
164 | char buff[100]; | |
165 | sprintf(buff, t, s); | |
166 | fatal(buff); | |
167 | } | |
168 | ||
169 | ||
170 | ||
171 | fatali(t,d) | |
172 | char *t; | |
173 | int d; | |
174 | { | |
175 | char buff[100]; | |
176 | sprintf(buff, t, d); | |
177 | fatal(buff); | |
178 | } | |
179 | ||
180 | ||
181 | ||
182 | badthing(thing, r, t) | |
183 | char *thing, *r; | |
184 | int t; | |
185 | { | |
186 | char buff[50]; | |
187 | sprintf(buff, "Impossible %s %d in routine %s", thing, t, r); | |
188 | fatal(buff); | |
189 | } | |
190 | ||
191 | ||
192 | ||
193 | badop(r, t) | |
194 | char *r; | |
195 | int t; | |
196 | { | |
197 | badthing("opcode", r, t); | |
198 | } | |
199 | ||
200 | ||
201 | ||
202 | badtag(r, t) | |
203 | char *r; | |
204 | int t; | |
205 | { | |
206 | badthing("tag", r, t); | |
207 | } | |
208 | ||
209 | ||
210 | ||
211 | ||
212 | ||
213 | badstg(r, t) | |
214 | char *r; | |
215 | int t; | |
216 | { | |
217 | badthing("storage class", r, t); | |
218 | } | |
219 | ||
220 | ||
221 | ||
222 | ||
223 | badtype(r, t) | |
224 | char *r; | |
225 | int t; | |
226 | { | |
227 | badthing("type", r, t); | |
228 | } | |
229 | ||
230 | ||
231 | many(s, c) | |
232 | char *s, c; | |
233 | { | |
234 | char buff[25]; | |
235 | ||
236 | sprintf(buff, "Too many %s. Try the -N%c option", s, c); | |
237 | fatal(buff); | |
238 | } | |
239 | ||
240 | ||
241 | err66(s) | |
242 | char *s; | |
243 | { | |
244 | errstr("Fortran 77 feature used: %s", s); | |
245 | } | |
246 | ||
247 | ||
248 | ||
249 | errext(s) | |
250 | char *s; | |
251 | { | |
252 | errstr("F77 compiler extension used: %s", s); | |
253 | } |