use stdarg when compiling with ANSI C compiler
authorceriel <none@none>
Thu, 17 Aug 1995 16:51:09 +0000 (16:51 +0000)
committerceriel <none@none>
Thu, 17 Aug 1995 16:51:09 +0000 (16:51 +0000)
lang/cem/cemcom.ansi/error.c

index bb849fb..4b92b32 100644 (file)
@@ -6,7 +6,11 @@
 /*     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        */
 
 #include       "lint.h"
+#if __STDC__
+#include       <stdarg.h>
+#else
 #include       <varargs.h>
+#endif
 #include       <system.h>
 #ifndef        LINT
 #include       <em.h>
@@ -60,6 +64,218 @@ extern char loptions[];
 
 static _error();
 
+#if __STDC__
+/*VARARGS*/
+error(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(ERROR, dot.tk_file, dot.tk_line, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+expr_error(struct expr *expr, char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               if (!(expr->ex_flags & EX_ERROR)) {
+                       /* to prevent proliferation */
+                       _error(ERROR, expr->ex_file, expr->ex_line, fmt, ap);
+                       expr->ex_flags |= EX_ERROR;
+               }
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+lexstrict(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(STRICT, FileName, LineNumber, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+strict(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(STRICT, dot.tk_file, dot.tk_line, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+expr_strict(struct expr *expr, char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               if (!(expr->ex_flags & EX_ERROR)) {
+                       /* to prevent proliferation */
+                       _error(STRICT, expr->ex_file, expr->ex_line, fmt, ap);
+               }
+       }
+       va_end(ap);
+}
+
+#ifdef DEBUG
+/*VARARGS*/
+debug(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(DO_DEBUG, dot.tk_file, dot.tk_line, fmt, ap);
+       }
+       va_end(ap);
+}
+#endif /* DEBUG */
+
+/*VARARGS*/
+warning(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(WARNING, dot.tk_file, dot.tk_line, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+expr_warning(struct expr *expr, char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               if (!(expr->ex_flags & EX_ERROR)) {
+                       /* to prevent proliferation */
+                       _error(WARNING, expr->ex_file, expr->ex_line, fmt, ap);
+               }
+       }
+       va_end(ap);
+}
+
+#ifdef LINT
+
+/*VARARGS*/
+def_warning(struct def *def, char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(WARNING, def->df_file, def->df_line, fmt, ap);
+       }
+       va_end(ap);
+}
+
+
+/*VARARGS*/
+hwarning(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               if (loptions['h'])
+                       _error(WARNING, dot.tk_file, dot.tk_line, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+awarning(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               if (loptions['a'])
+                       _error(WARNING, dot.tk_file, dot.tk_line, fmt, ap);
+       }
+       va_end(ap);
+}
+
+#endif /* LINT */
+
+/*VARARGS*/
+lexerror(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(ERROR, FileName, LineNumber, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+lexwarning(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(WARNING, FileName, LineNumber, fmt, ap);
+       }
+       va_end(ap);
+}
+
+/*VARARGS*/
+crash(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(CRASH, FileName, LineNumber, fmt, ap);
+       }
+       va_end(ap);
+
+       C_close();
+#ifdef DEBUG
+       sys_stop(S_ABORT);
+#else  /* DEBUG */
+       sys_stop(S_EXIT);
+#endif /* DEBUG */
+       /* NOTREACHED */
+}
+
+/*VARARGS*/
+fatal(char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       {
+               _error(FATAL, FileName, LineNumber, fmt, ap);
+       }
+       va_end(ap);
+
+       if (C_busy()) C_close();
+       sys_stop(S_EXIT);
+       /*NOTREACHED*/
+}
+#else
 /*VARARGS*/
 error(va_alist)                                /* fmt, args */
        va_dcl
@@ -68,7 +284,8 @@ error(va_alist)                              /* fmt, args */
 
        va_start(ap);
        {
-               _error(ERROR, dot.tk_file, dot.tk_line, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(ERROR, dot.tk_file, dot.tk_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -82,10 +299,11 @@ expr_error(va_alist)                       /* expr, fmt, args */
        va_start(ap);
        {
                register struct expr *expr = va_arg(ap, struct expr *);
+               char *fmt = va_arg(ap, char *);
 
                if (!(expr->ex_flags & EX_ERROR)) {
                        /* to prevent proliferation */
-                       _error(ERROR, expr->ex_file, expr->ex_line, ap);
+                       _error(ERROR, expr->ex_file, expr->ex_line, fmt, ap);
                        expr->ex_flags |= EX_ERROR;
                }
        }
@@ -100,7 +318,8 @@ lexstrict(va_alist)
 
        va_start(ap);
        {
-               _error(STRICT, FileName, LineNumber, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(STRICT, FileName, LineNumber, fmt, ap);
        }
        va_end(ap);
 }
@@ -113,7 +332,8 @@ strict(va_alist)
 
        va_start(ap);
        {
-               _error(STRICT, dot.tk_file, dot.tk_line, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(STRICT, dot.tk_file, dot.tk_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -127,10 +347,11 @@ expr_strict(va_alist)                     /* expr, fmt, args */
        va_start(ap);
        {
                struct expr *expr = va_arg(ap, struct expr *);
+               char *fmt = va_arg(ap, char *);
 
                if (!(expr->ex_flags & EX_ERROR)) {
                        /* to prevent proliferation */
-                       _error(STRICT, expr->ex_file, expr->ex_line, ap);
+                       _error(STRICT, expr->ex_file, expr->ex_line, fmt, ap);
                }
        }
        va_end(ap);
@@ -145,9 +366,8 @@ debug(va_alist)
 
        va_start(ap);
        {
-               _error(DO_DEBUG, dot.tk_file, dot.tk_line, ap);
-               /* _error(DO_DEBUG, NILEXPR, ap);
-               */
+               char *fmt = va_arg(ap, char *);
+               _error(DO_DEBUG, dot.tk_file, dot.tk_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -161,9 +381,8 @@ warning(va_alist)
 
        va_start(ap);
        {
-               _error(WARNING, dot.tk_file, dot.tk_line, ap);
-               /* _error(WARNING, NILEXPR, ap);
-               */
+               char *fmt = va_arg(ap, char *);
+               _error(WARNING, dot.tk_file, dot.tk_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -177,10 +396,11 @@ expr_warning(va_alist)                    /* expr, fmt, args */
        va_start(ap);
        {
                struct expr *expr = va_arg(ap, struct expr *);
+               char *fmt = va_arg(ap, char *);
 
                if (!(expr->ex_flags & EX_ERROR)) {
                        /* to prevent proliferation */
-                       _error(WARNING, expr->ex_file, expr->ex_line, ap);
+                       _error(WARNING, expr->ex_file, expr->ex_line, fmt, ap);
                }
        }
        va_end(ap);
@@ -197,8 +417,9 @@ def_warning(va_alist)                       /* def, fmt, args */
        va_start(ap);
        {
                register struct def *def = va_arg(ap, struct def *);
+               char *fmt = va_arg(ap, char *);
 
-               _error(WARNING, def->df_file, def->df_line, ap);
+               _error(WARNING, def->df_file, def->df_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -212,8 +433,9 @@ hwarning(va_alist)                  /* fmt, args */
 
        va_start(ap);
        {
+               char *fmt = va_arg(ap, char *);
                if (loptions['h'])
-                       _error(WARNING, dot.tk_file, dot.tk_line, ap);
+                       _error(WARNING, dot.tk_file, dot.tk_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -226,8 +448,9 @@ awarning(va_alist)                  /* fmt, args */
 
        va_start(ap);
        {
+               char *fmt = va_arg(ap, char *);
                if (loptions['a'])
-                       _error(WARNING, dot.tk_file, dot.tk_line, ap);
+                       _error(WARNING, dot.tk_file, dot.tk_line, fmt, ap);
        }
        va_end(ap);
 }
@@ -242,7 +465,8 @@ lexerror(va_alist)                  /* fmt, args */
 
        va_start(ap);
        {
-               _error(ERROR, FileName, LineNumber, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(ERROR, FileName, LineNumber, fmt, ap);
        }
        va_end(ap);
 }
@@ -255,7 +479,8 @@ lexwarning(va_alist)                        /* fmt, args */
 
        va_start(ap);
        {
-               _error(WARNING, FileName, LineNumber, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(WARNING, FileName, LineNumber, fmt, ap);
        }
        va_end(ap);
 }
@@ -268,7 +493,8 @@ crash(va_alist)                             /* fmt, args */
 
        va_start(ap);
        {
-               _error(CRASH, FileName, LineNumber, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(CRASH, FileName, LineNumber, fmt, ap);
        }
        va_end(ap);
 
@@ -289,7 +515,8 @@ fatal(va_alist)                             /* fmt, args */
 
        va_start(ap);
        {
-               _error(FATAL, FileName, LineNumber, ap);
+               char *fmt = va_arg(ap, char *);
+               _error(FATAL, FileName, LineNumber, fmt, ap);
        }
        va_end(ap);
 
@@ -297,16 +524,17 @@ fatal(va_alist)                           /* fmt, args */
        sys_stop(S_EXIT);
        /*NOTREACHED*/
 }
+#endif
 
 static
-_error(class, fn, ln, ap)
+_error(class, fn, ln, fmt, ap)
        int class;
        char *fn;
        unsigned int ln;
+       char *fmt;
        va_list ap;
 {
        char *remark;
-       char *fmt = va_arg(ap, char *);
        
        /* check visibility of message */
        switch (class)  {