|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: * ! 17: * @(#)error.h 5.3 (Berkeley) 6/29/88 ! 18: */ ! 19: ! 20: typedef int boolean; ! 21: #define reg register ! 22: ! 23: #define TRUE 1 ! 24: #define FALSE 0 ! 25: ! 26: #define true 1 ! 27: #define false 0 ! 28: /* ! 29: * Descriptors for the various languages we know about. ! 30: * If you touch these, also touch lang_table ! 31: */ ! 32: #define INUNKNOWN 0 ! 33: #define INCPP 1 ! 34: #define INCC 2 ! 35: #define INAS 3 ! 36: #define INLD 4 ! 37: #define INLINT 5 ! 38: #define INF77 6 ! 39: #define INPI 7 ! 40: #define INPC 8 ! 41: #define INFRANZ 9 ! 42: #define INLISP 10 ! 43: #define INVAXIMA 11 ! 44: #define INRATFOR 12 ! 45: #define INLEX 13 ! 46: #define INYACC 14 ! 47: #define INAPL 15 ! 48: #define INMAKE 16 ! 49: #define INRI 17 ! 50: #define INTROFF 18 ! 51: #define INMOD2 19 ! 52: ! 53: extern int language; ! 54: /* ! 55: * We analyze each line in the error message file, and ! 56: * attempt to categorize it by type, as well as language. ! 57: * Here are the type descriptors. ! 58: */ ! 59: typedef int Errorclass; ! 60: ! 61: #define C_FIRST 0 /* first error category */ ! 62: #define C_UNKNOWN 0 /* must be zero */ ! 63: #define C_IGNORE 1 /* ignore the message; used for pi */ ! 64: #define C_SYNC 2 /* synchronization errors */ ! 65: #define C_DISCARD 3 /* touches dangerous files, so discard */ ! 66: #define C_NONSPEC 4 /* not specific to any file */ ! 67: #define C_THISFILE 5 /* specific to this file, but at no line */ ! 68: #define C_NULLED 6 /* refers to special func; so null */ ! 69: #define C_TRUE 7 /* fits into true error format */ ! 70: #define C_DUPL 8 /* sub class only; duplicated error message */ ! 71: #define C_LAST 9 /* last error category */ ! 72: ! 73: #define SORTABLE(x) (!(NOTSORTABLE(x))) ! 74: #define NOTSORTABLE(x) (x <= C_NONSPEC) ! 75: /* ! 76: * Resources to count and print out the error categories ! 77: */ ! 78: extern char *class_table[]; ! 79: extern int class_count[]; ! 80: ! 81: #define nunknown class_count[C_UNKNOWN] ! 82: #define nignore class_count[C_IGNORE] ! 83: #define nsyncerrors class_count[C_SYNC] ! 84: #define ndiscard class_count[C_DISCARD] ! 85: #define nnonspec class_count[C_NONSPEC] ! 86: #define nthisfile class_count[C_THISFILE] ! 87: #define nnulled class_count[C_NULLED] ! 88: #define ntrue class_count[C_TRUE] ! 89: #define ndupl class_count[C_DUPL] ! 90: ! 91: /* places to put the error complaints */ ! 92: ! 93: #define TOTHEFILE 1 /* touch the file */ ! 94: #define TOSTDOUT 2 /* just print them out (ho-hum) */ ! 95: ! 96: FILE *errorfile; /* where error file comes from */ ! 97: FILE *queryfile; /* where the query responses from the user come from*/ ! 98: ! 99: extern char *currentfilename; ! 100: extern char *processname; ! 101: extern char *scriptname; ! 102: ! 103: extern boolean query; ! 104: extern boolean terse; ! 105: int inquire(); /* inquire for yes/no */ ! 106: /* ! 107: * codes for inquire() to return ! 108: */ ! 109: #define Q_NO 1 /* 'N' */ ! 110: #define Q_no 2 /* 'n' */ ! 111: #define Q_YES 3 /* 'Y' */ ! 112: #define Q_yes 4 /* 'y' */ ! 113: ! 114: int probethisfile(); ! 115: /* ! 116: * codes for probethisfile to return ! 117: */ ! 118: #define F_NOTEXIST 1 ! 119: #define F_NOTREAD 2 ! 120: #define F_NOTWRITE 3 ! 121: #define F_TOUCHIT 4 ! 122: ! 123: /* ! 124: * Describes attributes about a language ! 125: */ ! 126: struct lang_desc{ ! 127: char *lang_name; ! 128: char *lang_incomment; /* one of the following defines */ ! 129: char *lang_outcomment; /* one of the following defines */ ! 130: }; ! 131: extern struct lang_desc lang_table[]; ! 132: ! 133: #define CINCOMMENT "/*###" ! 134: #define COUTCOMMENT "%%%*/\n" ! 135: #define FINCOMMENT "C###" ! 136: #define FOUTCOMMENT "%%%\n" ! 137: #define NEWLINE "%%%\n" ! 138: #define PIINCOMMENT "(*###" ! 139: #define PIOUTCOMMENT "%%%*)\n" ! 140: #define LISPINCOMMENT ";###" ! 141: #define ASINCOMMENT "####" ! 142: #define RIINCOMMENT CINCOMMENT ! 143: #define RIOUTCOMMENT COUTCOMMENT ! 144: #define TROFFINCOMMENT ".\\\"###" ! 145: #define TROFFOUTCOMMENT NEWLINE ! 146: #define MOD2INCOMMENT "(*###" ! 147: #define MOD2OUTCOMMENT "%%%*)\n" ! 148: /* ! 149: * Defines and resources for determing if a given line ! 150: * is to be discarded because it refers to a file not to ! 151: * be touched, or if the function reference is to a ! 152: * function the user doesn't want recorded. ! 153: */ ! 154: #define IG_FILE1 "llib-lc" ! 155: #define IG_FILE2 "llib-port" ! 156: #define IG_FILE3 "/usr/lib/llib-lc" ! 157: #define IG_FILE4 "/usr/lib/llib-port" ! 158: ! 159: #define ERRORNAME "/.errorrc" ! 160: int nignored; ! 161: char **names_ignored; ! 162: /* ! 163: * Structure definition for a full error ! 164: */ ! 165: typedef struct edesc Edesc; ! 166: typedef Edesc *Eptr; ! 167: ! 168: struct edesc{ ! 169: Eptr error_next; /*linked together*/ ! 170: int error_lgtext; /* how many on the right hand side*/ ! 171: char **error_text; /* the right hand side proper*/ ! 172: Errorclass error_e_class; /* error category of this error*/ ! 173: Errorclass error_s_class; /* sub descriptor of error_e_class*/ ! 174: int error_language; /* the language for this error*/ ! 175: int error_position; /* oridinal position */ ! 176: int error_line; /* discovered line number*/ ! 177: int error_no; /* sequence number on input */ ! 178: }; ! 179: /* ! 180: * Resources for the true errors ! 181: */ ! 182: extern int nerrors; ! 183: extern Eptr er_head; ! 184: extern Eptr *errors; ! 185: /* ! 186: * Resources for each of the files mentioned ! 187: */ ! 188: extern int nfiles; ! 189: extern Eptr **files; /* array of pointers into errors*/ ! 190: boolean *touchedfiles; /* which files we touched */ ! 191: /* ! 192: * The langauge the compilation is in, as intuited from ! 193: * the flavor of error messages analyzed. ! 194: */ ! 195: extern int langauge; ! 196: extern char *currentfilename; ! 197: /* ! 198: * Functional forwards ! 199: */ ! 200: char *Calloc(); ! 201: char *strsave(); ! 202: char *clobberfirst(); ! 203: char lastchar(); ! 204: char firstchar(); ! 205: char next_lastchar(); ! 206: char **wordvsplice(); ! 207: int wordvcmp(); ! 208: boolean persperdexplode(); ! 209: /* ! 210: * Printing hacks ! 211: */ ! 212: char *plural(), *verbform();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.