X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Fterminal-util.c;fp=src%2Fbasic%2Fterminal-util.c;h=cb1e6a0190ea7a71984ff6233106be340b8657c0;hb=c733f9b08d9eadc5e671185112567ada81116bdf;hp=75a0d6fd8ee58268e92c6802757eafd07862dbad;hpb=c6edc23d5f8a483e93a891bf7eb76b5f4caf2fb4;p=elogind.git diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 75a0d6fd8..cb1e6a019 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1149,14 +1149,19 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode) { #endif // 0 bool colors_enabled(void) { - const char *colors; + static int enabled = -1; - colors = getenv("SYSTEMD_COLORS"); - if (!colors) { - if (streq_ptr(getenv("TERM"), "dumb")) - return false; - return on_tty(); + if (_unlikely_(enabled < 0)) { + const char *colors; + + colors = getenv("SYSTEMD_COLORS"); + if (colors) + enabled = parse_boolean(colors) != 0; + else if (streq_ptr(getenv("TERM"), "dumb")) + enabled = false; + else + enabled = on_tty(); } - return parse_boolean(colors) != 0; + return enabled; }