Do not emit style escape sequences to log file
PR gdb/24502 requests that the "set logging" log file not contain style escape sequences emitted by gdb. This seemed like a reasonable request to me, so this patch implements filtering for the log file. This also updates a comment in ui-style.h that I noticed while writing the patch. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-06-14 Tom Tromey <tromey@adacore.com> PR gdb/24502: * ui-style.h (skip_ansi_escape): Update comment. * ui-file.h (class no_terminal_escape_file): New class. * ui-file.c (no_terminal_escape_file::write) (no_terminal_escape_file::puts): New methods. * cli/cli-logging.c (handle_redirections): Use no_terminal_escape_file. gdb/testsuite/ChangeLog 2019-06-14 Tom Tromey <tromey@adacore.com> PR gdb/24502: * gdb.base/style-logging.exp: New file.
This commit is contained in:
parent
52ce35e289
commit
0735b091ab
7 changed files with 136 additions and 3 deletions
|
@ -396,3 +396,35 @@ tee_file::can_emit_style_escape ()
|
|||
&& m_one->term_out ()
|
||||
&& term_cli_styling ());
|
||||
}
|
||||
|
||||
/* See ui-file.h. */
|
||||
|
||||
void
|
||||
no_terminal_escape_file::write (const char *buf, long length_buf)
|
||||
{
|
||||
std::string copy (buf, length_buf);
|
||||
this->puts (copy.c_str ());
|
||||
}
|
||||
|
||||
/* See ui-file.h. */
|
||||
|
||||
void
|
||||
no_terminal_escape_file::puts (const char *buf)
|
||||
{
|
||||
while (*buf != '\0')
|
||||
{
|
||||
const char *esc = strchr (buf, '\033');
|
||||
if (esc == nullptr)
|
||||
break;
|
||||
|
||||
int n_read = 0;
|
||||
if (!skip_ansi_escape (esc, &n_read))
|
||||
++esc;
|
||||
|
||||
this->stdio_file::write (buf, esc - buf);
|
||||
buf = esc + n_read;
|
||||
}
|
||||
|
||||
if (*buf != '\0')
|
||||
this->stdio_file::write (buf, strlen (buf));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue