From dbc2c080debdc45683bc5534e327455d4fbbbea7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Nov 2013 19:18:52 +0100 Subject: systemctl: indicate in list-dependencies whether a unit is already running --- src/shared/util.h | 4 ++++ src/systemctl/systemctl.c | 10 ++++++++++ 2 files changed, 14 insertions(+) (limited to 'src') diff --git a/src/shared/util.h b/src/shared/util.h index 00d2364c61..e46438c92d 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -395,6 +395,10 @@ static inline const char *ansi_highlight_green(void) { return on_tty() ? ANSI_HIGHLIGHT_GREEN_ON : ""; } +static inline const char *ansi_highlight_yellow(void) { + return on_tty() ? ANSI_HIGHLIGHT_YELLOW_ON : ""; +} + static inline const char *ansi_highlight_off(void) { return on_tty() ? ANSI_HIGHLIGHT_OFF : ""; } diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index bd443e98ce..fa6447607a 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -137,6 +137,8 @@ static bool arg_plain = false; static int daemon_reload(sd_bus *bus, char **args); static int halt_now(enum action a); +static int check_one_unit(sd_bus *bus, const char *name, const char *good_states, bool quiet); + static void pager_open_if_enabled(void) { if (arg_no_pager) @@ -1309,6 +1311,8 @@ static int list_dependencies_one( qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); STRV_FOREACH(c, deps) { + int state; + if (strv_contains(u, *c)) { if (!arg_plain) { r = list_dependencies_print("...", level + 1, (branches << 1) | (c[1] == NULL ? 0 : 1), 1); @@ -1318,6 +1322,12 @@ static int list_dependencies_one( continue; } + state = check_one_unit(bus, *c, "activating\0active\0reloading\0", true); + if (state > 0) + printf("%s%s%s", ansi_highlight_green(), draw_special_char(DRAW_BLACK_CIRCLE), ansi_highlight_off()); + else + printf("%s%s%s", ansi_highlight_red(), draw_special_char(DRAW_BLACK_CIRCLE), ansi_highlight_off()); + r = list_dependencies_print(*c, level, branches, c[1] == NULL); if (r < 0) return r; -- cgit v1.2.3-54-g00ecf