From: Zbigniew Jędrzejewski-Szmek Date: Fri, 6 May 2022 16:19:21 +0000 (+0200) Subject: shared/terminal-util: don't use $COLORTERM to force colors X-Git-Tag: v251-rc3~49^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=34c2d32cf97ddc41348960687e52db6637faf1df;p=thirdparty%2Fsystemd.git shared/terminal-util: don't use $COLORTERM to force colors Fixup for a5efbf468c96190c9562bc8121eda32310dfd112: if $COLORTERM was set, we'd unconditionally turn on colors, which is unexpected and wrong. It even breaks our own tests when executed in gnome-terminal. --- diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 8ddcfe23230..a142ba2dfb5 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1278,12 +1278,7 @@ ColorMode get_color_mode(void) { /* We only check for the presence of the variable; value is ignored. */ cached_color_mode = COLOR_OFF; - else if (STRPTR_IN_SET(getenv("COLORTERM"), - "truecolor", - "24bit")) - cached_color_mode = COLOR_24BIT; - - else if (getpid_cached() == 1) + else if (getpid_cached() == 1) { /* PID1 outputs to the console without holding it open all the time. * * Note that the Linux console can only display 16 colors. We still enable 256 color @@ -1292,9 +1287,23 @@ ColorMode get_color_mode(void) { * map them to the closest color in the 16 color palette (since kernel 3.16). Doing * 256 colors is nice for people who invoke systemd in a container or via a serial * link or such, and use a true 256 color terminal to do so. */ - cached_color_mode = getenv_terminal_is_dumb() ? COLOR_OFF : COLOR_256; - else - cached_color_mode = terminal_is_dumb() ? COLOR_OFF : COLOR_256; + if (getenv_terminal_is_dumb()) + cached_color_mode = COLOR_OFF; + } else { + if (terminal_is_dumb()) + cached_color_mode = COLOR_OFF; + } + + if (cached_color_mode < 0) { + /* We failed to figure out any reason to *disable* colors. + * Let's see how many colors we shall use. */ + if (STRPTR_IN_SET(getenv("COLORTERM"), + "truecolor", + "24bit")) + cached_color_mode = COLOR_24BIT; + else + cached_color_mode = COLOR_256; + } } return cached_color_mode;