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=0659310a743b92a759c1a1743d8720c746982f0f;hb=b1591e0aad5d4f66c6925e050299569b5ceb6d1d;hp=465326cfcf1845fc808a9222b76986e2010e2bb0;hpb=e7db23c373b2b44cb38db54f815e7ba02086554b;p=elogind.git diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 465326cfc..0659310a7 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1203,12 +1203,9 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode) { } #endif // 0 -bool terminal_is_dumb(void) { +static bool getenv_terminal_is_dumb(void) { const char *e; - if (!on_tty()) - return true; - e = getenv("TERM"); if (!e) return true; @@ -1216,6 +1213,13 @@ bool terminal_is_dumb(void) { return streq(e, "dumb"); } +bool terminal_is_dumb(void) { + if (!on_tty()) + return true; + + return getenv_terminal_is_dumb(); +} + bool colors_enabled(void) { static int enabled = -1; @@ -1225,6 +1229,9 @@ bool colors_enabled(void) { colors = getenv("SYSTEMD_COLORS"); if (colors) enabled = parse_boolean(colors) != 0; + else if (getpid() == 1) + /* PID1 outputs to the console without holding it open all the time */ + enabled = !getenv_terminal_is_dumb(); else enabled = !terminal_is_dumb(); }