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