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