|
|
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.