From 5db5962339dbd619a8f779961548fb667d3c9376 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 4 Feb 2019 14:14:37 +0100 Subject: lib/colors: force to "never" mode on non-terminal output Signed-off-by: Karel Zak --- include/colors.h | 3 +++ lib/colors.c | 20 +++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/include/colors.h b/include/colors.h index 3636beb55..d4ae4e407 100644 --- a/include/colors.h +++ b/include/colors.h @@ -38,6 +38,9 @@ extern int colors_init(int mode, const char *util_name); /* Returns 1 or 0 */ extern int colors_wanted(void); +/* Returns UL_COLORMODE_* */ +extern int colors_mode(void); + /* temporary enable/disable colors */ extern void colors_off(void); extern void colors_on(void); diff --git a/lib/colors.c b/lib/colors.c index f636ecc4f..bea7bd1d7 100644 --- a/lib/colors.c +++ b/lib/colors.c @@ -653,9 +653,6 @@ static int colors_terminal_is_ready(void) { int ncolors = -1; - if (isatty(STDOUT_FILENO) != 1) - goto none; - #if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW) { int ret; @@ -692,11 +689,16 @@ int colors_init(int mode, const char *name) struct ul_color_ctl *cc = &ul_colors; cc->utilname = name; - cc->mode = mode; termcolors_init_debug(); - if (mode == UL_COLORMODE_UNDEF && (ready = colors_terminal_is_ready())) { + if (mode != UL_COLORMODE_ALWAYS && !isatty(STDOUT_FILENO)) + cc->mode = UL_COLORMODE_NEVER; + else + cc->mode = mode; + + if (cc->mode == UL_COLORMODE_UNDEF + && (ready = colors_terminal_is_ready())) { int rc = colors_read_configuration(cc); if (rc) cc->mode = UL_COLORMODE_DEFAULT; @@ -754,6 +756,14 @@ int colors_wanted(void) return ul_colors.has_colors; } +/* + * Returns mode + */ +int colors_mode(void) +{ + return ul_colors.mode; +} + /* * Enable @seq color */ -- cgit v1.2.3-55-g7522