Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / cpp.ansi / error.c
1 /*
2  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  */
5 /* $Id: error.c,v 1.5 1995/08/17 16:43:36 ceriel Exp $ */
6 /*      E R R O R   A N D  D I A G N O S T I C   R O U T I N E S        */
7
8 #include        <system.h>
9 #if __STDC__
10 #include        <stdarg.h>
11 #else
12 #include        <varargs.h>
13 #endif
14
15 #include        "arith.h"
16 #include        "errout.h"
17 #include        "LLlex.h"
18
19 /*      This file contains the (non-portable) error-message and diagnostic
20         functions.  Beware, they are called with a variable number of
21         arguments!
22 */
23
24 int err_occurred;
25
26 err_hdr(s)
27         char *s;
28 {
29         if (FileName) {
30                 fprint(ERROUT, "\"%s\", line %d: %s", FileName, (int)LineNumber, s);
31         }
32         else    fprint(ERROUT, s);
33 }
34
35 #if __STDC__
36 /*VARARGS*/
37 error(char *fmt, ...)
38 {
39         va_list ap;
40
41         err_occurred = 1;
42         err_hdr("");
43         va_start(ap, fmt);
44         doprnt(ERROUT, fmt, ap);
45         fprint(ERROUT, "\n");
46         va_end(ap);
47 }
48
49 /*VARARGS*/
50 warning(char *fmt, ...)
51 {
52         va_list ap;
53
54         err_hdr("(warning) ");
55         va_start(ap, fmt);
56         doprnt(ERROUT, fmt, ap);
57         fprint(ERROUT, "\n");
58         va_end(ap);
59 }
60
61 /*VARARGS*/
62 strict(char *fmt, ...)
63 {
64         va_list ap;
65
66         err_hdr("(strict) ");
67         va_start(ap, fmt);
68         doprnt(ERROUT, fmt, ap);
69         fprint(ERROUT, "\n");
70         va_end(ap);
71 }
72
73 /*VARARGS*/
74 crash(char *fmt, ...)
75 {
76         va_list ap;
77
78         err_hdr("CRASH\007 ");
79         va_start(ap, fmt);
80         doprnt(ERROUT, fmt, ap);
81         fprint(ERROUT, "\n");
82         va_end(ap);
83         sys_stop(S_ABORT);
84 }
85
86 /*VARARGS*/
87 fatal(char *fmt, ...)
88 {
89         va_list ap;
90
91         err_hdr("fatal error -- ");
92         va_start(ap, fmt);
93         doprnt(ERROUT, fmt, ap);
94         fprint(ERROUT, "\n");
95         va_end(ap);
96         sys_stop(S_EXIT);
97 }
98 #else
99 /*VARARGS*/
100 error(va_alist)
101         va_dcl
102 {
103         char *fmt;
104         va_list ap;
105
106         err_occurred = 1;
107         err_hdr("");
108         va_start(ap);
109         fmt = va_arg(ap, char *);
110         doprnt(ERROUT, fmt, ap);
111         fprint(ERROUT, "\n");
112         va_end(ap);
113 }
114
115 /*VARARGS*/
116 warning(va_alist)
117         va_dcl
118 {
119         char *fmt;
120         va_list ap;
121
122         err_hdr("(warning) ");
123         va_start(ap);
124         fmt = va_arg(ap, char *);
125         doprnt(ERROUT, fmt, ap);
126         fprint(ERROUT, "\n");
127         va_end(ap);
128 }
129
130 /*VARARGS*/
131 strict(va_alist)
132         va_dcl
133 {
134         char *fmt;
135         va_list ap;
136
137         err_hdr("(strict) ");
138         va_start(ap);
139         fmt = va_arg(ap, char *);
140         doprnt(ERROUT, fmt, ap);
141         fprint(ERROUT, "\n");
142         va_end(ap);
143 }
144
145 /*VARARGS*/
146 crash(va_alist)
147         va_dcl
148 {
149         char *fmt;
150         va_list ap;
151
152         err_hdr("CRASH\007 ");
153         va_start(ap);
154         fmt = va_arg(ap, char *);
155         doprnt(ERROUT, fmt, ap);
156         fprint(ERROUT, "\n");
157         va_end(ap);
158         sys_stop(S_ABORT);
159 }
160
161 /*VARARGS*/
162 fatal(va_alist)
163         va_dcl
164 {
165         char *fmt;
166         va_list ap;
167
168         err_hdr("fatal error -- ");
169         va_start(ap);
170         fmt = va_arg(ap, char *);
171         doprnt(ERROUT, fmt, ap);
172         fprint(ERROUT, "\n");
173         va_end(ap);
174         sys_stop(S_EXIT);
175 }
176 #endif