From b8fd091888383703f5d708c597c496d7b9e47a21 Mon Sep 17 00:00:00 2001 From: Philippe Waroquiers Date: Fri, 26 Apr 2019 20:52:16 +0200 Subject: [PATCH] Add function execute_command_to_ui_file 2019-05-31 Philippe Waroquiers * gdbcmd.h (execute_command_to_ui_file): New declaration. top.c (execute_command_to_ui_file): New function, mostly a copy of execute_command_to_string. (execute_command_to_string): Implement by calling execute_command_to_ui_file. --- gdb/ChangeLog | 8 ++++++++ gdb/gdbcmd.h | 2 ++ gdb/top.c | 35 ++++++++++++++++++++++------------- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index eb2d0f41ce..fbd6bb23ce 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2019-05-31 Philippe Waroquiers + + * gdbcmd.h (execute_command_to_ui_file): New declaration. + top.c (execute_command_to_ui_file): New function, mostly a copy + of execute_command_to_string. + (execute_command_to_string): Implement by calling + execute_command_to_ui_file. + 2019-05-31 Philippe Waroquiers * top.h (saved_command_line): Remove declaration. diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h index 5d0e697d83..1b47719f18 100644 --- a/gdb/gdbcmd.h +++ b/gdb/gdbcmd.h @@ -139,6 +139,8 @@ extern void execute_command (const char *, int); as cli_styling. */ extern std::string execute_command_to_string (const char *p, int from_tty, bool term_out); +extern void execute_command_to_ui_file (struct ui_file *file, + const char *p, int from_tty); extern void print_command_line (struct command_line *, unsigned int, struct ui_file *); diff --git a/gdb/top.c b/gdb/top.c index 518c5ebb5f..4f55d6af1e 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -665,13 +665,12 @@ execute_command (const char *p, int from_tty) cleanup_if_error.release (); } -/* Run execute_command for P and FROM_TTY. Capture its output into the - returned string, do not display it to the screen. BATCH_FLAG will be +/* Run execute_command for P and FROM_TTY. Sends its output to FILE, + do not display it to the screen. BATCH_FLAG will be temporarily set to true. */ -std::string -execute_command_to_string (const char *p, int from_tty, - bool term_out) +void +execute_command_to_ui_file (struct ui_file *file, const char *p, int from_tty) { /* GDB_STDOUT should be better already restored during these restoration callbacks. */ @@ -679,26 +678,36 @@ execute_command_to_string (const char *p, int from_tty, scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0); - string_file str_file (term_out); - { - current_uiout->redirect (&str_file); + current_uiout->redirect (file); ui_out_redirect_pop redirect_popper (current_uiout); scoped_restore save_stdout - = make_scoped_restore (&gdb_stdout, &str_file); + = make_scoped_restore (&gdb_stdout, file); scoped_restore save_stderr - = make_scoped_restore (&gdb_stderr, &str_file); + = make_scoped_restore (&gdb_stderr, file); scoped_restore save_stdlog - = make_scoped_restore (&gdb_stdlog, &str_file); + = make_scoped_restore (&gdb_stdlog, file); scoped_restore save_stdtarg - = make_scoped_restore (&gdb_stdtarg, &str_file); + = make_scoped_restore (&gdb_stdtarg, file); scoped_restore save_stdtargerr - = make_scoped_restore (&gdb_stdtargerr, &str_file); + = make_scoped_restore (&gdb_stdtargerr, file); execute_command (p, from_tty); } +} + +/* Run execute_command for P and FROM_TTY. Capture its output into the + returned string, do not display it to the screen. BATCH_FLAG will be + temporarily set to true. */ + +std::string +execute_command_to_string (const char *p, int from_tty, + bool term_out) +{ + string_file str_file (term_out); + execute_command_to_ui_file (&str_file, p, from_tty); return std::move (str_file.string ()); } -- 2.34.1