Use ui_file_as_string in execute_command_to_string
... and then return std::string and adjust all callers. gdb/ChangeLog: 2016-11-08 Pedro Alves <palves@redhat.com> * gdbcmd.h (execute_command_to_string): Now returns std::string. (lookup_struct_elt_type): Adjust to use std::string. * top.c (execute_command_to_string): Use ui_file_as_string and return std::string. * guile/guile.c (gdbscm_execute_gdb_command): Adjust to use std::string. * python/python.c (execute_gdb_command): Adjust to use std::string.
This commit is contained in:
parent
3ab692db7f
commit
db1ec11fff
5 changed files with 26 additions and 29 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2016-11-08 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* gdbcmd.h (execute_command_to_string): Now returns std::string.
|
||||||
|
(lookup_struct_elt_type): Adjust to use std::string.
|
||||||
|
* top.c (execute_command_to_string): Use ui_file_as_string and
|
||||||
|
return std::string.
|
||||||
|
* guile/guile.c (gdbscm_execute_gdb_command): Adjust to use
|
||||||
|
std::string.
|
||||||
|
* python/python.c (execute_gdb_command): Adjust to use
|
||||||
|
std::string.
|
||||||
|
|
||||||
2016-11-08 Pedro Alves <palves@redhat.com>
|
2016-11-08 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
|
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
|
||||||
|
|
|
@ -128,7 +128,7 @@ extern struct cmd_list_element *showchecklist;
|
||||||
extern struct cmd_list_element *save_cmdlist;
|
extern struct cmd_list_element *save_cmdlist;
|
||||||
|
|
||||||
extern void execute_command (char *, int);
|
extern void execute_command (char *, int);
|
||||||
extern char *execute_command_to_string (char *p, int from_tty);
|
extern std::string execute_command_to_string (char *p, int from_tty);
|
||||||
|
|
||||||
enum command_control_type execute_control_command (struct command_line *);
|
enum command_control_type execute_control_command (struct command_line *);
|
||||||
|
|
||||||
|
|
|
@ -311,7 +311,6 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
|
||||||
int from_tty = 0, to_string = 0;
|
int from_tty = 0, to_string = 0;
|
||||||
const SCM keywords[] = { from_tty_keyword, to_string_keyword, SCM_BOOL_F };
|
const SCM keywords[] = { from_tty_keyword, to_string_keyword, SCM_BOOL_F };
|
||||||
char *command;
|
char *command;
|
||||||
char *result = NULL;
|
|
||||||
struct cleanup *cleanups;
|
struct cleanup *cleanups;
|
||||||
struct gdb_exception except = exception_none;
|
struct gdb_exception except = exception_none;
|
||||||
|
|
||||||
|
@ -324,6 +323,8 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
|
||||||
executed. */
|
executed. */
|
||||||
cleanups = make_cleanup (xfree, command);
|
cleanups = make_cleanup (xfree, command);
|
||||||
|
|
||||||
|
std::string to_string_res;
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
{
|
{
|
||||||
struct cleanup *inner_cleanups;
|
struct cleanup *inner_cleanups;
|
||||||
|
@ -333,12 +334,9 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
|
||||||
|
|
||||||
prevent_dont_repeat ();
|
prevent_dont_repeat ();
|
||||||
if (to_string)
|
if (to_string)
|
||||||
result = execute_command_to_string (command, from_tty);
|
to_string_res = execute_command_to_string (command, from_tty);
|
||||||
else
|
else
|
||||||
{
|
execute_command (command, from_tty);
|
||||||
execute_command (command, from_tty);
|
|
||||||
result = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Do any commands attached to breakpoint we stopped at. */
|
/* Do any commands attached to breakpoint we stopped at. */
|
||||||
bpstat_do_actions ();
|
bpstat_do_actions ();
|
||||||
|
@ -354,12 +352,8 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
|
||||||
do_cleanups (cleanups);
|
do_cleanups (cleanups);
|
||||||
GDBSCM_HANDLE_GDB_EXCEPTION (except);
|
GDBSCM_HANDLE_GDB_EXCEPTION (except);
|
||||||
|
|
||||||
if (result)
|
if (to_string)
|
||||||
{
|
return gdbscm_scm_from_c_string (to_string_res.c_str ());
|
||||||
SCM r = gdbscm_scm_from_c_string (result);
|
|
||||||
xfree (result);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -614,7 +614,6 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
||||||
PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
|
PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
|
||||||
int from_tty, to_string;
|
int from_tty, to_string;
|
||||||
static char *keywords[] = {"command", "from_tty", "to_string", NULL };
|
static char *keywords[] = {"command", "from_tty", "to_string", NULL };
|
||||||
char *result = NULL;
|
|
||||||
|
|
||||||
if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
|
if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
|
||||||
&PyBool_Type, &from_tty_obj,
|
&PyBool_Type, &from_tty_obj,
|
||||||
|
@ -639,6 +638,8 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
||||||
to_string = cmp;
|
to_string = cmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string to_string_res;
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
{
|
{
|
||||||
/* Copy the argument text in case the command modifies it. */
|
/* Copy the argument text in case the command modifies it. */
|
||||||
|
@ -657,13 +658,9 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
||||||
|
|
||||||
prevent_dont_repeat ();
|
prevent_dont_repeat ();
|
||||||
if (to_string)
|
if (to_string)
|
||||||
result = execute_command_to_string (copy, from_tty);
|
to_string_res = execute_command_to_string (copy, from_tty);
|
||||||
else
|
else
|
||||||
{
|
execute_command (copy, from_tty);
|
||||||
result = NULL;
|
|
||||||
execute_command (copy, from_tty);
|
|
||||||
}
|
|
||||||
|
|
||||||
do_cleanups (cleanup);
|
do_cleanups (cleanup);
|
||||||
}
|
}
|
||||||
CATCH (except, RETURN_MASK_ALL)
|
CATCH (except, RETURN_MASK_ALL)
|
||||||
|
@ -675,12 +672,8 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
||||||
/* Do any commands attached to breakpoint we stopped at. */
|
/* Do any commands attached to breakpoint we stopped at. */
|
||||||
bpstat_do_actions ();
|
bpstat_do_actions ();
|
||||||
|
|
||||||
if (result)
|
if (to_string)
|
||||||
{
|
return PyString_FromString (to_string_res.c_str ());
|
||||||
PyObject *r = PyString_FromString (result);
|
|
||||||
xfree (result);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -690,12 +690,11 @@ execute_command (char *p, int from_tty)
|
||||||
returned string, do not display it to the screen. BATCH_FLAG will be
|
returned string, do not display it to the screen. BATCH_FLAG will be
|
||||||
temporarily set to true. */
|
temporarily set to true. */
|
||||||
|
|
||||||
char *
|
std::string
|
||||||
execute_command_to_string (char *p, int from_tty)
|
execute_command_to_string (char *p, int from_tty)
|
||||||
{
|
{
|
||||||
struct ui_file *str_file;
|
struct ui_file *str_file;
|
||||||
struct cleanup *cleanup;
|
struct cleanup *cleanup;
|
||||||
char *retval;
|
|
||||||
|
|
||||||
/* GDB_STDOUT should be better already restored during these
|
/* GDB_STDOUT should be better already restored during these
|
||||||
restoration callbacks. */
|
restoration callbacks. */
|
||||||
|
@ -725,7 +724,7 @@ execute_command_to_string (char *p, int from_tty)
|
||||||
|
|
||||||
execute_command (p, from_tty);
|
execute_command (p, from_tty);
|
||||||
|
|
||||||
retval = ui_file_xstrdup (str_file, NULL);
|
std::string retval = ui_file_as_string (str_file);
|
||||||
|
|
||||||
do_cleanups (cleanup);
|
do_cleanups (cleanup);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue