2003-10-02 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / mi / mi-console.c
index 3bf6a73ede95338f5f73f483670b9d612dcff4aa..aca008640fd5b2094c22b58bc0a4944d2e37936d 100644 (file)
@@ -1,6 +1,8 @@
 /* MI Console code.
-   Copyright (C) 2000, Free Software Foundation, Inc.
-   Contributed by Cygnus Solutions.
+
+   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
 
 
 #include "defs.h"
 #include "mi-console.h"
-#include <string.h>
-
-/* Convenience macro for allocting typesafe memory. */
-
-#undef XMALLOC
-#define XMALLOC(TYPE) (TYPE*) xmalloc (sizeof (TYPE))
+#include "gdb_string.h"
 
 /* MI-console: send output to std-out but correcty encapsulated */
 
@@ -40,13 +37,14 @@ struct mi_console_file
     struct ui_file *raw;
     struct ui_file *buffer;
     const char *prefix;
+    char quote;
   };
 
 int mi_console_file_magic;
 
 struct ui_file *
 mi_console_file_new (struct ui_file *raw,
-                    const char *prefix)
+                    const char *prefix, char quote)
 {
   struct ui_file *ui_file = ui_file_new ();
   struct mi_console_file *mi_console = XMALLOC (struct mi_console_file);
@@ -54,6 +52,7 @@ mi_console_file_new (struct ui_file *raw,
   mi_console->raw = raw;
   mi_console->buffer = mem_fileopen ();
   mi_console->prefix = prefix;
+  mi_console->quote = quote;
   set_ui_file_fputs (ui_file, mi_console_file_fputs);
   set_ui_file_flush (ui_file, mi_console_file_flush);
   set_ui_file_data (ui_file, mi_console, mi_console_file_delete);
@@ -65,8 +64,9 @@ mi_console_file_delete (struct ui_file *file)
 {
   struct mi_console_file *mi_console = ui_file_data (file);
   if (mi_console->magic != &mi_console_file_magic)
-    internal_error ("mi_console_file_delete: bad magic number");
-  free (mi_console);
+    internal_error (__FILE__, __LINE__,
+                   "mi_console_file_delete: bad magic number");
+  xfree (mi_console);
 }
 
 static void
@@ -75,7 +75,8 @@ mi_console_file_fputs (const char *buf,
 {
   struct mi_console_file *mi_console = ui_file_data (file);
   if (mi_console->magic != &mi_console_file_magic)
-    internal_error ("mi_console_file_fputs: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "mi_console_file_fputs: bad magic number");
   /* Append the text to our internal buffer */
   fputs_unfiltered (buf, mi_console->buffer);
   /* Flush when an embedded \n */
@@ -91,14 +92,23 @@ mi_console_raw_packet (void *data,
 {
   struct mi_console_file *mi_console = data;
   if (mi_console->magic != &mi_console_file_magic)
-    internal_error ("mi_console_file_transform: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "mi_console_file_transform: bad magic number");
 
   if (length_buf > 0)
     {
       fputs_unfiltered (mi_console->prefix, mi_console->raw);
-      fputs_unfiltered ("\"", mi_console->raw);
-      fputstrn_unfiltered (buf, length_buf, '"', mi_console->raw);
-      fputs_unfiltered ("\"\n", mi_console->raw);
+      if (mi_console->quote)
+       {
+         fputs_unfiltered ("\"", mi_console->raw);
+         fputstrn_unfiltered (buf, length_buf, mi_console->quote, mi_console->raw);
+         fputs_unfiltered ("\"\n", mi_console->raw);
+       }
+      else
+       {
+         fputstrn_unfiltered (buf, length_buf, 0, mi_console->raw);
+         fputs_unfiltered ("\n", mi_console->raw);
+       }
       gdb_flush (mi_console->raw);
     }
 }
@@ -108,11 +118,8 @@ mi_console_file_flush (struct ui_file *file)
 {
   struct mi_console_file *mi_console = ui_file_data (file);
   if (mi_console->magic != &mi_console_file_magic)
-    internal_error ("mi_console_file_flush: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "mi_console_file_flush: bad magic number");
   ui_file_put (mi_console->buffer, mi_console_raw_packet, mi_console);
   ui_file_rewind (mi_console->buffer);
 }
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
This page took 0.032037 seconds and 4 git commands to generate.