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 */
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);

View File

@ -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
*/