tools/xentoollog: update tty detection in stdiostream_progress
authorOlaf Hering <olaf@aepfle.de>
Wed, 27 Feb 2013 14:16:36 +0000 (14:16 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 28 Feb 2013 16:13:46 +0000 (16:13 +0000)
As suggested by IanJ:
Check isatty only once to preserve the errno of ->progress users, and to
reduce the noice in strace output.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxc/xtl_logger_stdio.c

index 25b2464e72a665aeb5968c73b7511860f71b4b24..2e73c862b98763caced1a72360f2dcf821953d25 100644 (file)
@@ -35,6 +35,7 @@ struct xentoollog_logger_stdiostream {
     xentoollog_level min_level;
     unsigned flags;
     int progress_erase_len, progress_last_percent;
+    int tty;
 };
 
 static void progress_erase(xentoollog_logger_stdiostream *lg) {
@@ -118,7 +119,7 @@ static void stdiostream_progress(struct xentoollog_logger *logger_in,
 
     lg->progress_last_percent = percent;
 
-    if (isatty(fileno(lg->f)) <= 0) {
+    if (!lg->tty) {
         stdiostream_message(logger_in, this_level, context,
                             "%s: %lu/%lu  %3d%%",
                             doing_what, done, total, percent);
@@ -166,6 +167,7 @@ xentoollog_logger_stdiostream *xtl_createlogger_stdiostream
     newlogger.f = f;
     newlogger.min_level = min_level;
     newlogger.flags = flags;
+    newlogger.tty = isatty(fileno(newlogger.f)) > 0;
 
     if (newlogger.flags & XTL_STDIOSTREAM_SHOW_DATE) tzset();