summaryrefslogtreecommitdiffstats
path: root/gcc/cpperror.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cpperror.c')
-rw-r--r--gcc/cpperror.c68
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
OpenPOWER on IntegriCloud