From bbaca940ebb8624260af6a0569b57cf4d32cf8c9 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Sat, 23 Feb 2002 20:12:13 +0000 Subject: [PATCH] * cli/cli-decode.c (cmd_cfunc_eq): New function. * command.h (cmd_cfunc_eq): Declare. * cli/cli-decode.h (cmd_cfunc_eq): Ditto. * cli/cli-cmds.h (is_complete_command): Change parameter to a ``struct cmd_list_element *''. * cli/cli-cmds.c (is_complete_command): Update. Use cmd_cfunc_eq. * top.c (execute_command): Pass the command to is_complete_command. * tracepoint.c: Replace function.cfunc with cmd_cfunc_eq. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/cli/cli-cmds.c | 5 +++-- gdb/cli/cli-cmds.h | 2 +- gdb/cli/cli-decode.c | 7 +++++++ gdb/cli/cli-decode.h | 4 ++++ gdb/command.h | 4 ++++ gdb/top.c | 2 +- gdb/tracepoint.c | 22 +++++++++++----------- 8 files changed, 45 insertions(+), 15 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 10226fa9de5..31b2d176c27 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2002-02-23 Andrew Cagney + + * cli/cli-decode.c (cmd_cfunc_eq): New function. + * command.h (cmd_cfunc_eq): Declare. + * cli/cli-decode.h (cmd_cfunc_eq): Ditto. + + * cli/cli-cmds.h (is_complete_command): Change parameter to a + ``struct cmd_list_element *''. + * cli/cli-cmds.c (is_complete_command): Update. Use + cmd_cfunc_eq. + * top.c (execute_command): Pass the command to + is_complete_command. + * tracepoint.c: Replace function.cfunc with cmd_cfunc_eq. + 2002-02-23 Andrew Cagney From 2002-02-20 Martin Schwidefsky : diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 9d9d9ceb650..16cc9890437 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -259,9 +259,10 @@ complete_command (char *arg, int from_tty) } } -int is_complete_command (void (*func) (char *args, int from_tty)) +int +is_complete_command (struct cmd_list_element *c) { - return func == complete_command; + return cmd_cfunc_eq (c, complete_command); } /* ARGSUSED */ diff --git a/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h index d1515cd44cd..a6e574edd71 100644 --- a/gdb/cli/cli-cmds.h +++ b/gdb/cli/cli-cmds.h @@ -105,7 +105,7 @@ void init_cmd_lists (void); void init_cli_cmds (void); -int is_complete_command (void (*func) (char *args, int from_tty)); +int is_complete_command (struct cmd_list_element *cmd); /* Exported to gdb/main.c */ diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index d64b2f64290..a13b7b8eecd 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -79,6 +79,13 @@ set_cmd_sfunc (struct cmd_list_element *cmd, cmd->function.sfunc = sfunc; /* Ok. */ } +int +cmd_cfunc_eq (struct cmd_list_element *cmd, + void (*cfunc) (char *args, int from_tty)) +{ + return cmd->func == do_cfunc && cmd->function.cfunc == cfunc; +} + /* Add element named NAME. CLASS is the top level category into which commands are broken down diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h index 6c7c22b8ac7..e4b7c5566ad 100644 --- a/gdb/cli/cli-decode.h +++ b/gdb/cli/cli-decode.h @@ -286,6 +286,10 @@ extern void set_cmd_sfunc (struct cmd_list_element *cmd, void (*sfunc) (char *args, int from_tty, struct cmd_list_element * c)); +/* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs + around in cmd objects to test the value of the commands sfunc(). */ +extern int cmd_cfunc_eq (struct cmd_list_element *cmd, + void (*cfunc) (char *args, int from_tty)); extern struct cmd_list_element *lookup_cmd (char **, struct cmd_list_element *, char *, diff --git a/gdb/command.h b/gdb/command.h index c7d7b5eeaaf..9037b2e0d01 100644 --- a/gdb/command.h +++ b/gdb/command.h @@ -292,6 +292,10 @@ extern void set_cmd_sfunc (struct cmd_list_element *cmd, void (*sfunc) (char *args, int from_tty, struct cmd_list_element * c)); +/* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs + around in cmd objects to test the value of the commands sfunc(). */ +extern int cmd_cfunc_eq (struct cmd_list_element *cmd, + void (*cfunc) (char *args, int from_tty)); extern struct cmd_list_element *lookup_cmd (char **, struct cmd_list_element *, char *, diff --git a/gdb/top.c b/gdb/top.c index daa89c27017..972a5578f8f 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -684,7 +684,7 @@ execute_command (char *p, int from_tty) command. */ if (arg && c->type != set_cmd - && !is_complete_command (c->function.cfunc)) + && !is_complete_command (c)) { p = arg + strlen (arg) - 1; while (p >= arg && (*p == ' ' || *p == '\t')) diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 1eb01ccb542..860b483ac43 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -939,7 +939,7 @@ validate_actionline (char **line, struct tracepoint *t) return BADLINE; } - if (c->function.cfunc == collect_pseudocommand) + if (cmd_cfunc_eq (c, collect_pseudocommand)) { struct agent_expr *aexpr; struct agent_reqs areqs; @@ -1006,7 +1006,7 @@ validate_actionline (char **line, struct tracepoint *t) while (p && *p++ == ','); return GENERIC; } - else if (c->function.cfunc == while_stepping_pseudocommand) + else if (cmd_cfunc_eq (c, while_stepping_pseudocommand)) { char *steparg; /* in case warning is necessary */ @@ -1022,7 +1022,7 @@ validate_actionline (char **line, struct tracepoint *t) } return STEPPING; } - else if (c->function.cfunc == end_actions_pseudocommand) + else if (cmd_cfunc_eq (c, end_actions_pseudocommand)) return END; else { @@ -1520,7 +1520,7 @@ encode_actions (struct tracepoint *t, char ***tdp_actions, if (cmd == 0) error ("Bad action list item: %s", action_exp); - if (cmd->function.cfunc == collect_pseudocommand) + if (cmd_cfunc_eq (cmd, collect_pseudocommand)) { do { /* repeat over a comma-separated list */ @@ -1630,11 +1630,11 @@ encode_actions (struct tracepoint *t, char ***tdp_actions, } while (action_exp && *action_exp++ == ','); } /* if */ - else if (cmd->function.cfunc == while_stepping_pseudocommand) + else if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) { collect = &stepping_list; } - else if (cmd->function.cfunc == end_actions_pseudocommand) + else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand)) { if (collect == &stepping_list) /* end stepping actions */ collect = &tracepoint_list; @@ -2315,9 +2315,9 @@ tracepoint_save_command (char *args, int from_tty) cmd = lookup_cmd (&actionline, cmdlist, "", -1, 1); if (cmd == 0) error ("Bad action list item: %s", actionline); - if (cmd->function.cfunc == while_stepping_pseudocommand) + if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) indent = i2; - else if (cmd->function.cfunc == end_actions_pseudocommand) + else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand)) indent = i1; } } @@ -2534,11 +2534,11 @@ trace_dump_command (char *args, int from_tty) if (cmd == 0) error ("Bad action list item: %s", action_exp); - if (cmd->function.cfunc == while_stepping_pseudocommand) + if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) stepping_actions = 1; - else if (cmd->function.cfunc == end_actions_pseudocommand) + else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand)) stepping_actions = 0; - else if (cmd->function.cfunc == collect_pseudocommand) + else if (cmd_cfunc_eq (cmd, collect_pseudocommand)) { /* Display the collected data. For the trap frame, display only what was collected at the trap.