Merge pull request #3987 from keszybz/console-color-setup
Rework console color setup
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user