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