Revert 2009-08-07 changes for PR gdb/8869:

* language.c (set_language_command): Strip whitespace.
	(set_type_command): Likewise.
	(set_range_command): Likewise.

	* language.c (language_completer): New function.
	(range_or_type_completer): New function.
	(case_completer): New function.
	(_initialize_language): Set completers.
	* cli/cli-decode.c (add_setshow_string_cmd): Return the "set"
	command.
	(add_setshow_string_noescape_cmd): Likewise.
	(add_setshow_integer_cmd): Likewise.
	(add_setshow_uinteger_cmd): Likewise.
	(add_setshow_zinteger_cmd): Likewise.
	(add_setshow_zuinteger_cmd): Likewise.
	* command.h (add_setshow_string_cmd,
	add_setshow_string_noescape_cmd, add_setshow_uinteger_cmd,
	add_setshow_zinteger_cmd, add_setshow_zuinteger_cmd): Update.
This commit is contained in:
Pedro Alves 2009-08-13 14:56:19 +00:00
parent ef5e0cb158
commit 5efd5804f7
4 changed files with 130 additions and 202 deletions

View file

@ -1,3 +1,26 @@
2009-08-13 Pedro Alves <pedro@codesourcery.com>
Revert 2009-08-07 changes for PR gdb/8869:
* language.c (set_language_command): Strip whitespace.
(set_type_command): Likewise.
(set_range_command): Likewise.
* language.c (language_completer): New function.
(range_or_type_completer): New function.
(case_completer): New function.
(_initialize_language): Set completers.
* cli/cli-decode.c (add_setshow_string_cmd): Return the "set"
command.
(add_setshow_string_noescape_cmd): Likewise.
(add_setshow_integer_cmd): Likewise.
(add_setshow_uinteger_cmd): Likewise.
(add_setshow_zinteger_cmd): Likewise.
(add_setshow_zuinteger_cmd): Likewise.
* command.h (add_setshow_string_cmd,
add_setshow_string_noescape_cmd, add_setshow_uinteger_cmd,
add_setshow_zinteger_cmd, add_setshow_zuinteger_cmd): Update.
2009-08-12 Michael Snyder <msnyder@vmware.com> 2009-08-12 Michael Snyder <msnyder@vmware.com>
* remote.c (remote_add_inferior): Remove unused local. * remote.c (remote_add_inferior): Remove unused local.

View file

