/* Support for complaint handling during symbol reading in GDB.
- Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2000
+ Free Software Foundation, Inc.
This file is part of GDB.
#include "complaints.h"
#include "gdbcmd.h"
-extern void _initialize_complaints PARAMS ((void));
+extern void _initialize_complaints (void);
/* Structure to manage complaints about symbol file contents. */
/* Print a complaint about the input symbols, and link the complaint block
into a chain for later handling. */
-/* VARARGS */
void
-#ifdef ANSI_PROTOTYPES
complain (struct complaint *complaint,...)
-#else
-complain (va_alist)
- va_dcl
-#endif
{
va_list args;
-#ifdef ANSI_PROTOTYPES
va_start (args, complaint);
-#else
- struct complaint *complaint;
-
- va_start (args);
- complaint = va_arg (args, struct complaint *);
-#endif
complaint->counter++;
if (complaint->next == NULL)
/* Isolated messages, must be self-explanatory. */
case 0:
- begin_line ();
- puts_filtered ("During symbol reading, ");
- wrap_here ("");
- vprintf_filtered (complaint->message, args);
- puts_filtered (".\n");
+ if (warning_hook)
+ (*warning_hook) (complaint->message, args);
+ else
+ {
+ begin_line ();
+ fputs_filtered ("During symbol reading, ", gdb_stderr);
+ wrap_here ("");
+ vfprintf_filtered (gdb_stderr, complaint->message, args);
+ fputs_filtered (".\n", gdb_stderr);
+ }
break;
/* First of a series, without `set verbose'. */
case 1:
- begin_line ();
- puts_filtered ("During symbol reading...");
- vprintf_filtered (complaint->message, args);
- puts_filtered ("...");
- wrap_here ("");
- complaint_series++;
+ if (warning_hook)
+ (*warning_hook) (complaint->message, args);
+ else
+ {
+ begin_line ();
+ fputs_filtered ("During symbol reading...", gdb_stderr);
+ vfprintf_filtered (gdb_stderr, complaint->message, args);
+ fputs_filtered ("...", gdb_stderr);
+ wrap_here ("");
+ complaint_series++;
+ }
break;
/* Subsequent messages of a series, or messages under `set verbose'.
(We'll already have produced a "Reading in symbols for XXX..."
message and will clean up at the end with a newline.) */
default:
- vprintf_filtered (complaint->message, args);
- puts_filtered ("...");
- wrap_here ("");
+ if (warning_hook)
+ (*warning_hook) (complaint->message, args);
+ else
+ {
+ vfprintf_filtered (gdb_stderr, complaint->message, args);
+ fputs_filtered ("...", gdb_stderr);
+ wrap_here ("");
+ }
}
/* If GDB dumps core, we'd like to see the complaints first. Presumably
GDB will not be sending so many complaints that this becomes a
performance hog. */
- gdb_flush (gdb_stdout);
+ gdb_flush (gdb_stderr);
va_end (args);
}
context for the user to figure it out. */
void
-clear_complaints (sym_reading, noisy)
- int sym_reading;
- int noisy;
+clear_complaints (int sym_reading, int noisy)
{
struct complaint *p;
p->counter = 0;
}
- if (!sym_reading && !noisy && complaint_series > 1)
+ if (!sym_reading && !noisy && complaint_series > 1 && !warning_hook)
{
/* Terminate previous series, since caller won't. */
puts_filtered ("\n");
}
void
-_initialize_complaints ()
+_initialize_complaints (void)
{
add_show_from_set
(add_set_cmd ("complaints", class_support, var_zinteger,