mirror of
https://github.com/systemd/systemd.git
synced 2024-11-24 02:33:36 +08:00
basic/terminal-util: introduce SYSTEMD_COLORS environment variable
... to determine if color output should be enabled. If the variable is not set, fall back to using on_tty(). Also, rewrite existing code to use colors_enabled() where appropriate.
This commit is contained in:
parent
d619a0c4a5
commit
40c9fe4c08
@ -834,6 +834,13 @@
|
||||
script runlevel link farms.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>$SYSTEMD_COLORS</varname></term>
|
||||
|
||||
<listitem><para>Controls whether colorized output should be generated.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>$LISTEN_PID</varname></term>
|
||||
<term><varname>$LISTEN_FDS</varname></term>
|
||||
|
@ -1135,3 +1135,16 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode) {
|
||||
|
||||
return receive_one_fd(pair[0], 0);
|
||||
}
|
||||
|
||||
bool colors_enabled(void) {
|
||||
const char *colors;
|
||||
|
||||
colors = getenv("SYSTEMD_COLORS");
|
||||
if (!colors) {
|
||||
if (streq_ptr(getenv("TERM"), "dumb"))
|
||||
return false;
|
||||
return on_tty();
|
||||
}
|
||||
|
||||
return parse_boolean(colors) != 0;
|
||||
}
|
||||
|
@ -79,37 +79,38 @@ unsigned lines(void);
|
||||
void columns_lines_cache_reset(int _unused_ signum);
|
||||
|
||||
bool on_tty(void);
|
||||
bool colors_enabled(void);
|
||||
|
||||
static inline const char *ansi_underline(void) {
|
||||
return on_tty() ? ANSI_UNDERLINE : "";
|
||||
return colors_enabled() ? ANSI_UNDERLINE : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_highlight(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT : "";
|
||||
return colors_enabled() ? ANSI_HIGHLIGHT : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_highlight_underline(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_UNDERLINE : "";
|
||||
return colors_enabled() ? ANSI_HIGHLIGHT_UNDERLINE : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_highlight_red(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_RED : "";
|
||||
return colors_enabled() ? ANSI_HIGHLIGHT_RED : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_highlight_green(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_GREEN : "";
|
||||
return colors_enabled() ? ANSI_HIGHLIGHT_GREEN : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_highlight_yellow(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_YELLOW : "";
|
||||
return colors_enabled() ? ANSI_HIGHLIGHT_YELLOW : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_highlight_blue(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_BLUE : "";
|
||||
return colors_enabled() ? ANSI_HIGHLIGHT_BLUE : "";
|
||||
}
|
||||
|
||||
static inline const char *ansi_normal(void) {
|
||||
return on_tty() ? ANSI_NORMAL : "";
|
||||
return colors_enabled() ? ANSI_NORMAL : "";
|
||||
}
|
||||
|
||||
int get_ctty_devnr(pid_t pid, dev_t *d);
|
||||
|
@ -2336,7 +2336,7 @@ int main(int argc, char *argv[]) {
|
||||
flags =
|
||||
arg_all * OUTPUT_SHOW_ALL |
|
||||
arg_full * OUTPUT_FULL_WIDTH |
|
||||
on_tty() * OUTPUT_COLOR |
|
||||
colors_enabled() * OUTPUT_COLOR |
|
||||
arg_catalog * OUTPUT_CATALOG |
|
||||
arg_utc * OUTPUT_UTC;
|
||||
|
||||
|
@ -88,7 +88,7 @@ static OutputFlags get_output_flags(void) {
|
||||
arg_all * OUTPUT_SHOW_ALL |
|
||||
arg_full * OUTPUT_FULL_WIDTH |
|
||||
(!on_tty() || pager_have()) * OUTPUT_FULL_WIDTH |
|
||||
on_tty() * OUTPUT_COLOR;
|
||||
colors_enabled() * OUTPUT_COLOR;
|
||||
}
|
||||
|
||||
static int list_sessions(int argc, char *argv[], void *userdata) {
|
||||
|
@ -108,7 +108,7 @@ static OutputFlags get_output_flags(void) {
|
||||
arg_all * OUTPUT_SHOW_ALL |
|
||||
arg_full * OUTPUT_FULL_WIDTH |
|
||||
(!on_tty() || pager_have()) * OUTPUT_FULL_WIDTH |
|
||||
on_tty() * OUTPUT_COLOR |
|
||||
colors_enabled() * OUTPUT_COLOR |
|
||||
!arg_quiet * OUTPUT_WARN_CUTOFF;
|
||||
}
|
||||
|
||||
|
@ -247,7 +247,7 @@ static OutputFlags get_output_flags(void) {
|
||||
arg_all * OUTPUT_SHOW_ALL |
|
||||
arg_full * OUTPUT_FULL_WIDTH |
|
||||
(!on_tty() || pager_have()) * OUTPUT_FULL_WIDTH |
|
||||
on_tty() * OUTPUT_COLOR |
|
||||
colors_enabled() * OUTPUT_COLOR |
|
||||
!arg_quiet * OUTPUT_WARN_CUTOFF;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user