diff options
Diffstat (limited to 'gcc/cpperror.c')
-rw-r--r-- | gcc/cpperror.c | 68 |
1 files changed, 55 insertions, 13 deletions
diff --git a/gcc/cpperror.c b/gcc/cpperror.c index 94bd3e0b8ac..fdd08195c29 100644 --- a/gcc/cpperror.c +++ b/gcc/cpperror.c @@ -24,13 +24,21 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef EMACS #include "config.h" +#ifdef __STDC__ +#include <stdarg.h> +#else +#include <varargs.h> +#endif #include "system.h" +#include "gansidecl.h" #else #include <stdio.h> #endif /* not EMACS */ #include "cpplib.h" +static void v_cpp_message PROTO ((cpp_reader *, int, const char *, va_list)); + /* Print the file names and line numbers of the #include commands which led to the current file. */ @@ -79,7 +87,7 @@ cpp_print_containing_files (pfile) void cpp_file_line_for_message (pfile, filename, line, column) - cpp_reader *pfile; + cpp_reader *pfile ATTRIBUTE_UNUSED; char *filename; int line, column; { @@ -92,11 +100,11 @@ cpp_file_line_for_message (pfile, filename, line, column) /* IS_ERROR is 2 for "fatal" error, 1 for error, 0 for warning */ void -cpp_message (pfile, is_error, msg, arg1, arg2, arg3) - int is_error; - cpp_reader *pfile; - char *msg; - char *arg1, *arg2, *arg3; +v_cpp_message (pfile, is_error, msg, ap) + cpp_reader * pfile; + int is_error; + const char *msg; + va_list ap; { if (!is_error) fprintf (stderr, "warning: "); @@ -104,10 +112,32 @@ cpp_message (pfile, is_error, msg, arg1, arg2, arg3) pfile->errors = CPP_FATAL_LIMIT; else if (pfile->errors < CPP_FATAL_LIMIT) pfile->errors++; - fprintf (stderr, msg, arg1, arg2, arg3); + vfprintf (stderr, msg, ap); fprintf (stderr, "\n"); } +void +cpp_message VPROTO ((cpp_reader *pfile, int is_error, const char *msg, ...)) +{ +#ifndef __STDC__ + cpp_reader *pfile; + int is_error; + const char *msg; +#endif + va_list ap; + + VA_START (ap, msg); + +#ifndef __STDC__ + pfile = va_arg (ap, cpp_reader *); + is_error = va_arg (ap, int); + msg = va_arg (ap, const char *); +#endif + + v_cpp_message(pfile, is_error, msg, ap); + va_end(ap); +} + /* Same as cpp_error, except we consider the error to be "fatal", such as inconsistent options. I.e. there is little point in continuing. (We do not exit, to support use of cpplib as a library. @@ -115,18 +145,30 @@ cpp_message (pfile, is_error, msg, arg1, arg2, arg3) CPP_FATAL_ERRORS. */ void -cpp_fatal (pfile, str, arg) - cpp_reader *pfile; - char *str, *arg; -{ +cpp_fatal VPROTO ((cpp_reader *pfile, const char *str, ...)) +{ +#ifndef __STDC__ + cpp_reader *pfile; + const char *str; +#endif + va_list ap; + + VA_START (ap, str); + +#ifndef __STDC__ + pfile = va_arg (ap, cpp_reader *); + str = va_arg (ap, const char *); +#endif + fprintf (stderr, "%s: ", progname); - cpp_message (pfile, 2, str, arg); + v_cpp_message (pfile, 2, str, ap); + va_end(ap); } void cpp_pfatal_with_name (pfile, name) cpp_reader *pfile; - char *name; + const char *name; { cpp_perror_with_name (pfile, name); #ifdef VMS |