|
Zbigniew Jędrzejewski-Szmek |
696e2f |
From 0da0a63dba426aa351d733292df6ec41603b39b6 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
Date: Thu, 18 Aug 2016 22:03:56 -0400
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
Subject: [PATCH] systemd: ignore lack of tty when checking whether colors
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
should be enabled
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
When started by the kernel, we are connected to the console, and we'll set TERM
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
properly to some value in fixup_environment(). We'll then enable or disable
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
colors based on the value of $SYSTEMD_COLORS and $TERM.
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
When reexecuting, TERM should be already set, so we can use this value.
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
Effectively, behaviour is the same as before affd7ed1a was reverted, but instead
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
of reopening the console before configuring color output, we just ignore what
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
stdout is connected to and decide based on the variables only.
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
(cherry picked from commit 158fbf7661912adf0f42c93155499119811dde82)
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
---
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
src/basic/terminal-util.c | 15 +++++++++++----
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
index df56d85317..47d31ad4d7 100644
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
--- a/src/basic/terminal-util.c
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+++ b/src/basic/terminal-util.c
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
@@ -1191,12 +1191,9 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
return receive_one_fd(pair[0], 0);
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
}
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
-bool terminal_is_dumb(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+static bool getenv_terminal_is_dumb(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
const char *e;
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
- if (!on_tty())
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
- return true;
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
-
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
e = getenv("TERM");
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
if (!e)
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
return true;
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
@@ -1204,6 +1201,13 @@ bool terminal_is_dumb(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
return streq(e, "dumb");
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
}
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+bool terminal_is_dumb(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+ if (!on_tty())
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+ return true;
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+ return getenv_terminal_is_dumb();
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+}
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
bool colors_enabled(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
static int enabled = -1;
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
@@ -1213,6 +1217,9 @@ bool colors_enabled(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
colors = getenv("SYSTEMD_COLORS");
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
if (colors)
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
enabled = parse_boolean(colors) != 0;
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+ else if (getpid() == 1)
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+ /* PID1 outputs to the console without holding it open all the time */
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
+ enabled = !getenv_terminal_is_dumb();
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
else
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
enabled = !terminal_is_dumb();
|
|
Zbigniew Jędrzejewski-Szmek |
696e2f |
}
|