63 lines
2.3 KiB
Diff
63 lines
2.3 KiB
Diff
|
changeset: 26548:e7d9bac5c11d
|
||
|
user: Olaf Hering <olaf@aepfle.de>
|
||
|
date: Fri Feb 15 13:32:11 2013 +0000
|
||
|
files: tools/libxc/xtl_logger_stdio.c
|
||
|
description:
|
||
|
tools/xc: handle tty output differently in stdiostream_progress
|
||
|
|
||
|
If the output goes to a tty, rewind the cursor and print everything in a
|
||
|
single line as it was done up to now. If the output goes to a file or
|
||
|
pipe print a newline after each progress output. This will fix logging
|
||
|
of progress messages from xc_save to xend.log.
|
||
|
|
||
|
To support XTL_STDIOSTREAM_SHOW_PID or XTL_STDIOSTREAM_SHOW_DATE print
|
||
|
the output via vmessage if the output is not a tty.
|
||
|
|
||
|
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
||
|
Acked-by: Ian Campbell <ian.campbell@citrix.com>
|
||
|
Committed-by: Ian Campbell <ian.campbell@citrix.com>
|
||
|
|
||
|
|
||
|
diff -r 8285d20a6f5b -r e7d9bac5c11d tools/libxc/xtl_logger_stdio.c
|
||
|
--- a/tools/libxc/xtl_logger_stdio.c Fri Feb 15 13:32:11 2013 +0000
|
||
|
+++ b/tools/libxc/xtl_logger_stdio.c Fri Feb 15 13:32:11 2013 +0000
|
||
|
@@ -81,6 +81,17 @@ static void stdiostream_vmessage(xentool
|
||
|
fflush(lg->f);
|
||
|
}
|
||
|
|
||
|
+static void stdiostream_message(struct xentoollog_logger *logger_in,
|
||
|
+ xentoollog_level level,
|
||
|
+ const char *context,
|
||
|
+ const char *format, ...)
|
||
|
+{
|
||
|
+ va_list al;
|
||
|
+ va_start(al,format);
|
||
|
+ stdiostream_vmessage(logger_in, level, -1, context, format, al);
|
||
|
+ va_end(al);
|
||
|
+}
|
||
|
+
|
||
|
static void stdiostream_progress(struct xentoollog_logger *logger_in,
|
||
|
const char *context,
|
||
|
const char *doing_what, int percent,
|
||
|
@@ -105,11 +116,18 @@ static void stdiostream_progress(struct
|
||
|
if (this_level < lg->min_level)
|
||
|
return;
|
||
|
|
||
|
+ lg->progress_last_percent = percent;
|
||
|
+
|
||
|
+ if (isatty(fileno(lg->f)) <= 0) {
|
||
|
+ stdiostream_message(logger_in, this_level, context,
|
||
|
+ "%s: %lu/%lu %3d%%",
|
||
|
+ doing_what, done, total, percent);
|
||
|
+ return;
|
||
|
+ }
|
||
|
+
|
||
|
if (lg->progress_erase_len)
|
||
|
putc('\r', lg->f);
|
||
|
|
||
|
- lg->progress_last_percent = percent;
|
||
|
-
|
||
|
newpel = fprintf(lg->f, "%s%s" "%s: %lu/%lu %3d%%%s",
|
||
|
context?context:"", context?": ":"",
|
||
|
doing_what, done, total, percent,
|