Merge async and sync code paths some more
[deliverable/binutils-gdb.git] / gdb / mi / mi-console.c
index 102b8bee493a0776c71533bde0bf1fd470fe64c5..257f452a28f3a3b9a7d828f6b2c5a4c8d961cfd3 100644 (file)
@@ -1,6 +1,6 @@
 /* MI Console code.
 
-   Copyright (C) 2000-2002, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2015 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
@@ -26,8 +26,6 @@
 
 #include "defs.h"
 #include "mi-console.h"
-#include "gdb_string.h"
-
 static ui_file_fputs_ftype mi_console_file_fputs;
 static ui_file_flush_ftype mi_console_file_flush;
 static ui_file_delete_ftype mi_console_file_delete;
@@ -52,7 +50,7 @@ struct ui_file *
 mi_console_file_new (struct ui_file *raw, const char *prefix, char quote)
 {
   struct ui_file *ui_file = ui_file_new ();
-  struct mi_console_file *mi_console = XMALLOC (struct mi_console_file);
+  struct mi_console_file *mi_console = XNEW (struct mi_console_file);
 
   mi_console->magic = &mi_console_file_magic;
   mi_console->raw = raw;
@@ -110,15 +108,16 @@ mi_console_raw_packet (void *data, const char *buf, long length_buf)
       fputs_unfiltered (mi_console->prefix, mi_console->raw);
       if (mi_console->quote)
        {
-         fputs_unfiltered ("\"", mi_console->raw);
+         fputc_unfiltered (mi_console->quote, mi_console->raw);
          fputstrn_unfiltered (buf, length_buf,
                               mi_console->quote, mi_console->raw);
-         fputs_unfiltered ("\"\n", mi_console->raw);
+         fputc_unfiltered (mi_console->quote, mi_console->raw);
+         fputc_unfiltered ('\n', mi_console->raw);
        }
       else
        {
          fputstrn_unfiltered (buf, length_buf, 0, mi_console->raw);
-         fputs_unfiltered ("\n", mi_console->raw);
+         fputc_unfiltered ('\n', mi_console->raw);
        }
       gdb_flush (mi_console->raw);
     }
@@ -135,4 +134,21 @@ mi_console_file_flush (struct ui_file *file)
 
   ui_file_put (mi_console->buffer, mi_console_raw_packet, mi_console);
   ui_file_rewind (mi_console->buffer);
+
+}
+
+/* Change the underlying stream of the console directly; this is
+   useful as a minimum-impact way to reflect external changes like
+   logging enable/disable.  */
+
+void
+mi_console_set_raw (struct ui_file *file, struct ui_file *raw)
+{
+  struct mi_console_file *mi_console = ui_file_data (file);
+
+  if (mi_console->magic != &mi_console_file_magic)
+    internal_error (__FILE__, __LINE__,
+                   _("mi_console_file_set_raw: bad magic number"));
+
+  mi_console->raw = raw;
 }
This page took 0.024112 seconds and 4 git commands to generate.