Merge pull request #3987 from keszybz/console-color-setup

Rework console color setup
This commit is contained in:
Lennart Poettering
2016-08-19 19:36:09 +02:00
committed by GitHub
3 changed files with 27 additions and 16 deletions
+16 -8
View File
@@ -39,6 +39,7 @@
#include <unistd.h>
#include "alloc-util.h"
#include "env-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
@@ -1191,12 +1192,9 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode) {
return receive_one_fd(pair[0], 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;
@@ -1204,15 +1202,25 @@ 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;
if (_unlikely_(enabled < 0)) {
const char *colors;
int val;
colors = getenv("SYSTEMD_COLORS");
if (colors)
enabled = parse_boolean(colors) != 0;
val = getenv_bool("SYSTEMD_COLORS");
if (val >= 0)
enabled = val;
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();
}