X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsystemctl%2Fsystemctl.c;h=7d6a6a24f3c29a3ffb55c4f5a6b8e9f009c894c2;hb=44386fc156bfa2d623567ff7f7c8f313cfafb9bc;hp=6a42fea5ba5cdb67dea66845fb77b2f240f74e1a;hpb=ad94ad63e31e4822d1cf5b0908be0f3111930ff9;p=elogind.git diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 6a42fea5b..7d6a6a24f 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -186,6 +186,14 @@ static void polkit_agent_open_if_enabled(void) { } #endif +static const char *ansi_highlight(bool b) { + + if (!on_tty()) + return ""; + + return b ? ANSI_HIGHLIGHT_ON : ANSI_HIGHLIGHT_OFF; +} + static const char *ansi_highlight_red(bool b) { if (!on_tty()) @@ -420,18 +428,28 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { } if (!arg_no_legend) { - if (n_shown) + const char *on, *off; + + if (n_shown) { printf("\nLOAD = Reflects whether the unit definition was properly loaded.\n" "ACTIVE = The high-level unit activation state, i.e. generalization of SUB.\n" "SUB = The low-level unit activation state, values depend on unit type.\n" "JOB = Pending job for the unit.\n\n"); + on = ansi_highlight(true); + off = ansi_highlight(false); + } else { + on = ansi_highlight_red(true); + off = ansi_highlight_red(false); + } if (arg_all) - printf("%u loaded units listed.\n" - "To show all installed unit files use 'systemctl list-unit-files'.\n", n_shown); + printf("%s%u loaded units listed.%s\n" + "To show all installed unit files use 'systemctl list-unit-files'.\n", + on, n_shown, off); else - printf("%u loaded units listed. Pass --all to see loaded but inactive units, too.\n" - "To show all installed unit files use 'systemctl list-unit-files'.\n", n_shown); + printf("%s%u loaded units listed.%s Pass --all to see loaded but inactive units, too.\n" + "To show all installed unit files use 'systemctl list-unit-files'.\n", + on, n_shown, off); } } @@ -3576,7 +3594,15 @@ static int mangle_names(char **original_names, char ***mangled_names) { i = l; STRV_FOREACH(name, original_names) { - *i = unit_name_mangle(*name); + + /* When enabling units qualified path names are OK, + * too, hence allow them explicitly. */ + + if (is_path(*name)) + *i = strdup(*name); + else + *i = unit_name_mangle(*name); + if (!*i) { strv_free(l); return log_oom(); @@ -3921,7 +3947,7 @@ static int systemctl_help(void) { " -n --lines=INTEGER Journal entries to show\n" " --follow Follow journal\n" " -o --output=STRING Change journal output mode (short, short-monotonic,\n" - " verbose, export, json, json-pretty, cat)\n\n" + " verbose, export, json, json-pretty, json-sse, cat)\n\n" "Unit Commands:\n" " list-units List loaded units\n" " start [NAME...] Start (activate) one or more units\n"