aboutsummaryrefslogtreecommitdiff
path: root/gdb/top.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-10-15 08:36:51 -0600
committerTom Tromey <tom@tromey.com>2017-11-07 13:59:09 -0700
commit95a6b0a106fac6ea35670421534d461a3663c0ba (patch)
treed96a5ad0377d41da2c47fa8707a74406e4e10ebe /gdb/top.c
parenteb4c3f4aaae2ee1b27c210e951260a7e699133b4 (diff)
downloadgdb-95a6b0a106fac6ea35670421534d461a3663c0ba.zip
gdb-95a6b0a106fac6ea35670421534d461a3663c0ba.tar.gz
gdb-95a6b0a106fac6ea35670421534d461a3663c0ba.tar.bz2
Constify execute_command
This constifies execute_command and fixes up the callers. gdb/ChangeLog 2017-11-07 Tom Tromey <tom@tromey.com> * event-top.h (command_handler): Constify. * record-full.c (cmd_record_full_start): Update. * thread.c (thread_apply_all_command): Update. * printcmd.c (eval_command): Update. * mi/mi-main.c (mi_execute_cli_command): Update. (mi_execute_async_cli_command): Update. * tui/tui-stack.c (tui_update_command): Update. * cli/cli-interp.c (safe_execute_command): Constify. * record.c (record_start): Update. (record_start, record_stop, cmd_record_start): Update. * record-btrace.c (cmd_record_btrace_bts_start): Update. (cmd_record_btrace_pt_start): Update. (cmd_record_btrace_start): Update. (cmd_record_btrace_start): Update. * reverse.c (exec_reverse_once): Update. * python/python.c (execute_gdb_command): Don't copy the command. * event-top.c (command_line_handler): Update. (command_handler): Constify. * defs.h (deprecated_call_command_hook): Constify. * cli/cli-script.h (execute_user_command): Constify. * cli/cli-script.c (execute_user_command): Constify. (execute_cmd_pre_hook, execute_cmd_post_hook): Constify. (enum command_control_type): Update. * main.c (catch_command_errors): Remove non-const overload. (catch_command_errors_ftype): Remove. * python/py-cmd.c (cmdpy_function): Constify. * guile/scm-cmd.c (cmdscm_function): Constify. * cli/cli-dump.c (call_dump_func): Constify. * cli/cli-decode.c (do_const_cfunc): Constify. (do_sfunc): Constify. (cmd_func): Constify. * gdbcmd.h (execute_command, execute_command_to_string): Constify. * top.h (execute_command): Constify. * top.c (execute_command): Constify. (execute_command_to_string): Constify. (deprecated_call_command_hook): Constify. * command.h (cmd_func): Constify. * cli/cli-decode.h (struct cmd_list_element) <func>: Constify.
Diffstat (limited to 'gdb/top.c')
-rw-r--r--gdb/top.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/gdb/top.c b/gdb/top.c
index 63e61e7..8cd7c99 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -237,7 +237,7 @@ ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
things like enabling/disabling buttons, etc... */
void (*deprecated_call_command_hook) (struct cmd_list_element * c,
- char *cmd, int from_tty);
+ const char *cmd, int from_tty);
/* Called when the current thread changes. Argument is thread id. */
@@ -539,11 +539,12 @@ set_repeat_arguments (const char *args)
Pass FROM_TTY as second argument to the defining function. */
void
-execute_command (char *p, int from_tty)
+execute_command (const char *p, int from_tty)
{
struct cleanup *cleanup_if_error;
struct cmd_list_element *c;
- char *line;
+ const char *line;
+ const char *cmd_start = p;
cleanup_if_error = make_bpstat_clear_actions_cleanup ();
scoped_value_mark cleanup = prepare_execute_command ();
@@ -566,7 +567,7 @@ execute_command (char *p, int from_tty)
if (*p)
{
const char *cmd = p;
- char *arg;
+ const char *arg;
int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
line = p;
@@ -575,11 +576,11 @@ execute_command (char *p, int from_tty)
print_command_trace (p);
c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
- p = (char *) cmd;
+ p = cmd;
scoped_restore save_repeat_args
= make_scoped_restore (&repeat_arguments, nullptr);
- char *args_pointer = p;
+ const char *args_pointer = p;
/* Pass null arg rather than an empty one. */
arg = *p ? p : 0;
@@ -594,14 +595,20 @@ execute_command (char *p, int from_tty)
is_complete_command hack is testing for. */
/* Clear off trailing whitespace, except for set and complete
command. */
+ std::string without_whitespace;
if (arg
&& c->type != set_cmd
&& !is_complete_command (c))
{
- p = arg + strlen (arg) - 1;
+ const char *old_end = arg + strlen (arg) - 1;
+ p = old_end;
while (p >= arg && (*p == ' ' || *p == '\t'))
p--;
- *(p + 1) = '\0';
+ if (p != old_end)
+ {
+ without_whitespace = std::string (arg, p + 1);
+ arg = without_whitespace.c_str ();
+ }
}
/* If this command has been pre-hooked, run the hook first. */
@@ -629,10 +636,11 @@ execute_command (char *p, int from_tty)
/* If this command has been post-hooked, run the hook last. */
execute_cmd_post_hook (c);
- if (repeat_arguments != NULL)
+ if (repeat_arguments != NULL && cmd_start == saved_command_line)
{
gdb_assert (strlen (args_pointer) >= strlen (repeat_arguments));
- strcpy (args_pointer, repeat_arguments);
+ strcpy (saved_command_line + (args_pointer - cmd_start),
+ repeat_arguments);
}
}
@@ -646,7 +654,7 @@ execute_command (char *p, int from_tty)
temporarily set to true. */
std::string
-execute_command_to_string (char *p, int from_tty)
+execute_command_to_string (const char *p, int from_tty)
{
/* GDB_STDOUT should be better already restored during these
restoration callbacks. */