xref: /original-bsd/usr.bin/f77/pass1.vax/error.c (revision 5be0f76f)
1 /*-
2  * Copyright (c) 1980 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.proprietary.c%
6  */
7 
8 #ifndef lint
9 static char sccsid[] = "@(#)error.c	5.2 (Berkeley) 04/12/91";
10 #endif /* not lint */
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 
warn1(s,t)27 warn1(s,t)
28 char *s, *t;
29 {
30 char buff[100];
31 sprintf(buff, s, t);
32 warn(buff);
33 }
34 
35 
warn(s)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 
errstr(s,t)46 errstr(s, t)
47 char *s, *t;
48 {
49 char buff[100];
50 sprintf(buff, s, t);
51 err(buff);
52 }
53 
54 
errnm(fmt,l,s)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 
warnnm(fmt,l,s)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 
erri(s,t)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 
err(s)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 
yyerror(s)112 yyerror(s)
113 char *s;
114 { err(s); }
115 
116 
117 
dclerr(s,v)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 
execerr(s,n)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 
fatal(t)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 
fatalstr(t,s)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 
fatali(t,d)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 
badthing(thing,r,t)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 
badop(r,t)193 badop(r, t)
194 char *r;
195 int t;
196 {
197 badthing("opcode", r, t);
198 }
199 
200 
201 
badtag(r,t)202 badtag(r, t)
203 char *r;
204 int t;
205 {
206 badthing("tag", r, t);
207 }
208 
209 
210 
211 
212 
badstg(r,t)213 badstg(r, t)
214 char *r;
215 int t;
216 {
217 badthing("storage class", r, t);
218 }
219 
220 
221 
222 
badtype(r,t)223 badtype(r, t)
224 char *r;
225 int t;
226 {
227 badthing("type", r, t);
228 }
229 
230 
many(s,c)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 
err66(s)241 err66(s)
242 char *s;
243 {
244 errstr("Fortran 77 feature used: %s", s);
245 }
246 
247 
248 
errext(s)249 errext(s)
250 char *s;
251 {
252 errstr("F77 compiler extension used: %s", s);
253 }
254