/* 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).
#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;
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;
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);
}
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;
}