From 5efd5804f7ba64dc4c42d8c3db2d4ab2eeebac75 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 13 Aug 2009 14:56:19 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 23 +++++++++ gdb/cli/cli-decode.c | 54 +++++++-------------- gdb/command.h | 128 +++++++++++++++++++++++-------------------------- gdb/language.c | 133 ++++++++++++--------------------------------------- 4 files changed, 133 insertions(+), 205 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e524f9a..6b734f7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,26 @@ +2009-08-13 Pedro Alves + + 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 * remote.c (remote_add_inferior): Remove unused local. diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index b547ba9..3e4f6f5 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -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 - list for set/show or some sublist thereof). Return the new "set" - command. */ -struct cmd_list_element * + list for set/show or some sublist thereof). */ +void add_setshow_string_cmd (char *name, enum command_class class, char **var, 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 **show_list) { - struct cmd_list_element *cmd; add_setshow_cmd_full (name, class, var_string, var, set_doc, show_doc, help_doc, set_func, show_func, set_list, show_list, - &cmd, NULL); - return cmd; + NULL, NULL); } /* 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" - command. */ -struct cmd_list_element * + list for set/show or some sublist thereof). */ +void add_setshow_string_noescape_cmd (char *name, enum command_class class, char **var, 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 **show_list) { - struct cmd_list_element *cmd; add_setshow_cmd_full (name, class, var_string_noescape, var, set_doc, show_doc, help_doc, set_func, show_func, set_list, show_list, - &cmd, NULL); - return cmd; + NULL, NULL); } /* 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 list for set/show or some sublist thereof). CLASS is as in add_cmd. VAR is address of the variable which will contain the - value. SET_DOC and SHOW_DOC are the documentation strings. Return - the new "set" command. */ -struct cmd_list_element * + value. SET_DOC and SHOW_DOC are the documentation strings. */ +void add_setshow_integer_cmd (char *name, enum command_class class, int *var, 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 **show_list) { - struct cmd_list_element *cmd; add_setshow_cmd_full (name, class, var_integer, var, set_doc, show_doc, help_doc, set_func, show_func, set_list, show_list, - &cmd, NULL); - return cmd; + NULL, NULL); } /* 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 add_cmd. VAR is address of the variable which will contain the - value. SET_DOC and SHOW_DOC are the documentation strings. Return - the new "set" command. */ -struct cmd_list_element * + value. SET_DOC and SHOW_DOC are the documentation strings. */ +void add_setshow_uinteger_cmd (char *name, enum command_class class, unsigned int *var, 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 **show_list) { - struct cmd_list_element *cmd; add_setshow_cmd_full (name, class, var_uinteger, var, set_doc, show_doc, help_doc, set_func, show_func, set_list, show_list, - &cmd, NULL); - return cmd; + NULL, NULL); } /* 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 add_cmd. VAR is address of the variable which will contain the - value. SET_DOC and SHOW_DOC are the documentation strings. Return - the new "set" command. */ -struct cmd_list_element * + value. SET_DOC and SHOW_DOC are the documentation strings. */ +void add_setshow_zinteger_cmd (char *name, enum command_class class, int *var, 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 **show_list) { - struct cmd_list_element *cmd; add_setshow_cmd_full (name, class, var_zinteger, var, set_doc, show_doc, help_doc, set_func, show_func, set_list, show_list, - &cmd, NULL); - return cmd; + NULL, NULL); } /* 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 add_cmd. VAR is address of the variable which will contain the - value. SET_DOC and SHOW_DOC are the documentation strings. Return - the new "set" command. */ -struct cmd_list_element * + value. SET_DOC and SHOW_DOC are the documentation strings. */ +void add_setshow_zuinteger_cmd (char *name, enum command_class class, unsigned int *var, 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 **show_list) { - struct cmd_list_element *cmd; add_setshow_cmd_full (name, class, var_zuinteger, var, set_doc, show_doc, help_doc, set_func, show_func, set_list, show_list, - &cmd, NULL); - return cmd; + NULL, NULL); } /* Remove the command named NAME from the command list. Return the diff --git a/gdb/command.h b/gdb/command.h index 4f12592..1a6bec4 100644 --- a/gdb/command.h +++ b/gdb/command.h @@ -260,29 +260,27 @@ extern void add_setshow_filename_cmd (char *name, struct cmd_list_element **set_list, struct cmd_list_element **show_list); -extern struct cmd_list_element * - add_setshow_string_cmd (char *name, - enum command_class class, - char **var, - const char *set_doc, - const char *show_doc, - const char *help_doc, - cmd_sfunc_ftype *set_func, - show_value_ftype *show_func, - struct cmd_list_element **set_list, - struct cmd_list_element **show_list); - -extern struct cmd_list_element * - add_setshow_string_noescape_cmd (char *name, - enum command_class class, - char **var, - const char *set_doc, - const char *show_doc, - const char *help_doc, - cmd_sfunc_ftype *set_func, - show_value_ftype *show_func, - struct cmd_list_element **set_list, - struct cmd_list_element **show_list); +extern void add_setshow_string_cmd (char *name, + enum command_class class, + char **var, + const char *set_doc, + const char *show_doc, + const char *help_doc, + cmd_sfunc_ftype *set_func, + show_value_ftype *show_func, + struct cmd_list_element **set_list, + struct cmd_list_element **show_list); + +extern void add_setshow_string_noescape_cmd (char *name, + enum command_class class, + char **var, + const char *set_doc, + const char *show_doc, + const char *help_doc, + cmd_sfunc_ftype *set_func, + show_value_ftype *show_func, + struct cmd_list_element **set_list, + struct cmd_list_element **show_list); extern void add_setshow_optional_filename_cmd (char *name, 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 **show_list); -extern struct cmd_list_element * - add_setshow_integer_cmd (char *name, - enum command_class class, - int *var, - const char *set_doc, - const char *show_doc, - const char *help_doc, - cmd_sfunc_ftype *set_func, - show_value_ftype *show_func, - struct cmd_list_element **set_list, - struct cmd_list_element **show_list); +extern void add_setshow_integer_cmd (char *name, + enum command_class class, + int *var, + const char *set_doc, + const char *show_doc, + const char *help_doc, + cmd_sfunc_ftype *set_func, + show_value_ftype *show_func, + struct cmd_list_element **set_list, + struct cmd_list_element **show_list); -extern struct cmd_list_element * - add_setshow_uinteger_cmd (char *name, - enum command_class class, - unsigned int *var, - const char *set_doc, - const char *show_doc, - const char *help_doc, - cmd_sfunc_ftype *set_func, - show_value_ftype *show_func, - struct cmd_list_element **set_list, - struct cmd_list_element **show_list); +extern void add_setshow_uinteger_cmd (char *name, + enum command_class class, + unsigned int *var, + const char *set_doc, + const char *show_doc, + const char *help_doc, + cmd_sfunc_ftype *set_func, + show_value_ftype *show_func, + struct cmd_list_element **set_list, + struct cmd_list_element **show_list); -extern struct cmd_list_element * - add_setshow_zinteger_cmd (char *name, - enum command_class class, - int *var, - const char *set_doc, - const char *show_doc, - const char *help_doc, - cmd_sfunc_ftype *set_func, - show_value_ftype *show_func, - struct cmd_list_element **set_list, - struct cmd_list_element **show_list); +extern void add_setshow_zinteger_cmd (char *name, + enum command_class class, + int *var, + const char *set_doc, + const char *show_doc, + const char *help_doc, + cmd_sfunc_ftype *set_func, + show_value_ftype *show_func, + struct cmd_list_element **set_list, + struct cmd_list_element **show_list); -extern struct cmd_list_element * - add_setshow_zuinteger_cmd (char *name, - enum command_class class, - unsigned int *var, - const char *set_doc, - const char *show_doc, - const char *help_doc, - cmd_sfunc_ftype *set_func, - show_value_ftype *show_func, - struct cmd_list_element **set_list, - struct cmd_list_element **show_list); +extern void add_setshow_zuinteger_cmd (char *name, + enum command_class class, + unsigned int *var, + const char *set_doc, + const char *show_doc, + const char *help_doc, + cmd_sfunc_ftype *set_func, + show_value_ftype *show_func, + struct cmd_list_element **set_list, + struct cmd_list_element **show_list); /* Do a "show" command for each thing on a command list. */ diff --git a/gdb/language.c b/gdb/language.c index 04c2fe4..62eeb62 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -150,21 +150,11 @@ show_language_command (struct ui_file *file, int from_tty, static void set_language_command (char *ignore, int from_tty, struct cmd_list_element *c) { - int i, len; + int i; enum language flang; - char *err_lang, *tem; - - /* Strip trailing whitespace. */ - if (!language) - len = 0; - else - { - len = strlen (language); - while (len > 0 && language[len - 1] == ' ') - --len; - } + char *err_lang; - if (len == 0) + if (!language || !language[0]) { printf_unfiltered (_("\ The currently understood settings are:\n\n\ @@ -191,11 +181,6 @@ local or auto Automatic setting based on source file\n")); return; } - /* Reset LANGUAGE to avoid trailing spaces. */ - tem = savestring (language, len); - xfree (language); - language = tem; - /* Search the list of languages for a match. */ 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); } -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 not match the current language. */ static void @@ -266,18 +237,6 @@ show_type_command (struct ui_file *file, int from_tty, static void 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) { type_check = type_check_on; @@ -325,18 +284,6 @@ show_range_command (struct ui_file *file, int from_tty, static void 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) { 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); } -/* 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 not match the current language. */ 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); } -/* 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 the current modes and 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 _initialize_language (void) { - struct cmd_list_element *command; + struct cmd_list_element *set, *show; language_gdbarch_data = gdbarch_data_register_post_init (language_gdbarch_post_init); /* GDB commands for language specific stuff */ - command = add_setshow_string_noescape_cmd ("language", class_support, - &language, _("\ + /* FIXME: cagney/2005-02-20: This should be implemented using an + enum. */ + add_setshow_string_noescape_cmd ("language", class_support, &language, _("\ Set the current source language."), _("\ Show the current source language."), NULL, - set_language_command, - show_language_command, - &setlist, &showlist); - set_cmd_completer (command, language_completer); + set_language_command, + show_language_command, + &setlist, &showlist); add_prefix_cmd ("check", no_class, set_check, _("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 ("ch", "check", no_class, 1, &showlist); - command = - add_setshow_string_noescape_cmd ("type", class_support, - &type, _("\ + /* FIXME: cagney/2005-02-20: This should be implemented using an + enum. */ + add_setshow_string_noescape_cmd ("type", class_support, &type, _("\ Set type checking. (on/warn/off/auto)"), _("\ Show type checking. (on/warn/off/auto)"), NULL, - set_type_command, - show_type_command, - &setchecklist, &showchecklist); - set_cmd_completer (command, range_or_type_completer); - - command = - add_setshow_string_noescape_cmd ("range", class_support, - &range, _("\ + set_type_command, + show_type_command, + &setchecklist, &showchecklist); + + /* FIXME: cagney/2005-02-20: This should be implemented using an + enum. */ + add_setshow_string_noescape_cmd ("range", class_support, &range, _("\ Set range checking. (on/warn/off/auto)"), _("\ Show range checking. (on/warn/off/auto)"), NULL, - set_range_command, - show_range_command, - &setchecklist, &showchecklist); - set_cmd_completer (command, range_or_type_completer); - - command = - add_setshow_string_noescape_cmd ("case-sensitive", class_support, - &case_sensitive, _("\ + set_range_command, + show_range_command, + &setchecklist, &showchecklist); + + /* FIXME: cagney/2005-02-20: This should be implemented using an + enum. */ + add_setshow_string_noescape_cmd ("case-sensitive", class_support, + &case_sensitive, _("\ Set 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."), - set_case_command, - show_case_command, - &setlist, &showlist); - set_cmd_completer (command, case_completer); + set_case_command, + show_case_command, + &setlist, &showlist); add_language (&unknown_language_defn); add_language (&local_language_defn); -- 2.7.4