projects
/
bison.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tests: portability fixes.
[bison.git]
/
src
/
complain.c
diff --git
a/src/complain.c
b/src/complain.c
index 63dfc935143830a3a1874941c48c3a5a1990a2b6..dee3c3bbfed0ef52facee10c4ee36a77609b6731 100644
(file)
--- a/
src/complain.c
+++ b/
src/complain.c
@@
-1,7
+1,7
@@
/* Declaration for error-reporting function for Bison.
/* Declaration for error-reporting function for Bison.
- Copyright (C) 2000
, 2001, 2002, 2004, 2005, 2006, 2009
- F
ree Software F
oundation, Inc.
+ Copyright (C) 2000
-2002, 2004-2006, 2009-2012 Free Software
+ Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-23,6
+23,7
@@
#include "system.h"
#include <stdarg.h>
#include "system.h"
#include <stdarg.h>
+#include <progname.h>
#include "complain.h"
#include "files.h"
#include "complain.h"
#include "files.h"
@@
-38,7
+39,10
@@
static unsigned *indent_ptr = 0;
* \param loc the location, defaulting to the current file,
* or the program name.
* \param prefix put before the message (e.g., "warning").
* \param loc the location, defaulting to the current file,
* or the program name.
* \param prefix put before the message (e.g., "warning").
- * \param message the error message, a printf format string.
+ * \param message the error message, a printf format string. Iff it
+ * ends with ": ", then no trailing newline is printed,
+ * and the caller should print the remaining
+ * newline-terminated message to stderr.
* \param args the arguments of the format string.
*/
static
* \param args the arguments of the format string.
*/
static
@@
-68,8
+72,13
@@
error_message (location *loc,
fprintf (stderr, "%s: ", prefix);
vfprintf (stderr, message, args);
fprintf (stderr, "%s: ", prefix);
vfprintf (stderr, message, args);
- putc ('\n', stderr);
- fflush (stderr);
+ {
+ size_t l = strlen (message);
+ if (l < 2 || message[l-2] != ':' || message[l-1] != ' ') {
+ putc ('\n', stderr);
+ fflush (stderr);
+ }
+ }
}
/** Wrap error_message() with varargs handling. */
}
/** Wrap error_message() with varargs handling. */
@@
-86,7
+95,7
@@
error_message (location *loc,
| Report a warning, and proceed. |
`--------------------------------*/
| Report a warning, and proceed. |
`--------------------------------*/
-
static
void
+void
set_warning_issued (void)
{
static bool warning_issued = false;
set_warning_issued (void)
{
static bool warning_issued = false;
@@
-101,6
+110,8
@@
set_warning_issued (void)
void
warn_at (location loc, const char *message, ...)
{
void
warn_at (location loc, const char *message, ...)
{
+ if (!(warnings_flag & warnings_other))
+ return;
set_warning_issued ();
ERROR_MESSAGE (&loc, _("warning"), message);
}
set_warning_issued ();
ERROR_MESSAGE (&loc, _("warning"), message);
}
@@
-109,6
+120,8
@@
void
warn_at_indent (location loc, unsigned *indent,
const char *message, ...)
{
warn_at_indent (location loc, unsigned *indent,
const char *message, ...)
{
+ if (!(warnings_flag & warnings_other))
+ return;
set_warning_issued ();
indent_ptr = indent;
ERROR_MESSAGE (&loc, _("warning"), message);
set_warning_issued ();
indent_ptr = indent;
ERROR_MESSAGE (&loc, _("warning"), message);
@@
-117,6
+130,8
@@
warn_at_indent (location loc, unsigned *indent,
void
warn (const char *message, ...)
{
void
warn (const char *message, ...)
{
+ if (!(warnings_flag & warnings_other))
+ return;
set_warning_issued ();
ERROR_MESSAGE (NULL, _("warning"), message);
}
set_warning_issued ();
ERROR_MESSAGE (NULL, _("warning"), message);
}
@@
-170,6
+185,14
@@
yacc_at (location loc, const char *message, ...)
}
}
}
}
+void
+midrule_value_at (location loc, const char *message, ...)
+{
+ if (!(warnings_flag & warnings_midrule_values))
+ return;
+ set_warning_issued ();
+ ERROR_MESSAGE (&loc, _("warning"), message);
+}
/*-------------------------------------------------.
| A severe error has occurred, we cannot proceed. |
/*-------------------------------------------------.
| A severe error has occurred, we cannot proceed. |