Commit 13d0ab5e authored by Ingo Molnar's avatar Ingo Molnar

perf_counter tools: Dont output in color on !tty

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: default avatarIngo Molnar <mingo@elte.hu>
parent 8fc0321f
#include "cache.h" #include "cache.h"
#include "color.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) 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, ...@@ -169,10 +169,20 @@ static int color_vfprintf(FILE *fp, const char *color, const char *fmt,
{ {
int r = 0; 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 += fprintf(fp, "%s", color);
r += vfprintf(fp, fmt, args); r += vfprintf(fp, fmt, args);
if (*color) if (perf_use_color_default && *color)
r += fprintf(fp, "%s", PERF_COLOR_RESET); r += fprintf(fp, "%s", PERF_COLOR_RESET);
if (trail) if (trail)
r += fprintf(fp, "%s", trail); r += fprintf(fp, "%s", trail);
...@@ -185,6 +195,7 @@ int color_fprintf(FILE *fp, const char *color, const char *fmt, ...) ...@@ -185,6 +195,7 @@ int color_fprintf(FILE *fp, const char *color, const char *fmt, ...)
{ {
va_list args; va_list args;
int r; int r;
va_start(args, fmt); va_start(args, fmt);
r = color_vfprintf(fp, color, fmt, args, NULL); r = color_vfprintf(fp, color, fmt, args, NULL);
va_end(args); va_end(args);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment