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.
+
* symfile-mem.c (symbol_file_add_from_memory): Pass
target_read_memory to bfd_elf_bfd_from_remote_memory.
(do_target_read_memory): Delete.
NULL, NULL);
}
+/* 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
{
case var_string:
case var_string_noescape:
+ case var_optional_filename:
case var_filename:
case var_enum:
printf_filtered ((" is \"%s\".\n"), value);
*(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);
}
break;
case var_string_noescape:
+ case var_optional_filename:
case var_filename:
case var_enum:
if (*(char **) c->var)
/* String which stores what the user types verbatim.
*VAR is a malloc'd string, or NULL if the string is empty. */
var_string_noescape,
- /* String which stores a filename.
- *VAR is a malloc'd string, or NULL if the string is empty. */
+ /* String which stores a filename. (*VAR) is a malloc'd string,
+ or "" if the string was empty. */
+ var_optional_filename,
+ /* String which stores a filename. (*VAR) is a malloc'd
+ string. */
var_filename,
/* ZeroableInteger. *VAR is an int. Like Unsigned Integer except
that zero really means zero. */
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,
+ 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_integer_cmd (char *name,
enum command_class class,
unsigned int *var,
/* Notice when `show args' is run. */
static void
-notice_args_read (char *args, int from_tty, struct cmd_list_element *c)
+notice_args_read (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
{
+ deprecated_show_value_hack (file, from_tty, c, value);
/* Might compute the value. */
get_inferior_args ();
}
_("Set terminal for future runs of program being debugged."));
set_cmd_completer (c, filename_completer);
- c = add_set_cmd ("args", class_run, var_string_noescape,
- (char *) &inferior_args,
- "Set argument list to give program being debugged when it is started.\n\
-Follow this command with any number of args, to be passed to the program.",
- &setlist);
- set_cmd_completer (c, filename_completer);
- set_cmd_sfunc (c, notice_args_set);
- c = deprecated_add_show_from_set (c, &showlist);
- set_cmd_sfunc (c, notice_args_read);
+ add_setshow_optional_filename_cmd ("args", class_run,
+ &inferior_args, _("\
+Set argument list to give program being debugged when it is started."), _("\
+Show argument list to give program being debugged when it is started."), _("\
+Follow this command with any number of args, to be passed to the program."),
+ notice_args_set,
+ notice_args_read,
+ &setlist, &showlist);
c = add_cmd ("environment", no_class, environment_info, _("\
The environment to give the program, or one variable's value.\n\