of *LIST). */
struct cmd_list_element *
-add_cmd (name, class, fun, doc, list)
- char *name;
- enum command_class class;
- void (*fun) (char *, int);
- char *doc;
- struct cmd_list_element **list;
+add_cmd (char *name, enum command_class class, void (*fun) (char *, int),
+ char *doc, struct cmd_list_element **list)
{
register struct cmd_list_element *c
= (struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element));
c->doc = doc;
c->flags = 0;
c->replacement = NULL;
- c->hook = NULL;
+ c->hook_pre = NULL;
+ c->hook_post = NULL;
+ c->hook_in = 0;
c->prefixlist = NULL;
c->prefixname = NULL;
c->allow_unknown = 0;
c->var_type = var_boolean;
c->enums = NULL;
c->user_commands = NULL;
- c->hookee = NULL;
+ c->hookee_pre = NULL;
+ c->hookee_post = NULL;
c->cmd_pointer = NULL;
return c;
Returns a pointer to the deprecated command. */
struct cmd_list_element *
-deprecate_cmd (cmd, replacement)
- struct cmd_list_element *cmd;
- char *replacement;
+deprecate_cmd (struct cmd_list_element *cmd, char *replacement)
{
cmd->flags |= (CMD_DEPRECATED | DEPRECATED_WARN_USER);
#if 0 /* Currently unused */
struct cmd_list_element *
-add_abbrev_cmd (name, class, fun, doc, list)
- char *name;
- enum command_class class;
- void (*fun) (char *, int);
- char *doc;
- struct cmd_list_element **list;
+add_abbrev_cmd (char *name, enum command_class class, void (*fun) (char *, int),
+ char *doc, struct cmd_list_element **list)
{
register struct cmd_list_element *c
= add_cmd (name, class, fun, doc, list);
#endif
struct cmd_list_element *
-add_alias_cmd (name, oldname, class, abbrev_flag, list)
- char *name;
- char *oldname;
- enum command_class class;
- int abbrev_flag;
- struct cmd_list_element **list;
+add_alias_cmd (char *name, char *oldname, enum command_class class,
+ int abbrev_flag, struct cmd_list_element **list)
{
/* Must do this since lookup_cmd tries to side-effect its first arg */
char *copied_name;
of the variable containing that list. */
struct cmd_list_element *
-add_prefix_cmd (name, class, fun, doc, prefixlist, prefixname,
- allow_unknown, list)
- char *name;
- enum command_class class;
- void (*fun) (char *, int);
- char *doc;
- struct cmd_list_element **prefixlist;
- char *prefixname;
- int allow_unknown;
- struct cmd_list_element **list;
+add_prefix_cmd (char *name, enum command_class class, void (*fun) (char *, int),
+ char *doc, struct cmd_list_element **prefixlist,
+ char *prefixname, int allow_unknown,
+ struct cmd_list_element **list)
{
register struct cmd_list_element *c = add_cmd (name, class, fun, doc, list);
c->prefixlist = prefixlist;
/* Like add_prefix_cmd but sets the abbrev_flag on the new command. */
struct cmd_list_element *
-add_abbrev_prefix_cmd (name, class, fun, doc, prefixlist, prefixname,
- allow_unknown, list)
- char *name;
- enum command_class class;
- void (*fun) (char *, int);
- char *doc;
- struct cmd_list_element **prefixlist;
- char *prefixname;
- int allow_unknown;
- struct cmd_list_element **list;
+add_abbrev_prefix_cmd (char *name, enum command_class class,
+ void (*fun) (char *, int), char *doc,
+ struct cmd_list_element **prefixlist, char *prefixname,
+ int allow_unknown, struct cmd_list_element **list)
{
register struct cmd_list_element *c = add_cmd (name, class, fun, doc, list);
c->prefixlist = prefixlist;
/* This is an empty "cfunc". */
void
-not_just_help_class_command (args, from_tty)
- char *args;
- int from_tty;
+not_just_help_class_command (char *args, int from_tty)
{
}
static void empty_sfunc (char *, int, struct cmd_list_element *);
static void
-empty_sfunc (args, from_tty, c)
- char *args;
- int from_tty;
- struct cmd_list_element *c;
+empty_sfunc (char *args, int from_tty, struct cmd_list_element *c)
{
}
command to LIST and return a pointer to the added command (not
necessarily the head of LIST). */
struct cmd_list_element *
-add_show_from_set (setcmd, list)
- struct cmd_list_element *setcmd;
- struct cmd_list_element **list;
+add_show_from_set (struct cmd_list_element *setcmd,
+ struct cmd_list_element **list)
{
struct cmd_list_element *showcmd =
(struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element));
/* Remove the command named NAME from the command list. */
void
-delete_cmd (name, list)
- char *name;
- struct cmd_list_element **list;
+delete_cmd (char *name, struct cmd_list_element **list)
{
register struct cmd_list_element *c;
struct cmd_list_element *p;
while (*list && STREQ ((*list)->name, name))
{
- if ((*list)->hookee)
- (*list)->hookee->hook = 0; /* Hook slips out of its mouth */
+ if ((*list)->hookee_pre)
+ (*list)->hookee_pre->hook_pre = 0; /* Hook slips out of its mouth */
+ if ((*list)->hookee_post)
+ (*list)->hookee_post->hook_post = 0; /* Hook slips out of its bottom */
p = (*list)->next;
free ((PTR) * list);
*list = p;
{
if (STREQ (c->next->name, name))
{
- if (c->next->hookee)
- c->next->hookee->hook = 0; /* hooked cmd gets away. */
+ if (c->next->hookee_pre)
+ c->next->hookee_pre->hook_pre = 0; /* hooked cmd gets away. */
+ if (c->next->hookee_post)
+ c->next->hookee_post->hook_post = 0; /* remove post hook */
+ /* :( no fishing metaphore */
p = c->next->next;
free ((PTR) c->next);
c->next = p;
*/
void
-help_cmd (command, stream)
- char *command;
- struct ui_file *stream;
+help_cmd (char *command, struct ui_file *stream)
{
struct cmd_list_element *c;
extern struct cmd_list_element *cmdlist;
if (c->function.cfunc == NULL)
help_list (cmdlist, "", c->class, stream);
- if (c->hook)
- fprintf_filtered (stream, "\nThis command has a hook defined: %s\n",
- c->hook->name);
+ if (c->hook_pre || c->hook_post)
+ fprintf_filtered (stream,
+ "\nThis command has a hook (or hooks) defined:\n");
+
+ if (c->hook_pre)
+ fprintf_filtered (stream,
+ "\tThis command is run after : %s (pre hook)\n",
+ c->hook_pre->name);
+ if (c->hook_post)
+ fprintf_filtered (stream,
+ "\tThis command is run before : %s (post hook)\n",
+ c->hook_post->name);
}
/*
* If you call this routine with a class >= 0, it recurses.
*/
void
-help_list (list, cmdtype, class, stream)
- struct cmd_list_element *list;
- char *cmdtype;
- enum command_class class;
- struct ui_file *stream;
+help_list (struct cmd_list_element *list, char *cmdtype,
+ enum command_class class, struct ui_file *stream)
{
int len;
char *cmdtype1, *cmdtype2;
/* Print only the first line of STR on STREAM. */
static void
-print_doc_line (stream, str)
- struct ui_file *stream;
- char *str;
+print_doc_line (struct ui_file *stream, char *str)
{
static char *line_buffer = 0;
static int line_size;
* is at the low level, not the high-level).
*/
void
-help_cmd_list (list, class, prefix, recurse, stream)
- struct cmd_list_element *list;
- enum command_class class;
- char *prefix;
- int recurse;
- struct ui_file *stream;
+help_cmd_list (struct cmd_list_element *list, enum command_class class,
+ char *prefix, int recurse, struct ui_file *stream)
{
register struct cmd_list_element *c;
found in nfound */
static struct cmd_list_element *
-find_cmd (command, len, clist, ignore_help_classes, nfound)
- char *command;
- int len;
- struct cmd_list_element *clist;
- int ignore_help_classes;
- int *nfound;
+find_cmd (char *command, int len, struct cmd_list_element *clist,
+ int ignore_help_classes, int *nfound)
{
struct cmd_list_element *found, *c;
the struct cmd_list_element is NULL). */
struct cmd_list_element *
-lookup_cmd_1 (text, clist, result_list, ignore_help_classes)
- char **text;
- struct cmd_list_element *clist, **result_list;
- int ignore_help_classes;
+lookup_cmd_1 (char **text, struct cmd_list_element *clist,
+ struct cmd_list_element **result_list, int ignore_help_classes)
{
char *p, *command;
int len, tmp, nfound;
/* All this hair to move the space to the front of cmdtype */
static void
-undef_cmd_error (cmdtype, q)
- char *cmdtype, *q;
+undef_cmd_error (char *cmdtype, char *q)
{
error ("Undefined %scommand: \"%s\". Try \"help%s%.*s\".",
cmdtype,
the function field of the struct cmd_list_element is 0). */
struct cmd_list_element *
-lookup_cmd (line, list, cmdtype, allow_unknown, ignore_help_classes)
- char **line;
- struct cmd_list_element *list;
- char *cmdtype;
- int allow_unknown;
- int ignore_help_classes;
+lookup_cmd (char **line, struct cmd_list_element *list, char *cmdtype,
+ int allow_unknown, int ignore_help_classes)
{
struct cmd_list_element *last_list = 0;
struct cmd_list_element *c =
CMDTYPE precedes the word "command" in the error message. */
struct cmd_list_element *
-lookup_cmd (line, list, cmdtype, allow_unknown)
- char **line;
- struct cmd_list_element *list;
- char *cmdtype;
- int allow_unknown;
+lookup_cmd (char **line, struct cmd_list_element *list, char *cmdtype,
+ int allow_unknown)
{
register char *p;
register struct cmd_list_element *c, *found;
"oobar"; if WORD is "baz/foo", return "baz/foobar". */
char **
-complete_on_cmdlist (list, text, word)
- struct cmd_list_element *list;
- char *text;
- char *word;
+complete_on_cmdlist (struct cmd_list_element *list, char *text, char *word)
{
struct cmd_list_element *ptr;
char **matchlist;
}
static int
-parse_binary_operation (arg)
- char *arg;
+parse_binary_operation (char *arg)
{
int length;
directly by the user (i.e. these are just like any other
command). C is the command list element for the command. */
void
-do_setshow_command (arg, from_tty, c)
- char *arg;
- int from_tty;
- struct cmd_list_element *c;
+do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
{
if (c->type == set_cmd)
{
case var_uinteger:
if (arg == NULL)
error_no_arg ("integer to set it to.");
- *(unsigned int *) c->var = parse_and_eval_address (arg);
+ *(unsigned int *) c->var = parse_and_eval_long (arg);
if (*(unsigned int *) c->var == 0)
*(unsigned int *) c->var = UINT_MAX;
break;
unsigned int val;
if (arg == NULL)
error_no_arg ("integer to set it to.");
- val = parse_and_eval_address (arg);
+ val = parse_and_eval_long (arg);
if (val == 0)
*(int *) c->var = INT_MAX;
else if (val >= INT_MAX)
case var_zinteger:
if (arg == NULL)
error_no_arg ("integer to set it to.");
- *(int *) c->var = parse_and_eval_address (arg);
+ *(int *) c->var = parse_and_eval_long (arg);
break;
case var_enum:
{
/* Show all the settings in a list of show commands. */
void
-cmd_show_list (list, from_tty, prefix)
- struct cmd_list_element *list;
- int from_tty;
- char *prefix;
+cmd_show_list (struct cmd_list_element *list, int from_tty, char *prefix)
{
#ifdef UI_OUT
ui_out_list_begin (uiout, "showlist");
/* ARGSUSED */
static void
-shell_escape (arg, from_tty)
- char *arg;
- int from_tty;
+shell_escape (char *arg, int from_tty)
{
#ifdef CANT_FORK
/* If ARG is NULL, they want an inferior shell, but `system' just
}
static void
-make_command (arg, from_tty)
- char *arg;
- int from_tty;
+make_command (char *arg, int from_tty)
{
char *p;
}
static void
-show_user_1 (c, stream)
- struct cmd_list_element *c;
- struct ui_file *stream;
+show_user_1 (struct cmd_list_element *c, struct ui_file *stream)
{
register struct command_line *cmdlines;
/* ARGSUSED */
static void
-show_user (args, from_tty)
- char *args;
- int from_tty;
+show_user (char *args, int from_tty)
{
struct cmd_list_element *c;
extern struct cmd_list_element *cmdlist;
}
void
-_initialize_command ()
+_initialize_command (void)
{
add_com ("shell", class_support, shell_escape,
"Execute the rest of the line as a shell command. \n\
With no arguments, run an inferior shell.");
/* NOTE: cagney/2000-03-20: Being able to enter ``(gdb) !ls'' would
- be a really useful feature. Unfortunatly, the below wont do
+ be a really useful feature. Unfortunately, the below wont do
this. Instead it adds support for the form ``(gdb) ! ls''
(i.e. the space is required). If the ``!'' command below is
added the complains about no ``!'' command would be replaced by