On Tue, May 09, 2023 at 03:51:17PM +0100, Richard W.M. Jones wrote:
At least under Wine they are not recognized and you just see literal
"[0m" etc appearing in the output.
Maybe that means the problem is that isatty() under Wine is returning
1 even when it shouldn't? But avoiding the tty magic on Windows is
fine, whether or not Wine is faithfully reproducing native windows or
has its own problems.
Updates: commit 5a011e02375912f2ad88de1ebc6d609e29d38f71
Reviewed-by: Laszlo Ersek <lersek(a)redhat.com>
---
server/debug.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/server/debug.c b/server/debug.c
index 1b5ddaafe..2231d40a0 100644
--- a/server/debug.c
+++ b/server/debug.c
@@ -70,7 +70,9 @@ static void
debug_common (bool in_server, const char *fs, va_list args)
{
int err = errno;
+#ifndef WIN32
int tty;
+#endif
Could also do unconditional here:
int tty = 0;
CLEANUP_FREE char *str = NULL;
size_t len = 0;
FILE *fp;
@@ -88,15 +90,19 @@ debug_common (bool in_server, const char *fs, va_list args)
return;
}
+#ifndef WIN32
tty = isatty (fileno (stderr));
if (!in_server && tty) ansi_force_colour (ANSI_FG_BOLD_BLACK, fp);
+#endif
and here, do:
#ifndef WIN32
tty = isatty (fileno (stderr));
#endif
if (...)
prologue (fp);
errno = err;
vfprintf (fp, fs, args);
+#ifndef WIN32
if (!in_server && tty) ansi_force_restore (fp);
+#endif
and this one can also be unconditional.
But what you have works too, so I'm fine either way.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization:
qemu.org |
libvirt.org