From: Pedro Alves Date: Tue, 12 Apr 2016 15:49:31 +0000 (+0100) Subject: Use target_terminal_ours_for_output in warning/internal_error X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c5ac15402a894e87a118526a066880f596b3c78d;p=binutils-gdb.git Use target_terminal_ours_for_output in warning/internal_error We're only doing output here, so leave raw/cooked mode alone, as well as the SIGINT handler. And restore terminal settings, while at it. gdb/ChangeLog: 2016-04-12 Pedro Alves * utils.c (vwarning, internal_vproblem): Use make_cleanup_restore_target_terminal and target_terminal_ours_for_output. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0de7a6db9d8..595a43c82ee 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2016-04-12 Pedro Alves + + * utils.c (vwarning, internal_vproblem): Use + make_cleanup_restore_target_terminal and + target_terminal_ours_for_output. + 2016-04-12 Pedro Alves * infcmd.c (post_create_inferior, prepare_one_step): Use diff --git a/gdb/utils.c b/gdb/utils.c index 3c7a29cbb8b..e44e76cabb2 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -532,8 +532,13 @@ vwarning (const char *string, va_list args) (*deprecated_warning_hook) (string, args); else { + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); + if (target_supports_terminal_ours ()) - target_terminal_ours (); + { + make_cleanup_restore_target_terminal (); + target_terminal_ours_for_output (); + } if (filtered_printing_initialized ()) wrap_here (""); /* Force out any buffered output. */ gdb_flush (gdb_stdout); @@ -541,6 +546,8 @@ vwarning (const char *string, va_list args) fputs_unfiltered (warning_pre_print, gdb_stderr); vfprintf_unfiltered (gdb_stderr, string, args); fprintf_unfiltered (gdb_stderr, "\n"); + + do_cleanups (old_chain); } } @@ -738,7 +745,10 @@ internal_vproblem (struct internal_problem *problem, /* Try to get the message out and at the start of a new line. */ if (target_supports_terminal_ours ()) - target_terminal_ours (); + { + make_cleanup_restore_target_terminal (); + target_terminal_ours_for_output (); + } if (filtered_printing_initialized ()) begin_line ();