Use target_terminal_ours_for_output in warning/internal_error
authorPedro Alves <palves@redhat.com>
Tue, 12 Apr 2016 15:49:31 +0000 (16:49 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 12 Apr 2016 15:59:13 +0000 (16:59 +0100)
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  <palves@redhat.com>

* utils.c (vwarning, internal_vproblem): Use
make_cleanup_restore_target_terminal and
target_terminal_ours_for_output.

gdb/ChangeLog
gdb/utils.c

index 0de7a6d..595a43c 100644 (file)
@@ -1,5 +1,11 @@
 2016-04-12  Pedro Alves  <palves@redhat.com>
 
+       * utils.c (vwarning, internal_vproblem): Use
+       make_cleanup_restore_target_terminal and
+       target_terminal_ours_for_output.
+
+2016-04-12  Pedro Alves  <palves@redhat.com>
+
        * infcmd.c (post_create_inferior, prepare_one_step): Use
        target_terminal_ours_for_output instead of target_terminal_ours.
 
index 3c7a29c..e44e76c 100644 (file)
@@ -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 ();