X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsystemctl.c;h=d1892e4ae05bfdd27ebe0716faf20a16c094416c;hb=b5f776cee9afc14e6c4b945be0576ab3b27e33b7;hp=d90471773ecb2b6c9fdc0ed0058a703c1e501df0;hpb=b574246b4f8e4eb86c29c38c7df47b541b68188a;p=elogind.git diff --git a/src/systemctl.c b/src/systemctl.c index d90471773..d1892e4ae 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -49,7 +49,7 @@ static const char *arg_type = NULL; static const char *arg_property = NULL; static bool arg_all = false; -static bool arg_replace = false; +static bool arg_fail = false; static bool arg_session = false; static bool arg_no_block = false; static bool arg_immediate = false; @@ -742,8 +742,8 @@ static int start_unit(DBusConnection *bus, char **args, unsigned n) { (streq(args[0], "isolate") || streq(args[0], "rescue") || streq(args[0], "emergency")) ? "isolate" : - arg_replace ? "replace" : - "fail"; + arg_fail ? "fail" : + "replace"; one_name = table[verb_to_action(args[0])]; @@ -794,12 +794,17 @@ finish: } static int start_special(DBusConnection *bus, char **args, unsigned n) { + int r; + assert(bus); assert(args); - warn_wall(verb_to_action(args[0])); + r = start_unit(bus, args, n); + + if (r >= 0) + warn_wall(verb_to_action(args[0])); - return start_unit(bus, args, n); + return r; } static int check_unit(DBusConnection *bus, char **args, unsigned n) { @@ -1100,9 +1105,6 @@ static void print_status_info(UnitStatusInfo *i) { else if (i->what) printf("\t What: %s\n", i->what); - if (i->status_text) - printf("\t Status: \"%s\"\n", i->status_text); - if (i->accept) printf("\tAccepted: %u; Connected: %u\n", i->n_accepted, i->n_connections); @@ -1175,6 +1177,9 @@ static void print_status_info(UnitStatusInfo *i) { printf("\n"); } + if (i->status_text) + printf("\t Status: \"%s\"\n", i->status_text); + if (i->default_control_group) { unsigned c; @@ -2490,7 +2495,7 @@ static int systemctl_help(void) { " -t --type=TYPE List only units of a particular type\n" " -p --property=NAME Show only properties by this name\n" " -a --all Show all units/properties, including dead/empty ones\n" - " --replace When installing a new job, replace existing conflicting ones\n" + " --fail When installing a new job, fail if conflicting jobs are pending\n" " --system Connect to system bus\n" " --session Connect to session bus\n" " -q --quiet Suppress output\n" @@ -2599,7 +2604,7 @@ static int runlevel_help(void) { static int systemctl_parse_argv(int argc, char *argv[]) { enum { - ARG_REPLACE = 0x100, + ARG_FAIL = 0x100, ARG_SESSION, ARG_SYSTEM, ARG_NO_BLOCK, @@ -2611,7 +2616,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { { "type", required_argument, NULL, 't' }, { "property", required_argument, NULL, 'p' }, { "all", no_argument, NULL, 'a' }, - { "replace", no_argument, NULL, ARG_REPLACE }, + { "fail", no_argument, NULL, ARG_FAIL }, { "session", no_argument, NULL, ARG_SESSION }, { "system", no_argument, NULL, ARG_SYSTEM }, { "no-block", no_argument, NULL, ARG_NO_BLOCK }, @@ -2650,8 +2655,8 @@ static int systemctl_parse_argv(int argc, char *argv[]) { arg_all = true; break; - case ARG_REPLACE: - arg_replace = true; + case ARG_FAIL: + arg_fail = true; break; case ARG_SESSION: @@ -3292,26 +3297,29 @@ static int reload_with_fallback(DBusConnection *bus) { static int start_with_fallback(DBusConnection *bus) { int r; - warn_wall(arg_action); if (bus) { /* First, try systemd via D-Bus. */ if ((r = start_unit(bus, NULL, 0)) > 0) - return 0; + goto done; /* Hmm, talking to systemd via D-Bus didn't work. Then * let's try to talk to Upstart via D-Bus. */ if ((r = talk_upstart()) > 0) - return 0; + goto done; } /* Nothing else worked, so let's try * /dev/initctl */ if ((r = talk_initctl()) != 0) - return 0; + goto done; log_error("Failed to talk to init daemon."); return -EIO; + +done: + warn_wall(arg_action); + return 0; } static int halt_main(DBusConnection *bus) {