X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsystemctl%2Fsystemctl.c;h=af3cc9791120af30275111a9916da3c91b9f51bd;hp=12175923e938391635ab6ce0470d1f0575fde5b4;hb=08073121d8171f8e6be27b0c80e2ec283064760e;hpb=e94937df954451eb4aa63573f0d7404ed2db987e diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 12175923e..af3cc9791 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -137,23 +137,6 @@ static unsigned arg_lines = 10; static OutputMode arg_output = OUTPUT_SHORT; static bool arg_plain = false; -static const struct { - const char *verb; - const char *method; -} unit_actions[] = { - { "start", "StartUnit" }, - { "stop", "StopUnit" }, - { "condstop", "StopUnit" }, - { "reload", "ReloadUnit" }, - { "restart", "RestartUnit" }, - { "try-restart", "TryRestartUnit" }, - { "condrestart", "TryRestartUnit" }, - { "reload-or-restart", "ReloadOrRestartUnit" }, - { "reload-or-try-restart", "ReloadOrTryRestartUnit" }, - { "condreload", "ReloadOrTryRestartUnit" }, - { "force-reload", "ReloadOrTryRestartUnit" } -}; - static bool original_stdout_is_tty; static int daemon_reload(sd_bus *bus, char **args); @@ -2186,7 +2169,7 @@ static int cancel_job(sd_bus *bus, char **args) { NULL, "u", id); if (r < 0) { - log_error("Failed to cancel job %u: %s", (unsigned) id, bus_error_message(&error, r)); + log_error("Failed to cancel job %"PRIu32": %s", id, bus_error_message(&error, r)); return r; } } @@ -2350,18 +2333,18 @@ static int check_wait_response(WaitData *d) { else if (streq(d->result, "canceled")) log_error("Job for %s canceled.", strna(d->name)); else if (streq(d->result, "dependency")) - log_error("A dependency job for %s failed. See 'journalctl -xn' for details.", strna(d->name)); + log_error("A dependency job for %s failed. See 'journalctl -xe' for details.", strna(d->name)); else if (!streq(d->result, "done") && !streq(d->result, "skipped")) { if (d->name) { bool quotes; quotes = chars_intersect(d->name, SHELL_NEED_QUOTES); - log_error("Job for %s failed. See \"systemctl status %s%s%s\" and \"journalctl -xn\" for details.", + log_error("Job for %s failed. See \"systemctl status %s%s%s\" and \"journalctl -xe\" for details.", d->name, quotes ? "'" : "", d->name, quotes ? "'" : ""); } else - log_error("Job failed. See \"journalctl -xn\" for details."); + log_error("Job failed. See \"journalctl -xe\" for details."); } } @@ -2539,6 +2522,23 @@ static int check_triggering_units( return 0; } +static const struct { + const char *verb; + const char *method; +} unit_actions[] = { + { "start", "StartUnit" }, + { "stop", "StopUnit" }, + { "condstop", "StopUnit" }, + { "reload", "ReloadUnit" }, + { "restart", "RestartUnit" }, + { "try-restart", "TryRestartUnit" }, + { "condrestart", "TryRestartUnit" }, + { "reload-or-restart", "ReloadOrRestartUnit" }, + { "reload-or-try-restart", "ReloadOrTryRestartUnit" }, + { "condreload", "ReloadOrTryRestartUnit" }, + { "force-reload", "ReloadOrTryRestartUnit" } +}; + static const char *verb_to_method(const char *verb) { uint i; @@ -2704,7 +2704,7 @@ static enum action verb_to_action(const char *verb) { static int start_unit(sd_bus *bus, char **args) { _cleanup_set_free_free_ Set *s = NULL; _cleanup_strv_free_ char **names = NULL; - const char *method, *mode, *one_name; + const char *method, *mode, *one_name, *suffix = NULL; char **name; int r = 0; @@ -2717,8 +2717,11 @@ static int start_unit(sd_bus *bus, char **args) { method = verb_to_method(args[0]); action = verb_to_action(args[0]); - mode = streq(args[0], "isolate") ? "isolate" : - action_table[action].mode ?: arg_job_mode; + if (streq(args[0], "isolate")) { + mode = "isolate"; + suffix = ".target"; + } else + mode = action_table[action].mode ?: arg_job_mode; one_name = action_table[action].target; } else { @@ -2734,7 +2737,7 @@ static int start_unit(sd_bus *bus, char **args) { if (one_name) names = strv_new(one_name, NULL); else { - r = expand_names(bus, args + 1, NULL, &names); + r = expand_names(bus, args + 1, suffix, &names); if (r < 0) log_error("Failed to expand names: %s", strerror(-r)); } @@ -3409,7 +3412,7 @@ static void print_status_info( if (i->main_pid > 0 || i->control_pid > 0) { if (i->main_pid > 0) { - printf(" Main PID: %u", (unsigned) i->main_pid); + printf(" Main PID: "PID_FMT, i->main_pid); if (i->running) { _cleanup_free_ char *comm = NULL; @@ -3440,7 +3443,7 @@ static void print_status_info( if (i->control_pid > 0) { _cleanup_free_ char *c = NULL; - printf(" %8s: %u", i->main_pid ? "" : " Control", (unsigned) i->control_pid); + printf(" %8s: "PID_FMT, i->main_pid ? "" : " Control", i->control_pid); get_process_comm(i->control_pid, &c); if (c) @@ -3828,7 +3831,7 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte return bus_log_parse_error(r); if (u > 0) - printf("%s=%u\n", name, (unsigned) u); + printf("%s=%"PRIu32"\n", name, u); else if (arg_all) printf("%s=\n", name); @@ -3999,14 +4002,14 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte tt = strv_join(info.argv, " "); - printf("%s={ path=%s ; argv[]=%s ; ignore_errors=%s ; start_time=[%s] ; stop_time=[%s] ; pid=%u ; code=%s ; status=%i%s%s }\n", + printf("%s={ path=%s ; argv[]=%s ; ignore_errors=%s ; start_time=[%s] ; stop_time=[%s] ; pid="PID_FMT" ; code=%s ; status=%i%s%s }\n", name, strna(info.path), strna(tt), yes_no(info.ignore), strna(format_timestamp(timestamp1, sizeof(timestamp1), info.start_timestamp)), strna(format_timestamp(timestamp2, sizeof(timestamp2), info.exit_timestamp)), - (unsigned) info. pid, + info.pid, sigchld_code_to_string(info.code), info.status, info.code == CLD_EXITED ? "" : "/",