diff options
author | Stan Shebs <shebs@codesourcery.com> | 2012-03-06 22:48:53 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 2012-03-06 22:48:53 +0000 |
commit | 2b03b41d6ac4781c8aac2baa37e9ec282dd0d2b0 (patch) | |
tree | 132fc8ce2c9fd9b998bc772902d0368cd81d8193 /gdb/mi/mi-console.c | |
parent | 3ce231f8e2a12502728fbebf0ddfaa690e986154 (diff) | |
download | gdb-2b03b41d6ac4781c8aac2baa37e9ec282dd0d2b0.zip gdb-2b03b41d6ac4781c8aac2baa37e9ec282dd0d2b0.tar.gz gdb-2b03b41d6ac4781c8aac2baa37e9ec282dd0d2b0.tar.bz2 |
* mi/mi-cmd-break.c: Enforce coding standards, fix comments.
* mi/mi-cmd-disas.c: Ditto.
* mi/mi-cmd-env.c: Ditto.
* mi/mi-cmd-file.c: Ditto.
* mi/mi-cmd-stack.c: Ditto.
* mi/mi-cmd-target.c: Ditto.
* mi/mi-cmd-var.c: Ditto.
* mi/mi-cmds.c: Ditto.
* mi/mi-cmds.h: Ditto.
* mi/mi-console.c: Ditto.
* mi/mi-getopt.c: Ditto.
* mi/mi-getopt.h: Ditto.
* mi/mi-interp.c: Ditto.
* mi/mi-main.c: Ditto.
* mi/mi-out.c: Ditto.
* mi/mi-parse.c: Ditto.
* mi/mi-parse.h: Ditto.
* mi/mi-symbol-cmds.c: Ditto.
* mi/mi-getopt.h: Move mi_opt struct up.
* mi/mi-main.c (captured_mi_execute_command): Remove redundant
return.
* mi/mi-out.c (_initialize_mi_out): Remove empty initialize.
Diffstat (limited to 'gdb/mi/mi-console.c')
-rw-r--r-- | gdb/mi/mi-console.c | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/gdb/mi/mi-console.c b/gdb/mi/mi-console.c index 6b4601b..102b8be 100644 --- a/gdb/mi/mi-console.c +++ b/gdb/mi/mi-console.c @@ -19,12 +19,15 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +/* An MI console is a kind of ui_file stream that sends output to + stdout, but encapsulated and prefixed with a distinctive string; + for instance, error output is normally identified by a leading + "&". */ + #include "defs.h" #include "mi-console.h" #include "gdb_string.h" -/* MI-console: send output to std-out but correcty encapsulated */ - 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; @@ -38,11 +41,15 @@ struct mi_console_file char quote; }; -int mi_console_file_magic; +/* Use the address of this otherwise-unused global as a magic number + identifying this class of ui_file objects. */ +static int mi_console_file_magic; + +/* Create a console that wraps the given output stream RAW with the + string PREFIX and quoting it with QUOTE. */ struct ui_file * -mi_console_file_new (struct ui_file *raw, - const char *prefix, char quote) +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); @@ -55,6 +62,7 @@ mi_console_file_new (struct ui_file *raw, 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); + return ui_file; } @@ -66,36 +74,36 @@ mi_console_file_delete (struct ui_file *file) if (mi_console->magic != &mi_console_file_magic) internal_error (__FILE__, __LINE__, _("mi_console_file_delete: bad magic number")); + xfree (mi_console); } static void -mi_console_file_fputs (const char *buf, - struct ui_file *file) +mi_console_file_fputs (const char *buf, struct ui_file *file) { 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_fputs: bad magic number"); - /* Append the text to our internal buffer */ + + /* Append the text to our internal buffer. */ fputs_unfiltered (buf, mi_console->buffer); - /* Flush when an embedded \n */ + /* Flush when an embedded newline is present anywhere in the buffer. */ if (strchr (buf, '\n') != NULL) gdb_flush (file); } -/* Transform a byte sequence into a console output packet. */ +/* Transform a byte sequence into a console output packet. */ + static void -mi_console_raw_packet (void *data, - const char *buf, - long length_buf) +mi_console_raw_packet (void *data, const char *buf, long length_buf) { struct mi_console_file *mi_console = data; if (mi_console->magic != &mi_console_file_magic) internal_error (__FILE__, __LINE__, - _("mi_console_file_transform: bad magic number")); + _("mi_console_raw_packet: bad magic number")); if (length_buf > 0) { @@ -124,6 +132,7 @@ mi_console_file_flush (struct ui_file *file) if (mi_console->magic != &mi_console_file_magic) 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); } |