From a97e29d248d51bb688cff677def657eb0cf82cca Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 22 Sep 2016 08:41:33 -0600 Subject: [PATCH] Use std::string rather than dyn-string This patch changes some code in cli-cmds.c to use std::string rather than dyn-string, removing some cleanups. Since this was the last use of dyn-string in gdb, this patch also removes make_cleanup_dyn_string_delete. 2016-09-23 Tom Tromey * utils.h (make_cleanup_dyn_string_delete): Remove declaration. * utils.c: Don't include dyn-string.h. (do_dyn_string_delete, make_cleanup_dyn_string_delete): Remove. * cli/cli-cmds.c: Include . Don't include dyn-string.h. (argv_to_string): Rename. Change return type to std::string. (alias_command): Use std::string. --- gdb/ChangeLog | 9 +++++++++ gdb/cli/cli-cmds.c | 41 ++++++++++++++++++----------------------- gdb/utils.c | 13 ------------- gdb/utils.h | 3 --- 4 files changed, 27 insertions(+), 39 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 161da29ed50..fd137927a98 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2016-09-23 Tom Tromey + + * utils.h (make_cleanup_dyn_string_delete): Remove declaration. + * utils.c: Don't include dyn-string.h. + (do_dyn_string_delete, make_cleanup_dyn_string_delete): Remove. + * cli/cli-cmds.c: Include . Don't include dyn-string.h. + (argv_to_string): Rename. Change return type to std::string. + (alias_command): Use std::string. + 2016-09-23 Tom Tromey * objfiles.c: Include . diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 384a33607c5..3d1a62860db 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -19,7 +19,6 @@ #include "defs.h" #include "arch-utils.h" -#include "dyn-string.h" #include "readline/readline.h" #include "readline/tilde.h" #include "completer.h" @@ -57,6 +56,7 @@ #include #include +#include /* Prototypes for local command functions */ @@ -1382,11 +1382,11 @@ apropos_command (char *searchstr, int from_tty) This does not take care of quoting elements in case they contain spaces on purpose. */ -static dyn_string_t -argv_to_dyn_string (char **argv, int n) +static std::string +argv_to_string (char **argv, int n) { int i; - dyn_string_t result = dyn_string_new (10); + std::string result; gdb_assert (argv != NULL); gdb_assert (n >= 0 && n <= countargv (argv)); @@ -1394,8 +1394,8 @@ argv_to_dyn_string (char **argv, int n) for (i = 0; i < n; ++i) { if (i > 0) - dyn_string_append_char (result, ' '); - dyn_string_append_cstr (result, argv[i]); + result += " "; + result += argv[i]; } return result; @@ -1437,9 +1437,9 @@ alias_command (char *args, int from_tty) { int i, alias_argc, command_argc; int abbrev_flag = 0; - char *args2, *equals, *alias, *command; + char *args2, *equals; + const char *alias, *command; char **alias_argv, **command_argv; - dyn_string_t alias_dyn_string, command_dyn_string; struct cleanup *cleanup; if (args == NULL || strchr (args, '=') == NULL) @@ -1491,16 +1491,14 @@ alias_command (char *args, int from_tty) /* COMMAND must exist. Reconstruct the command to remove any extraneous spaces, for better error messages. */ - command_dyn_string = argv_to_dyn_string (command_argv, command_argc); - make_cleanup_dyn_string_delete (command_dyn_string); - command = dyn_string_buf (command_dyn_string); + std::string command_string (argv_to_string (command_argv, command_argc)); + command = command_string.c_str (); if (! valid_command_p (command)) error (_("Invalid command to alias to: %s"), command); /* ALIAS must not exist. */ - alias_dyn_string = argv_to_dyn_string (alias_argv, alias_argc); - make_cleanup_dyn_string_delete (alias_dyn_string); - alias = dyn_string_buf (alias_dyn_string); + std::string alias_string (argv_to_string (alias_argv, alias_argc)); + alias = alias_string.c_str (); if (valid_command_p (alias)) error (_("Alias already exists: %s"), alias); @@ -1521,7 +1519,6 @@ alias_command (char *args, int from_tty) } else { - dyn_string_t alias_prefix_dyn_string, command_prefix_dyn_string; const char *alias_prefix, *command_prefix; struct cmd_list_element *c_alias, *c_command; @@ -1530,14 +1527,12 @@ alias_command (char *args, int from_tty) /* Create copies of ALIAS and COMMAND without the last word, and use that to verify the leading elements match. */ - alias_prefix_dyn_string = - argv_to_dyn_string (alias_argv, alias_argc - 1); - make_cleanup_dyn_string_delete (alias_prefix_dyn_string); - command_prefix_dyn_string = - argv_to_dyn_string (alias_argv, command_argc - 1); - make_cleanup_dyn_string_delete (command_prefix_dyn_string); - alias_prefix = dyn_string_buf (alias_prefix_dyn_string); - command_prefix = dyn_string_buf (command_prefix_dyn_string); + std::string alias_prefix_string (argv_to_string (alias_argv, + alias_argc - 1)); + std::string command_prefix_string (argv_to_string (alias_argv, + command_argc - 1)); + alias_prefix = alias_prefix_string.c_str (); + command_prefix = command_prefix_string.c_str (); c_command = lookup_cmd_1 (& command_prefix, cmdlist, NULL, 1); /* We've already tried to look up COMMAND. */ diff --git a/gdb/utils.c b/gdb/utils.c index 5bb0b67d1c4..9a83053c200 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -18,7 +18,6 @@ along with this program. If not, see . */ #include "defs.h" -#include "dyn-string.h" #include #include "gdb_wait.h" #include "event-top.h" @@ -154,18 +153,6 @@ make_cleanup_freeargv (char **arg) return make_cleanup (do_freeargv, arg); } -static void -do_dyn_string_delete (void *arg) -{ - dyn_string_delete ((dyn_string_t) arg); -} - -struct cleanup * -make_cleanup_dyn_string_delete (dyn_string_t arg) -{ - return make_cleanup (do_dyn_string_delete, arg); -} - static void do_bfd_close_cleanup (void *arg) { diff --git a/gdb/utils.h b/gdb/utils.h index bf77d7daba0..86350750a24 100644 --- a/gdb/utils.h +++ b/gdb/utils.h @@ -64,9 +64,6 @@ char **gdb_buildargv (const char *); extern struct cleanup *make_cleanup_freeargv (char **); -struct dyn_string; -extern struct cleanup *make_cleanup_dyn_string_delete (struct dyn_string *); - struct ui_file; extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *); -- 2.30.2