X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmi%2Fmi-console.c;h=7eace937ebdbb35f20ffd5204da589fb29b3a4b3;hb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;hp=b27d14ea74686da103903a54f07bf52fff569634;hpb=b8c9b27d1e133d46199734ca1f047af8bb2d3314;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mi/mi-console.c b/gdb/mi/mi-console.c index b27d14ea74..7eace937eb 100644 --- a/gdb/mi/mi-console.c +++ b/gdb/mi/mi-console.c @@ -1,12 +1,14 @@ /* MI Console code. - Copyright (C) 2000, Free Software Foundation, Inc. + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,18 +17,11 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "mi-console.h" -#include - -/* 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 +35,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 +50,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,7 +62,8 @@ 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"); + internal_error (__FILE__, __LINE__, + _("mi_console_file_delete: bad magic number")); xfree (mi_console); } @@ -75,7 +73,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 +90,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,7 +116,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); }