@ -494,9 +494,8 @@ add_setshow_filename_cmd (char *name, enum command_class class,
} }
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). Return the new "set" list for set/show or some sublist thereof). */
command. */ void
struct cmd_list_element *
add_setshow_string_cmd (char *name, enum command_class class, add_setshow_string_cmd (char *name, enum command_class class,
char **var, char **var,
const char *set_doc, const char *show_doc, const char *set_doc, const char *show_doc,
@ -506,19 +505,16 @@ add_setshow_string_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list) struct cmd_list_element **show_list)
{ {
struct cmd_list_element *cmd;
add_setshow_cmd_full (name, class, var_string, var, add_setshow_cmd_full (name, class, var_string, var,
set_doc, show_doc, help_doc, set_doc, show_doc, help_doc,
set_func, show_func, set_func, show_func,
set_list, show_list, set_list, show_list,
&cmd, NULL); NULL, NULL);
return cmd;
} }
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). Return the new "set" list for set/show or some sublist thereof). */
command. */ void
struct cmd_list_element *
add_setshow_string_noescape_cmd (char *name, enum command_class class, add_setshow_string_noescape_cmd (char *name, enum command_class class,
char **var, char **var,
const char *set_doc, const char *show_doc, const char *set_doc, const char *show_doc,
@ -528,13 +524,11 @@ add_setshow_string_noescape_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list) struct cmd_list_element **show_list)
{ {
struct cmd_list_element *cmd;
add_setshow_cmd_full (name, class, var_string_noescape, var, add_setshow_cmd_full (name, class, var_string_noescape, var,
set_doc, show_doc, help_doc, set_doc, show_doc, help_doc,
set_func, show_func, set_func, show_func,
set_list, show_list, set_list, show_list,
&cmd, NULL); NULL, NULL);
return cmd;
} }
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
@ -564,9 +558,8 @@ add_setshow_optional_filename_cmd (char *name, enum command_class class,
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). CLASS is as in list for set/show or some sublist thereof). CLASS is as in
add_cmd. VAR is address of the variable which will contain the add_cmd. VAR is address of the variable which will contain the
value. SET_DOC and SHOW_DOC are the documentation strings. Return value. SET_DOC and SHOW_DOC are the documentation strings. */
the new "set" command. */ void
struct cmd_list_element *
add_setshow_integer_cmd (char *name, enum command_class class, add_setshow_integer_cmd (char *name, enum command_class class,
int *var, int *var,
const char *set_doc, const char *show_doc, const char *set_doc, const char *show_doc,
@ -576,21 +569,18 @@ add_setshow_integer_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list) struct cmd_list_element **show_list)
{ {
struct cmd_list_element *cmd;
add_setshow_cmd_full (name, class, var_integer, var, add_setshow_cmd_full (name, class, var_integer, var,
set_doc, show_doc, help_doc, set_doc, show_doc, help_doc,
set_func, show_func, set_func, show_func,
set_list, show_list, set_list, show_list,
&cmd, NULL); NULL, NULL);
return cmd;
} }
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). CLASS is as in list for set/show or some sublist thereof). CLASS is as in
add_cmd. VAR is address of the variable which will contain the add_cmd. VAR is address of the variable which will contain the
value. SET_DOC and SHOW_DOC are the documentation strings. Return value. SET_DOC and SHOW_DOC are the documentation strings. */
the new "set" command. */ void
struct cmd_list_element *
add_setshow_uinteger_cmd (char *name, enum command_class class, add_setshow_uinteger_cmd (char *name, enum command_class class,
unsigned int *var, unsigned int *var,
const char *set_doc, const char *show_doc, const char *set_doc, const char *show_doc,
@ -600,21 +590,18 @@ add_setshow_uinteger_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list) struct cmd_list_element **show_list)
{ {
struct cmd_list_element *cmd;
add_setshow_cmd_full (name, class, var_uinteger, var, add_setshow_cmd_full (name, class, var_uinteger, var,
set_doc, show_doc, help_doc, set_doc, show_doc, help_doc,
set_func, show_func, set_func, show_func,
set_list, show_list, set_list, show_list,
&cmd, NULL); NULL, NULL);
return cmd;
} }
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). CLASS is as in list for set/show or some sublist thereof). CLASS is as in
add_cmd. VAR is address of the variable which will contain the add_cmd. VAR is address of the variable which will contain the
value. SET_DOC and SHOW_DOC are the documentation strings. Return value. SET_DOC and SHOW_DOC are the documentation strings. */
the new "set" command. */ void
struct cmd_list_element *
add_setshow_zinteger_cmd (char *name, enum command_class class, add_setshow_zinteger_cmd (char *name, enum command_class class,
int *var, int *var,
const char *set_doc, const char *show_doc, const char *set_doc, const char *show_doc,
@ -624,21 +611,18 @@ add_setshow_zinteger_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list) struct cmd_list_element **show_list)
{ {
struct cmd_list_element *cmd;
add_setshow_cmd_full (name, class, var_zinteger, var, add_setshow_cmd_full (name, class, var_zinteger, var,
set_doc, show_doc, help_doc, set_doc, show_doc, help_doc,
set_func, show_func, set_func, show_func,
set_list, show_list, set_list, show_list,
&cmd, NULL); NULL, NULL);
return cmd;
} }
/* Add element named NAME to both the set and show command LISTs (the /* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). CLASS is as in list for set/show or some sublist thereof). CLASS is as in
add_cmd. VAR is address of the variable which will contain the add_cmd. VAR is address of the variable which will contain the
value. SET_DOC and SHOW_DOC are the documentation strings. Return value. SET_DOC and SHOW_DOC are the documentation strings. */
the new "set" command. */ void
struct cmd_list_element *
add_setshow_zuinteger_cmd (char *name, enum command_class class, add_setshow_zuinteger_cmd (char *name, enum command_class class,
unsigned int *var, unsigned int *var,
const char *set_doc, const char *show_doc, const char *set_doc, const char *show_doc,
@ -648,13 +632,11 @@ add_setshow_zuinteger_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list) struct cmd_list_element **show_list)
{ {
struct cmd_list_element *cmd;
add_setshow_cmd_full (name, class, var_zuinteger, var, add_setshow_cmd_full (name, class, var_zuinteger, var,
set_doc, show_doc, help_doc, set_doc, show_doc, help_doc,
set_func, show_func, set_func, show_func,
set_list, show_list, set_list, show_list,
&cmd, NULL); NULL, NULL);
return cmd;
} }
/* Remove the command named NAME from the command list. Return the /* Remove the command named NAME from the command list. Return the

View file

@ -260,29 +260,27 @@ extern void add_setshow_filename_cmd (char *name,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list); struct cmd_list_element **show_list);
extern struct cmd_list_element * extern void add_setshow_string_cmd (char *name,
add_setshow_string_cmd (char *name, enum command_class class,
enum command_class class, char **var,
char **var, const char *set_doc,
const char *set_doc, const char *show_doc,
const char *show_doc, const char *help_doc,
const char *help_doc, cmd_sfunc_ftype *set_func,
cmd_sfunc_ftype *set_func, show_value_ftype *show_func,
show_value_ftype *show_func, struct cmd_list_element **set_list,
struct cmd_list_element **set_list, struct cmd_list_element **show_list);
struct cmd_list_element **show_list);
extern struct cmd_list_element * extern void add_setshow_string_noescape_cmd (char *name,
add_setshow_string_noescape_cmd (char *name, enum command_class class,
enum command_class class, char **var,
char **var, const char *set_doc,
const char *set_doc, const char *show_doc,
const char *show_doc, const char *help_doc,
const char *help_doc, cmd_sfunc_ftype *set_func,
cmd_sfunc_ftype *set_func, show_value_ftype *show_func,
show_value_ftype *show_func, struct cmd_list_element **set_list,
struct cmd_list_element **set_list, struct cmd_list_element **show_list);
struct cmd_list_element **show_list);
extern void add_setshow_optional_filename_cmd (char *name, extern void add_setshow_optional_filename_cmd (char *name,
enum command_class class, enum command_class class,
@ -295,53 +293,49 @@ extern void add_setshow_optional_filename_cmd (char *name,
struct cmd_list_element **set_list, struct cmd_list_element **set_list,
struct cmd_list_element **show_list); struct cmd_list_element **show_list);
extern struct cmd_list_element * extern void add_setshow_integer_cmd (char *name,
add_setshow_integer_cmd (char *name, enum command_class class,
enum command_class class, int *var,
int *var, const char *set_doc,
const char *set_doc, const char *show_doc,
const char *show_doc, const char *help_doc,
const char *help_doc, cmd_sfunc_ftype *set_func,
cmd_sfunc_ftype *set_func, show_value_ftype *show_func,
show_value_ftype *show_func, struct cmd_list_element **set_list,
struct cmd_list_element **set_list, struct cmd_list_element **show_list);
struct cmd_list_element **show_list);
extern struct cmd_list_element * extern void add_setshow_uinteger_cmd (char *name,
add_setshow_uinteger_cmd (char *name, enum command_class class,
enum command_class class, unsigned int *var,
unsigned int *var, const char *set_doc,
const char *set_doc, const char *show_doc,
const char *show_doc, const char *help_doc,
const char *help_doc, cmd_sfunc_ftype *set_func,
cmd_sfunc_ftype *set_func, show_value_ftype *show_func,
show_value_ftype *show_func, struct cmd_list_element **set_list,
struct cmd_list_element **set_list, struct cmd_list_element **show_list);
struct cmd_list_element **show_list);
extern struct cmd_list_element * extern void add_setshow_zinteger_cmd (char *name,
add_setshow_zinteger_cmd (char *name, enum command_class class,
enum command_class class, int *var,
int *var, const char *set_doc,
const char *set_doc, const char *show_doc,
const char *show_doc, const char *help_doc,
const char *help_doc, cmd_sfunc_ftype *set_func,
cmd_sfunc_ftype *set_func, show_value_ftype *show_func,
show_value_ftype *show_func, struct cmd_list_element **set_list,
struct cmd_list_element **set_list, struct cmd_list_element **show_list);
struct cmd_list_element **show_list);
extern struct cmd_list_element * extern void add_setshow_zuinteger_cmd (char *name,
add_setshow_zuinteger_cmd (char *name, enum command_class class,
enum command_class class, unsigned int *var,
unsigned int *var, const char *set_doc,
const char *set_doc, const char *show_doc,
const char *show_doc, const char *help_doc,
const char *help_doc, cmd_sfunc_ftype *set_func,
cmd_sfunc_ftype *set_func, show_value_ftype *show_func,
show_value_ftype *show_func, struct cmd_list_element **set_list,
struct cmd_list_element **set_list, struct cmd_list_element **show_list);
struct cmd_list_element **show_list);
/* Do a "show" command for each thing on a command list. */ /* Do a "show" command for each thing on a command list. */

