Make fputs_unfiltered use fputs_maybe_filtered

This patch redefines fputs_unfiltered in utils.c, with new behavior to
forward parameters to fputs_maybe_filtered.  This makes
fputs_unfiltered identical to fputs_filtered, except filtering is
disabled.

Some callers of fputs_unfiltered have been updated to use ui_file_puts
where they were using other ui_file_* functions anyway for IO.

This fixes the problem I saw with \032\032post-prompt annotation being
flushed to stdout in the wrong order.

2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>

	PR gdb/25190:
        * gdb/remote-sim.c (gdb_os_write_stderr): Update.
        * gdb/remote.c (remote_console_output): Update.
        * gdb/ui-file.c (fputs_unfiltered): Rename to...
        (ui_file_puts): ...this.
        * gdb/ui-file.h (ui_file_puts): Add declaration.
        * gdb/utils.c (emit_style_escape): Update.
        (flush_wrap_buffer): Update.
        (fputs_maybe_filtered): Update.
        (fputs_unfiltered): Add function.

Change-Id: I17ed5078f71208344f2f8ab634a6518b1af6e213
This commit is contained in:
Iain Buclaw 2020-02-05 12:45:13 +01:00 committed by Tom Tromey
parent faa17681cc
commit dfcb27e41d
6 changed files with 28 additions and 7 deletions

View file

@ -1,3 +1,16 @@
2020-02-05 Iain Buclaw <ibuclaw@gdcproject.org>
PR gdb/25190:
* gdb/remote-sim.c (gdb_os_write_stderr): Update.
* gdb/remote.c (remote_console_output): Update.
* gdb/ui-file.c (fputs_unfiltered): Rename to...
(ui_file_puts): ...this.
* gdb/ui-file.h (ui_file_puts): Add declaration.
* gdb/utils.c (emit_style_escape): Update.
(flush_wrap_buffer): Update.
(fputs_maybe_filtered): Update.
(fputs_unfiltered): Add function.
2020-02-05 Iain Buclaw <ibuclaw@gdcproject.org> 2020-02-05 Iain Buclaw <ibuclaw@gdcproject.org>
* gdb/event-loop.c (gdb_wait_for_event): Update. * gdb/event-loop.c (gdb_wait_for_event): Update.

View file

@ -375,7 +375,7 @@ gdb_os_write_stderr (host_callback *p, const char *buf, int len)
{ {
b[0] = buf[i]; b[0] = buf[i];
b[1] = 0; b[1] = 0;
fputs_unfiltered (b, gdb_stdtargerr); ui_file_puts (gdb_stdtargerr, b);
} }
return len; return len;
} }

View file

@ -6845,7 +6845,7 @@ remote_console_output (const char *msg)
tb[0] = c; tb[0] = c;
tb[1] = 0; tb[1] = 0;
fputs_unfiltered (tb, gdb_stdtarg); ui_file_puts (gdb_stdtarg, tb);
} }
ui_file_flush (gdb_stdtarg); ui_file_flush (gdb_stdtarg);
} }

View file

@ -150,7 +150,7 @@ ui_file_read (struct ui_file *file, char *buf, long length_buf)
} }
void void
fputs_unfiltered (const char *buf, struct ui_file *file) ui_file_puts (struct ui_file *file, const char *buf)
{ {
file->puts (buf); file->puts (buf);
} }

View file

@ -112,6 +112,8 @@ extern void ui_file_write_async_safe (struct ui_file *file, const char *buf,
extern long ui_file_read (struct ui_file *file, char *buf, long length_buf); extern long ui_file_read (struct ui_file *file, char *buf, long length_buf);
extern void ui_file_puts (struct ui_file *file, const char *buf);
extern int gdb_console_fputs (const char *, FILE *); extern int gdb_console_fputs (const char *, FILE *);
/* A std::string-based ui_file. Can be used as a scratch buffer for /* A std::string-based ui_file. Can be used as a scratch buffer for

View file

@ -1405,7 +1405,7 @@ emit_style_escape (const ui_file_style &style,
if (stream == nullptr) if (stream == nullptr)
wrap_buffer.append (style.to_ansi ()); wrap_buffer.append (style.to_ansi ());
else else
fputs_unfiltered (style.to_ansi ().c_str (), stream); ui_file_puts (stream, style.to_ansi ().c_str ());
} }
/* Set the current output style. This will affect future uses of the /* Set the current output style. This will affect future uses of the
@ -1539,7 +1539,7 @@ flush_wrap_buffer (struct ui_file *stream)
{ {
if (stream == gdb_stdout && !wrap_buffer.empty ()) if (stream == gdb_stdout && !wrap_buffer.empty ())
{ {
fputs_unfiltered (wrap_buffer.c_str (), stream); ui_file_puts (stream, wrap_buffer.c_str ());
wrap_buffer.clear (); wrap_buffer.clear ();
} }
} }
@ -1697,7 +1697,7 @@ fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
|| top_level_interpreter ()->interp_ui_out ()->is_mi_like_p ()) || top_level_interpreter ()->interp_ui_out ()->is_mi_like_p ())
{ {
flush_wrap_buffer (stream); flush_wrap_buffer (stream);
fputs_unfiltered (linebuffer, stream); ui_file_puts (stream, linebuffer);
return; return;
} }
@ -1797,7 +1797,7 @@ fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
/* Now output indentation and wrapped string. */ /* Now output indentation and wrapped string. */
if (wrap_column) if (wrap_column)
{ {
fputs_unfiltered (wrap_indent, stream); ui_file_puts (stream, wrap_indent);
if (stream->can_emit_style_escape ()) if (stream->can_emit_style_escape ())
emit_style_escape (save_style, stream); emit_style_escape (save_style, stream);
/* FIXME, this strlen is what prevents wrap_indent from /* FIXME, this strlen is what prevents wrap_indent from
@ -1835,6 +1835,12 @@ fputs_filtered (const char *linebuffer, struct ui_file *stream)
fputs_maybe_filtered (linebuffer, stream, 1); fputs_maybe_filtered (linebuffer, stream, 1);
} }
void
fputs_unfiltered (const char *linebuffer, struct ui_file *stream)
{
fputs_maybe_filtered (linebuffer, stream, 0);
}
/* See utils.h. */ /* See utils.h. */
void void