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