date and time created 80/10/16 09:46:29 by root
[unix-history] / usr / src / usr.bin / error / error.h
CommitLineData
c7be6007
BJ
1/*
2 * @(#)error.h 1.1 (Berkeley) %G%
3 */
4typedef 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
31extern 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 */
37typedef 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 */
56extern char *class_table[];
57extern 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
74FILE *errorfile; /* where error file comes from */
75FILE *queryfile; /* where the query responses from the user come from*/
76
77extern char *currentfilename;
78extern char *processname;
79extern char *scriptname;
80
81extern boolean query;
82/*
83 * Describes attributes about a language
84 */
85struct 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};
90extern 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"
115int nignored;
116char **names_ignored;
117/*
118 * Structure definition for a full error
119 */
120struct 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 */
134extern int nerrors;
135extern struct error_desc *er_head;
136extern struct error_desc **errors;
137/*
138 * Resources for each of the files mentioned
139 */
140extern int nfiles;
141extern struct error_desc ***files; /* array of pointers into errors*/
142boolean *touchedfiles; /* which files we touched */
143/*
144 * The langauge the compilation is in, as intuited from
145 * the flavor of error messages analyzed.
146 */
147extern int langauge;
148extern char *currentfilename;
149/*
150 * Functional forwards
151 */
152char *Calloc();
153char *strsave();
154char *clobberfirst();
155char lastchar();
156char firstchar();
157char next_lastchar();
158char **wordvsplice();
159int wordvcmp();
160boolean persperdexplode();