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