From: Tom Tromey Date: Sat, 25 Dec 2021 05:05:38 +0000 (-0700) Subject: Simplify execute_control_commands_to_string X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=63a8c05f09703cb30ca7e87e6bacf569ec6a472d;p=binutils-gdb.git Simplify execute_control_commands_to_string execute_control_commands_to_string can be rewritten in terms of execute_fn_to_string, which consolidates some knowledge about which streams to redirect. Regression tested on x86-64 Fedora 34. --- diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 1d02d7675db..55248de649b 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -29,6 +29,7 @@ #include "cli/cli-decode.h" #include "cli/cli-script.h" #include "cli/cli-style.h" +#include "gdbcmd.h" #include "extension.h" #include "interps.h" @@ -423,31 +424,14 @@ std::string execute_control_commands_to_string (struct command_line *commands, int from_tty) { - /* GDB_STDOUT should be better already restored during these - restoration callbacks. */ - set_batch_flag_and_restore_page_info save_page_info; + std::string result; - string_file str_file; - - { - current_uiout->redirect (&str_file); - ui_out_redirect_pop redirect_popper (current_uiout); - - scoped_restore save_stdout - = make_scoped_restore (&gdb_stdout, &str_file); - scoped_restore save_stderr - = make_scoped_restore (&gdb_stderr, &str_file); - scoped_restore save_stdlog - = make_scoped_restore (&gdb_stdlog, &str_file); - scoped_restore save_stdtarg - = make_scoped_restore (&gdb_stdtarg, &str_file); - scoped_restore save_stdtargerr - = make_scoped_restore (&gdb_stdtargerr, &str_file); - - execute_control_commands (commands, from_tty); - } + execute_fn_to_string (result, [&] () + { + execute_control_commands (commands, from_tty); + }, false); - return std::move (str_file.string ()); + return result; } void