lib/colors: force to "never" mode on non-terminal output

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2019-02-04 14:14:37 +01:00
parent 167a2b520a
commit 5db5962339
2 changed files with 18 additions and 5 deletions

View File

@ -38,6 +38,9 @@ extern int colors_init(int mode, const char *util_name);
/* Returns 1 or 0 */ /* Returns 1 or 0 */
extern int colors_wanted(void); extern int colors_wanted(void);
/* Returns UL_COLORMODE_* */
extern int colors_mode(void);
/* temporary enable/disable colors */ /* temporary enable/disable colors */
extern void colors_off(void); extern void colors_off(void);
extern void colors_on(void); extern void colors_on(void);

View File

@ -653,9 +653,6 @@ static int colors_terminal_is_ready(void)
{ {
int ncolors = -1; int ncolors = -1;
if (isatty(STDOUT_FILENO) != 1)
goto none;
#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW) #if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
{ {
int ret; int ret;
@ -692,11 +689,16 @@ int colors_init(int mode, const char *name)
struct ul_color_ctl *cc = &ul_colors; struct ul_color_ctl *cc = &ul_colors;
cc->utilname = name; cc->utilname = name;
cc->mode = mode;
termcolors_init_debug(); 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); int rc = colors_read_configuration(cc);
if (rc) if (rc)
cc->mode = UL_COLORMODE_DEFAULT; cc->mode = UL_COLORMODE_DEFAULT;
@ -754,6 +756,14 @@ int colors_wanted(void)
return ul_colors.has_colors; return ul_colors.has_colors;
} }
/*
* Returns mode
*/
int colors_mode(void)
{
return ul_colors.mode;
}
/* /*
* Enable @seq color * Enable @seq color
*/ */