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)
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);
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;
if (r < 0)
return r;
+ pager_open_if_enabled();
+
c = (unsigned) r;
qsort_safe(unit_infos, c, sizeof(UnitInfo), compare_unit_info);
if (!p)
return log_oom();
- printf("%s -> '%s'\n", u->id, p);
-
r = show_one(verb, bus, p, show_properties, new_line, ellipsized);
if (r != 0)
return r;
" -a --all Show all loaded units/properties, including dead/empty\n"
" ones. To list all units installed on the system, use\n"
" the 'list-unit-files' command instead.\n"
- " --reverse Show reverse dependencies with 'list-dependencies'\n"
" -l --full Don't ellipsize unit names on output\n"
- " --fail When queueing a new job, fail if conflicting jobs are\n"
- " pending\n"
- " --irreversible When queueing a new job, make sure it cannot be implicitly\n"
- " cancelled\n"
- " --ignore-dependencies\n"
- " When queueing a new job, ignore all its dependencies\n"
+ " --reverse Show reverse dependencies with 'list-dependencies'\n"
+ " --job-mode=MODE Specify how to deal with already queued jobs, when\n"
+ " queueing a new job\n"
" --show-types When showing sockets, explicitly show their type\n"
" -i --ignore-inhibitors\n"
" When shutting down or sleeping, ignore inhibitors\n"
ARG_RUNTIME,
ARG_FORCE,
ARG_PLAIN,
- ARG_STATE
+ ARG_STATE,
+ ARG_JOB_MODE
};
static const struct option options[] = {
{ "show-types", no_argument, NULL, ARG_SHOW_TYPES },
{ "failed", no_argument, NULL, ARG_FAILED }, /* compatibility only */
{ "full", no_argument, NULL, 'l' },
- { "fail", no_argument, NULL, ARG_FAIL },
- { "irreversible", no_argument, NULL, ARG_IRREVERSIBLE },
- { "ignore-dependencies", no_argument, NULL, ARG_IGNORE_DEPENDENCIES },
+ { "job-mode", required_argument, NULL, ARG_JOB_MODE },
+ { "fail", no_argument, NULL, ARG_FAIL }, /* compatibility only */
+ { "irreversible", no_argument, NULL, ARG_IRREVERSIBLE }, /* compatibility only */
+ { "ignore-dependencies", no_argument, NULL, ARG_IGNORE_DEPENDENCIES }, /* compatibility only */
{ "ignore-inhibitors", no_argument, NULL, 'i' },
{ "user", no_argument, NULL, ARG_USER },
{ "system", no_argument, NULL, ARG_SYSTEM },
arg_show_types = true;
break;
+ case ARG_JOB_MODE:
+ arg_job_mode = optarg;
+ break;
+
case ARG_FAIL:
arg_job_mode = "fail";
break;