X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fcomplaints.c;h=64a1bc11e03422342d0a6db166c7869c2ad3574c;hb=1be5090bcaf4bcab333cf03f4157b16d33881222;hp=ec874da23d66dcc017357ca13a1008a1dd7f4b4b;hpb=9a4105ab85f462853dcc065d12659ea5ed44145b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/complaints.c b/gdb/complaints.c index ec874da23d..64a1bc11e0 100644 --- a/gdb/complaints.c +++ b/gdb/complaints.c @@ -1,13 +1,12 @@ /* Support for complaint handling during symbol reading in GDB. - Copyright 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2000, 2002 Free - Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. This file is part of GDB. 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 - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,9 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "complaints.h" @@ -28,8 +25,8 @@ extern void _initialize_complaints (void); -/* Should each complaint message be self explanatory, or should we assume that - a series of complaints is being produced? */ +/* Should each complaint message be self explanatory, or should we + assume that a series of complaints is being produced? */ /* case 1: First message of a series that must start off with explanation. case 2: Subsequent message of a series @@ -122,7 +119,7 @@ get_complaints (struct complaints **c) return (*c); } -static struct complain * +static struct complain * ATTRIBUTE_PRINTF (4, 0) find_complaint (struct complaints *complaints, const char *file, int line, const char *fmt) { @@ -161,18 +158,21 @@ find_complaint (struct complaints *complaints, const char *file, before we stop whining about it? Default is no whining at all, since so many systems have ill-constructed symbol files. */ -static unsigned int stop_whining = 0; +static int stop_whining = 0; /* Print a complaint, and link the complaint block into a chain for later handling. */ -static void -vcomplaint (struct complaints **c, const char *file, int line, const char *fmt, +static void ATTRIBUTE_PRINTF (4, 0) +vcomplaint (struct complaints **c, const char *file, + int line, const char *fmt, va_list args) { struct complaints *complaints = get_complaints (c); - struct complain *complaint = find_complaint (complaints, file, line, fmt); + struct complain *complaint = find_complaint (complaints, file, + line, fmt); enum complaint_series series; + gdb_assert (complaints != NULL); complaint->counter++; @@ -185,7 +185,8 @@ vcomplaint (struct complaints **c, const char *file, int line, const char *fmt, series = complaints->series; if (complaint->file != NULL) - internal_vwarning (complaint->file, complaint->line, complaint->fmt, args); + internal_vwarning (complaint->file, complaint->line, + complaint->fmt, args); else if (deprecated_warning_hook) (*deprecated_warning_hook) (complaint->fmt, args); else @@ -197,11 +198,12 @@ vcomplaint (struct complaints **c, const char *file, int line, const char *fmt, { char *msg; struct cleanup *cleanups; - xvasprintf (&msg, complaint->fmt, args); + msg = xstrvprintf (complaint->fmt, args); cleanups = make_cleanup (xfree, msg); wrap_here (""); if (series != SUBSEQUENT_MESSAGE) begin_line (); + /* XXX: i18n */ fprintf_filtered (gdb_stderr, "%s%s%s", complaints->explanation[series].prefix, msg, complaints->explanation[series].postfix); @@ -244,6 +246,7 @@ void complaint (struct complaints **complaints, const char *fmt, ...) { va_list args; + va_start (args, fmt); vcomplaint (complaints, NULL/*file*/, 0/*line*/, fmt, args); va_end (args); @@ -293,11 +296,12 @@ clear_complaints (struct complaints **c, int less_verbose, int noisy) case SUBSEQUENT_MESSAGE: /* It would be really nice to use begin_line() here. Unfortunately that function doesn't track GDB_STDERR and - consequently will sometimes supress a line when it shouldn't. */ + consequently will sometimes supress a line when it + shouldn't. */ fputs_unfiltered ("\n", gdb_stderr); break; default: - internal_error (__FILE__, __LINE__, "bad switch"); + internal_error (__FILE__, __LINE__, _("bad switch")); } if (!less_verbose) @@ -308,14 +312,22 @@ clear_complaints (struct complaints **c, int less_verbose, int noisy) complaints->series = SHORT_FIRST_MESSAGE; } +static void +complaints_show_value (struct ui_file *file, int from_tty, + struct cmd_list_element *cmd, const char *value) +{ + fprintf_filtered (file, _("Max number of complaints about incorrect" + " symbols is %s.\n"), + value); +} + void _initialize_complaints (void) { - add_setshow_cmd ("complaints", class_support, var_zinteger, - &stop_whining, - "Set max number of complaints about incorrect symbols.", - "Show max number of complaints about incorrect symbols.", - NULL, NULL, - &setlist, &showlist); - + add_setshow_zinteger_cmd ("complaints", class_support, + &stop_whining, _("\ +Set max number of complaints about incorrect symbols."), _("\ +Show max number of complaints about incorrect symbols."), NULL, + NULL, complaints_show_value, + &setlist, &showlist); }