|
|
1.1 root 1: /*
2: * @(#)error.h 1.1 (Berkeley) 10/16/80
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();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.