From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: [FYI v2 5/5] Use std::string rather than dyn-string
Date: Fri, 23 Sep 2016 19:53:00 -0000 [thread overview]
Message-ID: <1474660382-14294-6-git-send-email-tom@tromey.com> (raw)
In-Reply-To: <1474660382-14294-1-git-send-email-tom@tromey.com>
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.
---
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 161da29..fd13792 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
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>.
(objfile_relocate): Use std::vector.
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 384a336..3d1a628 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 <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. */
diff --git a/gdb/utils.c b/gdb/utils.c
index 5bb0b67..9a83053 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -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"
@@ -155,18 +154,6 @@ make_cleanup_freeargv (char **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)
{
gdb_bfd_unref ((bfd *) arg);
diff --git a/gdb/utils.h b/gdb/utils.h
index bf77d7d..8635075 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.7.4
next prev parent reply other threads:[~2016-09-23 19:53 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-23 19:53 [FYI v2 0/5] Some random C++-ification Tom Tromey
2016-09-23 19:53 ` [FYI v2 4/5] Use std::vector in objfiles.c Tom Tromey
2016-09-23 19:53 ` [FYI v2 2/5] Use std::string in cp-namespace.c Tom Tromey
2016-09-23 19:53 ` Tom Tromey [this message]
2016-09-23 19:53 ` [FYI v2 3/5] Use std::string, std::vector in rust-lang.c Tom Tromey
2016-09-24 20:13 ` [FYI v2 1/5] Use std::string in break-catch-sig.c Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1474660382-14294-6-git-send-email-tom@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).