perf_counter tools: Dont output in color on !tty
authorIngo Molnar <mingo@elte.hu>
Thu, 4 Jun 2009 13:40:25 +0000 (15:40 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 4 Jun 2009 13:40:25 +0000 (15:40 +0200)
Dont emit ASCII color characters if the terminal is not a tty,
such as when perf report gets redirected into a file.

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Documentation/perf_counter/util/color.c

index a77975d66774da2d99288eae36d50b3e6eaee6b1..9a8c20ccc53e28dd99ab6bd2f27f548fe85532fe 100644 (file)
@@ -1,7 +1,7 @@
 #include "cache.h"
 #include "color.h"
 
-int perf_use_color_default = 0;
+int perf_use_color_default = -1;
 
 static int parse_color(const char *name, int len)
 {
@@ -169,10 +169,20 @@ static int color_vfprintf(FILE *fp, const char *color, const char *fmt,
 {
        int r = 0;
 
-       if (*color)
+       /*
+        * Auto-detect:
+        */
+       if (perf_use_color_default < 0) {
+               if (isatty(1) || pager_in_use())
+                       perf_use_color_default = 1;
+               else
+                       perf_use_color_default = 0;
+       }
+
+       if (perf_use_color_default && *color)
                r += fprintf(fp, "%s", color);
        r += vfprintf(fp, fmt, args);
-       if (*color)
+       if (perf_use_color_default && *color)
                r += fprintf(fp, "%s", PERF_COLOR_RESET);
        if (trail)
                r += fprintf(fp, "%s", trail);
@@ -185,6 +195,7 @@ int color_fprintf(FILE *fp, const char *color, const char *fmt, ...)
 {
        va_list args;
        int r;
+
        va_start(args, fmt);
        r = color_vfprintf(fp, color, fmt, args, NULL);
        va_end(args);