diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/shared/bus-util.c | 31 | ||||
| -rw-r--r-- | src/shared/bus-util.h | 2 | ||||
| -rw-r--r-- | src/systemctl/systemctl.c | 5 | 
3 files changed, 18 insertions, 20 deletions
| diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 1fcf3f6a7f..c87eaf63d8 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -2028,8 +2028,8 @@ static const struct {          { "start-limit", "start of the service was attempted too often" }  }; -static void log_job_error_with_service_result(const char* service, const char *result, const char** extra_args) { -        _cleanup_free_ char *service_shell_quoted = NULL, *_systemctl, *_journalctl; +static void log_job_error_with_service_result(const char* service, const char *result, const char* const* extra_args) { +        _cleanup_free_ char *service_shell_quoted = NULL;          const char *systemctl = "systemctl", *journalctl = "journalct";          assert(service); @@ -2037,13 +2037,11 @@ static void log_job_error_with_service_result(const char* service, const char *r          service_shell_quoted = shell_maybe_quote(service);          if (extra_args && extra_args[1]) { -                assert(extra_args[0] == NULL); +                _cleanup_free_ char *t; -                extra_args[0] = "systemctl"; -                systemctl = _systemctl = strv_join((char**) extra_args, " "); - -                extra_args[0] = "journalctl"; -                journalctl = _journalctl = strv_join((char**) extra_args, " "); +                t = strv_join((char**) extra_args, " "); +                systemctl = strjoina("systemctl ", t ?: "<args>", NULL); +                journalctl = strjoina("journalctl ", t ?: "<args>", NULL);          }          if (!isempty(result)) { @@ -2058,29 +2056,30 @@ static void log_job_error_with_service_result(const char* service, const char *r                                    "See \"%s status %s\" and \"%s -xe\" for details.\n",                                    service,                                    explanations[i].explanation, -                                  systemctl ?: "systemctl <args>", +                                  systemctl,                                    service_shell_quoted ?: "<service>", -                                  journalctl ?: "journalctl <args>"); +                                  journalctl);                          goto finish;                  }          } -        log_error("Job for %s failed. See \"%s status %s\" and \"%s -xe\" for details.\n", +        log_error("Job for %s failed.\n" +                  "See \"%s status %s\" and \"%s -xe\" for details.\n",                    service, -                  systemctl ?: "systemctl <args>", +                  systemctl,                    service_shell_quoted ?: "<service>", -                  journalctl ?: "journalctl <args>"); +                  journalctl);  finish:          /* For some results maybe additional explanation is required */          if (streq_ptr(result, "start-limit"))                  log_info("To force a start use \"%1$s reset-failed %2$s\"\n"                           "followed by \"%1$s start %2$s\" again.", -                         systemctl ?: "systemctl <args>", +                         systemctl,                           service_shell_quoted ?: "<service>");  } -static int check_wait_response(BusWaitForJobs *d, bool quiet, const char** extra_args) { +static int check_wait_response(BusWaitForJobs *d, bool quiet, const char* const* extra_args) {          int r = 0;          assert(d->result); @@ -2131,7 +2130,7 @@ static int check_wait_response(BusWaitForJobs *d, bool quiet, const char** extra          return r;  } -int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet, const char** extra_args) { +int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet, const char* const* extra_args) {          int r = 0;          assert(d); diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h index 26d338beec..fcda1b2c6c 100644 --- a/src/shared/bus-util.h +++ b/src/shared/bus-util.h @@ -180,7 +180,7 @@ typedef struct BusWaitForJobs BusWaitForJobs;  int bus_wait_for_jobs_new(sd_bus *bus, BusWaitForJobs **ret);  void bus_wait_for_jobs_free(BusWaitForJobs *d);  int bus_wait_for_jobs_add(BusWaitForJobs *d, const char *path); -int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet, const char** extra_args); +int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet, const char* const* extra_args);  int bus_wait_for_jobs_one(BusWaitForJobs *d, const char *path, bool quiet);  DEFINE_TRIVIAL_CLEANUP_FUNC(BusWaitForJobs*, bus_wait_for_jobs_free); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 44c13cf4d7..c75d12c136 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2778,10 +2778,9 @@ static int start_unit(int argc, char *argv[], void *userdata) {          }          if (!arg_no_block) { -                int q, arg_count = 1; -                const char* extra_args[5] = {NULL}; +                int q, arg_count = 0; +                const char* extra_args[4] = {}; -                /* leave first empty for the actual command name*/                  if (arg_scope != UNIT_FILE_SYSTEM)                          extra_args[arg_count++] = "--user"; | 
