use stdarg when compiling with ANSI C compiler
This commit is contained in:
@@ -8,7 +8,11 @@
|
||||
#include "debug.h"
|
||||
#include "errout.h"
|
||||
|
||||
#if __STDC__
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
#include <em_arith.h>
|
||||
#include <em_label.h>
|
||||
#include <em_code.h>
|
||||
@@ -46,6 +50,123 @@ extern char *symbol2str();
|
||||
node, whereas other errors use the information in the token.
|
||||
*/
|
||||
|
||||
#if __STDC__
|
||||
#ifdef DEBUG
|
||||
/*VARARGS*/
|
||||
debug(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(VDEBUG, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*VARARGS*/
|
||||
error(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(ERROR, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
node_error(struct node *node, char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(ERROR, node, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
warning(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(WARNING, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
node_warning(struct node *node, char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(WARNING, node, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
lexerror(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(LEXERROR, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
lexwarning(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(LEXWARNING, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
fatal(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(FATAL, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
sys_stop(S_EXIT);
|
||||
}
|
||||
|
||||
/*VARARGS*/
|
||||
crash(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
{
|
||||
_error(CRASH, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
#ifdef DEBUG
|
||||
sys_stop(S_ABORT);
|
||||
#else
|
||||
sys_stop(S_EXIT);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
#ifdef DEBUG
|
||||
/*VARARGS*/
|
||||
debug(va_alist)
|
||||
@@ -55,7 +176,8 @@ debug(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(VDEBUG, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(VDEBUG, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -69,7 +191,8 @@ error(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(ERROR, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(ERROR, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -83,7 +206,8 @@ node_error(va_alist)
|
||||
va_start(ap);
|
||||
{
|
||||
struct node *node = va_arg(ap, struct node *);
|
||||
_error(ERROR, node, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(ERROR, node, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -96,7 +220,8 @@ warning(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(WARNING, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(WARNING, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -109,8 +234,9 @@ node_warning(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
char *fmt = va_arg(ap, char *);
|
||||
struct node *node = va_arg(ap, struct node *);
|
||||
_error(WARNING, node, ap);
|
||||
_error(WARNING, node, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -123,7 +249,8 @@ lexerror(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(LEXERROR, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(LEXERROR, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -136,7 +263,8 @@ lexwarning(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(LEXWARNING, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(LEXWARNING, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@@ -149,7 +277,8 @@ fatal(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(FATAL, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(FATAL, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
sys_stop(S_EXIT);
|
||||
@@ -163,7 +292,8 @@ crash(va_alist)
|
||||
|
||||
va_start(ap);
|
||||
{
|
||||
_error(CRASH, NULLNODE, ap);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
_error(CRASH, NULLNODE, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
#ifdef DEBUG
|
||||
@@ -172,10 +302,12 @@ crash(va_alist)
|
||||
sys_stop(S_EXIT);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
_error(class, node, ap)
|
||||
_error(class, node, fmt, ap)
|
||||
int class;
|
||||
struct node *node;
|
||||
char *fmt;
|
||||
register va_list ap;
|
||||
{
|
||||
/* _error attempts to limit the number of error messages
|
||||
@@ -186,7 +318,6 @@ _error(class, node, ap)
|
||||
static char * last_fn = 0;
|
||||
static int e_seen = 0, w_seen = 0;
|
||||
register char *remark = 0;
|
||||
char *fmt;
|
||||
|
||||
/* Since name and number are gathered from different places
|
||||
depending on the class, we first collect the relevant
|
||||
@@ -240,7 +371,6 @@ _error(class, node, ap)
|
||||
break;
|
||||
}
|
||||
|
||||
fmt = va_arg(ap, char *);
|
||||
#ifdef DEBUG
|
||||
if( class != VDEBUG ) {
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user