diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c index 0c5aab6968..c93c02bf48 100644 --- a/src/initctl/initctl.c +++ b/src/initctl/initctl.c @@ -81,7 +81,7 @@ static const char *translate_runlevel(int runlevel, bool *isolate) { return NULL; } -static void change_runlevel(Server *s, int runlevel) { +static int change_runlevel(Server *s, int runlevel) { const char *target; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; const char *mode; @@ -93,7 +93,7 @@ static void change_runlevel(Server *s, int runlevel) { target = translate_runlevel(runlevel, &isolate); if (!target) { log_warning("Got request for unknown runlevel %c, ignoring.", runlevel); - return; + return 0; } if (isolate) @@ -112,10 +112,10 @@ static void change_runlevel(Server *s, int runlevel) { &error, NULL, "ss", target, mode); - if (r < 0) { - log_error("Failed to change runlevel: %s", bus_error_message(&error, -r)); - return; - } + if (r < 0) + return log_error_errno(r, "Failed to change runlevel: %s", bus_error_message(&error, -r)); + + return 0; } static void request_process(Server *s, const struct init_request *req) { @@ -156,7 +156,7 @@ static void request_process(Server *s, const struct init_request *req) { break; default: - change_runlevel(s, req->runlevel); + (void) change_runlevel(s, req->runlevel); } return;