View file

@ -150,21 +150,11 @@ show_language_command (struct ui_file *file, int from_tty,
static void static void
set_language_command (char *ignore, int from_tty, struct cmd_list_element *c) set_language_command (char *ignore, int from_tty, struct cmd_list_element *c)
{ {
int i, len; int i;
enum language flang; enum language flang;
char *err_lang, *tem; char *err_lang;
/* Strip trailing whitespace. */ if (!language || !language[0])
if (!language)
len = 0;
else
{
len = strlen (language);
while (len > 0 && language[len - 1] == ' ')
--len;
}
if (len == 0)
{ {
printf_unfiltered (_("\ printf_unfiltered (_("\
The currently understood settings are:\n\n\ The currently understood settings are:\n\n\
@ -191,11 +181,6 @@ local or auto Automatic setting based on source file\n"));
return; return;
} }
/* Reset LANGUAGE to avoid trailing spaces. */
tem = savestring (language, len);
xfree (language);
language = tem;
/* Search the list of languages for a match. */ /* Search the list of languages for a match. */
for (i = 0; i < languages_size; i++) for (i = 0; i < languages_size; i++)
{ {
@ -236,20 +221,6 @@ local or auto Automatic setting based on source file\n"));
error (_("Unknown language `%s'."), err_lang); error (_("Unknown language `%s'."), err_lang);
} }
static char **
language_completer (struct cmd_list_element *self, char *text, char *word)
{
int i;
const char **langnames
= (const char **) alloca ((languages_size + 1) * sizeof (const char *));
for (i = 0; i < languages_size; ++i)
langnames[i] = languages[i]->la_name;
langnames[i] = NULL;
return complete_on_enum (langnames, text, word);
}
/* Show command. Display a warning if the type setting does /* Show command. Display a warning if the type setting does
not match the current language. */ not match the current language. */
static void static void
@ -266,18 +237,6 @@ show_type_command (struct ui_file *file, int from_tty,
static void static void
set_type_command (char *ignore, int from_tty, struct cmd_list_element *c) set_type_command (char *ignore, int from_tty, struct cmd_list_element *c)
{ {
int len;
char *tem;
/* Strip trailing whitespace. */
len = strlen (type);
while (len > 0 && type[len - 1] == ' ')
--len;
/* Reset TYPE. */
tem = savestring (type, len);
xfree (type);
type = tem;
if (strcmp (type, "on") == 0) if (strcmp (type, "on") == 0)
{ {
type_check = type_check_on; type_check = type_check_on;
@ -325,18 +284,6 @@ show_range_command (struct ui_file *file, int from_tty,
static void static void
set_range_command (char *ignore, int from_tty, struct cmd_list_element *c) set_range_command (char *ignore, int from_tty, struct cmd_list_element *c)
{ {
int len;
char *tem;
/* Strip trailing whitespace. */
len = strlen (range);
while (len > 0 && range[len - 1] == ' ')
--len;
/* Reset RANGE. */
tem = savestring (range, len);
xfree (range);
range = tem;
if (strcmp (range, "on") == 0) if (strcmp (range, "on") == 0)
{ {
range_check = range_check_on; range_check = range_check_on;
@ -368,14 +315,6 @@ set_range_command (char *ignore, int from_tty, struct cmd_list_element *c)
show_range_command (NULL, from_tty, NULL, NULL); show_range_command (NULL, from_tty, NULL, NULL);
} }
/* Completer for range and type parameters. */
static char **
range_or_type_completer (struct cmd_list_element *self, char *text, char *word)
{
static const char *values[] = { "on", "off", "warn", "auto", NULL };
return complete_on_enum (values, text, word);
}
/* Show command. Display a warning if the case sensitivity setting does /* Show command. Display a warning if the case sensitivity setting does
not match the current language. */ not match the current language. */
static void static void
@ -420,14 +359,6 @@ set_case_command (char *ignore, int from_tty, struct cmd_list_element *c)
show_case_command (NULL, from_tty, NULL, NULL); show_case_command (NULL, from_tty, NULL, NULL);
} }
/* Completer for case-sensitive parameter. */
static char **
case_completer (struct cmd_list_element *self, char *text, char *word)
{
static const char *values[] = { "on", "off", "auto", NULL };
return complete_on_enum (values, text, word);
}
/* Set the status of range and type checking and case sensitivity based on /* Set the status of range and type checking and case sensitivity based on
the current modes and the current language. the current modes and the current language.
If SHOW is non-zero, then print out the current language, If SHOW is non-zero, then print out the current language,
@ -1409,21 +1340,21 @@ language_lookup_primitive_type_by_name (const struct language_defn *la,
void void
_initialize_language (void) _initialize_language (void)
{ {
struct cmd_list_element *command; struct cmd_list_element *set, *show;
language_gdbarch_data language_gdbarch_data
= gdbarch_data_register_post_init (language_gdbarch_post_init); = gdbarch_data_register_post_init (language_gdbarch_post_init);
/* GDB commands for language specific stuff */ /* GDB commands for language specific stuff */
command = add_setshow_string_noescape_cmd ("language", class_support, /* FIXME: cagney/2005-02-20: This should be implemented using an
&language, _("\ enum. */
add_setshow_string_noescape_cmd ("language", class_support, &language, _("\
Set the current source language."), _("\ Set the current source language."), _("\
Show the current source language."), NULL, Show the current source language."), NULL,
set_language_command, set_language_command,
show_language_command, show_language_command,
&setlist, &showlist); &setlist, &showlist);
set_cmd_completer (command, language_completer);
add_prefix_cmd ("check", no_class, set_check, add_prefix_cmd ("check", no_class, set_check,
_("Set the status of the type/range checker."), _("Set the status of the type/range checker."),
@ -1437,36 +1368,34 @@ Show the current source language."), NULL,
add_alias_cmd ("c", "check", no_class, 1, &showlist); add_alias_cmd ("c", "check", no_class, 1, &showlist);
add_alias_cmd ("ch", "check", no_class, 1, &showlist); add_alias_cmd ("ch", "check", no_class, 1, &showlist);
command = /* FIXME: cagney/2005-02-20: This should be implemented using an
add_setshow_string_noescape_cmd ("type", class_support, enum. */
&type, _("\ add_setshow_string_noescape_cmd ("type", class_support, &type, _("\
Set type checking. (on/warn/off/auto)"), _("\ Set type checking. (on/warn/off/auto)"), _("\
Show type checking. (on/warn/off/auto)"), NULL, Show type checking. (on/warn/off/auto)"), NULL,
set_type_command, set_type_command,
show_type_command, show_type_command,
&setchecklist, &showchecklist); &setchecklist, &showchecklist);
set_cmd_completer (command, range_or_type_completer);
command = /* FIXME: cagney/2005-02-20: This should be implemented using an
add_setshow_string_noescape_cmd ("range", class_support, enum. */
&range, _("\ add_setshow_string_noescape_cmd ("range", class_support, &range, _("\
Set range checking. (on/warn/off/auto)"), _("\ Set range checking. (on/warn/off/auto)"), _("\
Show range checking. (on/warn/off/auto)"), NULL, Show range checking. (on/warn/off/auto)"), NULL,
set_range_command, set_range_command,
show_range_command, show_range_command,
&setchecklist, &showchecklist); &setchecklist, &showchecklist);
set_cmd_completer (command, range_or_type_completer);
command = /* FIXME: cagney/2005-02-20: This should be implemented using an
add_setshow_string_noescape_cmd ("case-sensitive", class_support, enum. */
&case_sensitive, _("\ add_setshow_string_noescape_cmd ("case-sensitive", class_support,
&case_sensitive, _("\
Set case sensitivity in name search. (on/off/auto)"), _("\ Set case sensitivity in name search. (on/off/auto)"), _("\
Show case sensitivity in name search. (on/off/auto)"), _("\ Show case sensitivity in name search. (on/off/auto)"), _("\
For Fortran the default is off; for other languages the default is on."), For Fortran the default is off; for other languages the default is on."),
set_case_command, set_case_command,
show_case_command, show_case_command,
&setlist, &showlist); &setlist, &showlist);
set_cmd_completer (command, case_completer);
add_language (&unknown_language_defn); add_language (&unknown_language_defn);
add_language (&local_language_defn); add_language (&local_language_defn);