Use std::string and unique_xmalloc_ptr in demangle_command

Change demangle_command to use std::string and unique_xmalloc_ptr,
removing some cleanups.

ChangeLog
2017-09-03  Tom Tromey  <tom@tromey.com>

	* demangle.c (demangle_command): Use std::string,
	unique_xmalloc_ptr.
This commit is contained in:
Tom Tromey 2017-08-13 23:38:09 -06:00
parent b57af50345
commit 453437863c
2 changed files with 18 additions and 23 deletions

View File

@ -1,3 +1,8 @@
2017-09-03 Tom Tromey <tom@tromey.com>
* demangle.c (demangle_command): Use std::string,
unique_xmalloc_ptr.
2017-09-03 Tom Tromey <tom@tromey.com>
* cli/cli-setshow.c (do_set_command): Use std::string.

View File

@ -161,41 +161,33 @@ is_cplus_marker (int c)
static void
demangle_command (char *args, int from_tty)
{
char *demangled, *name, *lang_name = NULL;
char *arg_buf, *arg_start;
char *demangled;
const char *name;
const char *arg_start;
int processing_args = 1;
const struct language_defn *lang;
struct cleanup *cleanups;
arg_buf = xstrdup (args != NULL ? args : "");
cleanups = make_cleanup (xfree, arg_buf);
arg_start = arg_buf;
std::string arg_buf = args != NULL ? args : "";
arg_start = arg_buf.c_str ();
gdb::unique_xmalloc_ptr<char> lang_name;
while (processing_args
&& *arg_start == '-')
{
char *p = skip_to_space (arg_start);
const char *p = skip_to_space_const (arg_start);
if (strncmp (arg_start, "-l", p - arg_start) == 0)
{
char *lang_name_end;
lang_name = skip_spaces (p);
lang_name_end = skip_to_space (lang_name);
lang_name = savestring (lang_name, lang_name_end - lang_name);
make_cleanup (xfree, lang_name);
p = lang_name_end;
}
lang_name.reset (extract_arg_const (&p));
else if (strncmp (arg_start, "--", p - arg_start) == 0)
processing_args = 0;
else
{
*p = '\0';
gdb::unique_xmalloc_ptr<char> option (extract_arg_const (&p));
error (_("Unrecognized option '%s' to demangle command. "
"Try \"help demangle\"."), arg_start);
"Try \"help demangle\"."), option.get ());
}
arg_start = skip_spaces (p);
arg_start = skip_spaces_const (p);
}
name = arg_start;
@ -207,9 +199,9 @@ demangle_command (char *args, int from_tty)
{
enum language lang_enum;
lang_enum = language_enum (lang_name);
lang_enum = language_enum (lang_name.get ());
if (lang_enum == language_unknown)
error (_("Unknown language \"%s\""), lang_name);
error (_("Unknown language \"%s\""), lang_name.get ());
lang = language_def (lang_enum);
}
else
@ -223,8 +215,6 @@ demangle_command (char *args, int from_tty)
}
else
error (_("Can't demangle \"%s\""), name);
do_cleanups (cleanups);
}
extern initialize_file_ftype _initialize_demangler; /* -Wmissing-prototypes */