color_config.c (1066B)
1// SPDX-License-Identifier: GPL-2.0 2#include <linux/kernel.h> 3#include <subcmd/pager.h> 4#include <string.h> 5#include "config.h" 6#include <stdlib.h> 7#include <stdio.h> 8#include "color.h" 9#include <math.h> 10#include <unistd.h> 11 12int perf_config_colorbool(const char *var, const char *value, int stdout_is_tty) 13{ 14 if (value) { 15 if (!strcasecmp(value, "never")) 16 return 0; 17 if (!strcasecmp(value, "always")) 18 return 1; 19 if (!strcasecmp(value, "auto")) 20 goto auto_color; 21 } 22 23 /* Missing or explicit false to turn off colorization */ 24 if (!perf_config_bool(var, value)) 25 return 0; 26 27 /* any normal truth value defaults to 'auto' */ 28 auto_color: 29 if (stdout_is_tty < 0) 30 stdout_is_tty = isatty(1); 31 if (stdout_is_tty || pager_in_use()) { 32 char *term = getenv("TERM"); 33 if (term && strcmp(term, "dumb")) 34 return 1; 35 } 36 return 0; 37} 38 39int perf_color_default_config(const char *var, const char *value, 40 void *cb __maybe_unused) 41{ 42 if (!strcmp(var, "color.ui")) { 43 perf_use_color_default = perf_config_colorbool(var, value, -1); 44 return 0; 45 } 46 47 return 0; 48}