chiark / gitweb /
systemctl: fix style to avoid modification of array passed by caller
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 16 Feb 2016 00:06:53 +0000 (19:06 -0500)
committerSven Eden <yamakuzure@gmx.net>
Fri, 16 Jun 2017 08:12:57 +0000 (10:12 +0200)
Followup for 4524439edb7d.

src/shared/bus-util.c
src/shared/bus-util.h

index 7ab6877..ffcb333 100644 (file)
@@ -2041,8 +2041,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);
@@ -2050,13 +2050,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)) {
@@ -2071,29 +2069,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);
@@ -2144,7 +2143,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);
index 3cda868..6fd6a3e 100644 (file)
@@ -195,7 +195,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);