number of arguments!
*/
+#if __STDC__
+#include <stdarg.h>
+#else
#include <varargs.h>
+#endif
#include <system.h>
#include "input.h"
#include "f_info.h"
node, whereas other errors use the information in the token.
*/
+#if __STDC__
+/*VARARGS1*/
+error(char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _error(ERROR, fmt, ap);
+ va_end(ap);
+}
+
+/*VARARGS1*/
+Gerror(char *fmt, ...)
+{
+ va_list ap;
+ char *fn = FileName;
+
+ FileName = 0;
+ va_start(ap, fmt);
+ _error(ERROR, fmt, ap);
+ va_end(ap);
+ FileName = fn;
+}
+
+/*VARARGS1*/
+lexerror(char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _error(LEXERROR, fmt, ap);
+ va_end(ap);
+}
+
+/*VARARGS1*/
+fatal(char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _error(FATAL, fmt, ap);
+ va_end(ap);
+ sys_stop(S_EXIT);
+}
+
+/*VARARGS1*/
+crash(char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _error(CRASH, fmt, ap);
+ va_end(ap);
+#ifdef DEBUG
+ sys_stop(S_ABORT);
+#else
+ sys_stop(S_EXIT);
+#endif
+}
+#else
/*VARARGS1*/
error(va_alist)
va_dcl
{
va_list ap;
+ char *fmt;
va_start(ap);
- _error(ERROR, ap);
+ fmt = va_arg(ap, char *);
+ _error(ERROR, fmt, ap);
va_end(ap);
}
va_dcl
{
va_list ap;
+ char *fmt;
char *fn = FileName;
FileName = 0;
va_start(ap);
- _error(ERROR, ap);
+ fmt = va_arg(ap, char *);
+ _error(ERROR, fmt, ap);
va_end(ap);
FileName = fn;
}
va_dcl
{
va_list ap;
+ char *fmt;
va_start(ap);
- _error(LEXERROR, ap);
+ fmt = va_arg(ap, char *);
+ _error(LEXERROR, fmt, ap);
va_end(ap);
}
va_dcl
{
va_list ap;
+ char *fmt;
va_start(ap);
- _error(FATAL, ap);
+ fmt = va_arg(ap, char *);
+ _error(FATAL, fmt, ap);
va_end(ap);
sys_stop(S_EXIT);
}
va_dcl
{
va_list ap;
+ char *fmt;
va_start(ap);
- _error(CRASH, ap);
+ fmt = va_arg(ap, char *);
+ _error(CRASH, fmt, ap);
va_end(ap);
#ifdef DEBUG
sys_stop(S_ABORT);
sys_stop(S_EXIT);
#endif
}
+#endif
-_error(class, argv)
+_error(class, fmt, argv)
int class;
+ char *fmt;
va_list argv;
{
/* _error attempts to limit the number of error messages
*/
unsigned int ln = 0;
register char *remark = 0;
- char *fmt = va_arg(argv, char *);
/* Since name and number are gathered from different places
depending on the class, we first collect the relevant