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  <tom@tromey.com>

	* 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 <string>.  Don't include dyn-string.h.
	(argv_to_string): Rename.  Change return type to std::string.
	(alias_command): Use std::string.
This commit is contained in:
Tom Tromey 2016-09-22 08:41:33 -06:00
parent cfe826d45e
commit a97e29d248
4 changed files with 27 additions and 39 deletions

View File

@ -1,3 +1,12 @@
2016-09-23 Tom Tromey <tom@tromey.com>
* 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 <string>. 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 <tom@tromey.com>
* objfiles.c: Include <vector>.

View File

@ -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 <fcntl.h>
#include <algorithm>
#include <string>
/* 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. */

View File

@ -18,7 +18,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "dyn-string.h"
#include <ctype.h>
#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)
{

View File

@ -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 *);