diff options
author | Tom Tromey <tom@tromey.com> | 2017-10-15 08:36:51 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-11-07 13:59:09 -0700 |
commit | 95a6b0a106fac6ea35670421534d461a3663c0ba (patch) | |
tree | d96a5ad0377d41da2c47fa8707a74406e4e10ebe /gdb/top.c | |
parent | eb4c3f4aaae2ee1b27c210e951260a7e699133b4 (diff) | |
download | gdb-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.c | 30 |
1 files changed, 19 insertions, 11 deletions
@@ -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. */ |