This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Use ui_file_as_string in execute_command_to_string


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=db1ec11fff1a46f7046bcbd971a42632d2ea795c

commit db1ec11fff1a46f7046bcbd971a42632d2ea795c
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Nov 8 15:26:45 2016 +0000

    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.

Diff:
---
 gdb/ChangeLog       | 11 +++++++++++
 gdb/gdbcmd.h        |  2 +-
 gdb/guile/guile.c   | 18 ++++++------------
 gdb/python/python.c | 19 ++++++-------------
 gdb/top.c           |  5 ++---
 5 files changed, 26 insertions(+), 29 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f88e505..68f8cf0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,16 @@
 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>
+
 	* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
 	ui_file_as_string and adjust to use std::string.
 	* guile/scm-disasm.c (gdbscm_arch_disassemble): Likewise.
diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
index 512b72c..6db49e2 100644
--- a/gdb/gdbcmd.h
+++ b/gdb/gdbcmd.h
@@ -128,7 +128,7 @@ extern struct cmd_list_element *showchecklist;
 extern struct cmd_list_element *save_cmdlist;
 
 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 *);
 
diff --git a/gdb/guile/guile.c b/gdb/guile/guile.c
index 3a19eec..9a126a1 100644
--- a/gdb/guile/guile.c
+++ b/gdb/guile/guile.c
@@ -311,7 +311,6 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
   int from_tty = 0, to_string = 0;
   const SCM keywords[] = { from_tty_keyword, to_string_keyword, SCM_BOOL_F };
   char *command;
-  char *result = NULL;
   struct cleanup *cleanups;
   struct gdb_exception except = exception_none;
 
@@ -324,6 +323,8 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
      executed.  */
   cleanups = make_cleanup (xfree, command);
 
+  std::string to_string_res;
+
   TRY
     {
       struct cleanup *inner_cleanups;
@@ -333,12 +334,9 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
 
       prevent_dont_repeat ();
       if (to_string)
-	result = execute_command_to_string (command, from_tty);
+	to_string_res = execute_command_to_string (command, from_tty);
       else
-	{
-	  execute_command (command, from_tty);
-	  result = NULL;
-	}
+	execute_command (command, from_tty);
 
       /* Do any commands attached to breakpoint we stopped at.  */
       bpstat_do_actions ();
@@ -354,12 +352,8 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
   do_cleanups (cleanups);
   GDBSCM_HANDLE_GDB_EXCEPTION (except);
 
-  if (result)
-    {
-      SCM r = gdbscm_scm_from_c_string (result);
-      xfree (result);
-      return r;
-    }
+  if (to_string)
+    return gdbscm_scm_from_c_string (to_string_res.c_str ());
   return SCM_UNSPECIFIED;
 }
 
diff --git a/gdb/python/python.c b/gdb/python/python.c
index d6bd6bf..d9940c2 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -614,7 +614,6 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
   PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
   int from_tty, to_string;
   static char *keywords[] = {"command", "from_tty", "to_string", NULL };
-  char *result = NULL;
 
   if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
 				     &PyBool_Type, &from_tty_obj,
@@ -639,6 +638,8 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
       to_string = cmp;
     }
 
+  std::string to_string_res;
+
   TRY
     {
       /* 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 ();
       if (to_string)
-	result = execute_command_to_string (copy, from_tty);
+	to_string_res = execute_command_to_string (copy, from_tty);
       else
-	{
-	  result = NULL;
-	  execute_command (copy, from_tty);
-	}
-
+	execute_command (copy, from_tty);
       do_cleanups (cleanup);
     }
   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.  */
   bpstat_do_actions ();
 
-  if (result)
-    {
-      PyObject *r = PyString_FromString (result);
-      xfree (result);
-      return r;
-    }
+  if (to_string)
+    return PyString_FromString (to_string_res.c_str ());
   Py_RETURN_NONE;
 }
 
diff --git a/gdb/top.c b/gdb/top.c
index c7a9c21..504a4de 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -690,12 +690,11 @@ execute_command (char *p, int from_tty)
    returned string, do not display it to the screen.  BATCH_FLAG will be
    temporarily set to true.  */
 
-char *
+std::string
 execute_command_to_string (char *p, int from_tty)
 {
   struct ui_file *str_file;
   struct cleanup *cleanup;
-  char *retval;
 
   /* GDB_STDOUT should be better already restored during these
      restoration callbacks.  */
@@ -725,7 +724,7 @@ execute_command_to_string (char *p, int 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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]