aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2005-02-21 03:25:56 +0000
committerAndrew Cagney <cagney@redhat.com>2005-02-21 03:25:56 +0000
commitb4b4ac0b71ae756aa805f15a6f9b0c5b79d8f398 (patch)
tree51cb257042efabc97dc1b938400f93dc4b095103 /gdb/cli
parentac4528d236f87f0ca5a76199a2455f12101ab7f9 (diff)
downloadgdb-b4b4ac0b71ae756aa805f15a6f9b0c5b79d8f398.zip
gdb-b4b4ac0b71ae756aa805f15a6f9b0c5b79d8f398.tar.gz
gdb-b4b4ac0b71ae756aa805f15a6f9b0c5b79d8f398.tar.bz2
2005-02-20 Andrew Cagney <cagney@gnu.org>
* cli/cli-decode.c (add_setshow_optional_filename_cmd): New function. * cli/cli-setshow.c (deprecated_show_value_hack) (do_setshow_command): Handle var_optional_filename. * command.h (enum var_types): Add var_optional_filename. (add_setshow_optional_filename_cmd): Declare. * infcmd.c (notice_args_read): Use.
Diffstat (limited to 'gdb/cli')
-rw-r--r--gdb/cli/cli-decode.c19
-rw-r--r--gdb/cli/cli-setshow.c10
2 files changed, 28 insertions, 1 deletions
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index ec2f734..f2a533c 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -536,6 +536,25 @@ add_setshow_string_noescape_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). */
+void
+add_setshow_optional_filename_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)
+{
+ add_setshow_cmd_full (name, class, var_optional_filename, var,
+ set_doc, show_doc, help_doc,
+ set_func, show_func,
+ set_list, show_list,
+ 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. */
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index 993ca5c..15c664d 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -102,6 +102,7 @@ deprecated_show_value_hack (struct ui_file *ignore_file,
{
case var_string:
case var_string_noescape:
+ case var_optional_filename:
case var_filename:
case var_enum:
printf_filtered ((" is \"%s\".\n"), value);
@@ -177,8 +178,14 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
*(char **) c->var = savestring (arg, strlen (arg));
break;
case var_filename:
+ case var_optional_filename:
if (arg == NULL)
- error_no_arg (_("filename to set it to."));
+ {
+ if (c->var_type == var_optional_filename)
+ arg = "";
+ else
+ error_no_arg (_("filename to set it to."));
+ }
if (*(char **) c->var != NULL)
xfree (*(char **) c->var);
*(char **) c->var = tilde_expand (arg);
@@ -298,6 +305,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
}
break;
case var_string_noescape:
+ case var_optional_filename:
case var_filename:
case var_enum:
if (*(char **) c->var)