chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus-util: print "systemctl --user" on user service manager
[elogind.git]
/
src
/
shared
/
bus-util.c
diff --git
a/src/shared/bus-util.c
b/src/shared/bus-util.c
index 4b0337b34a44f0e5f504642b36b6c454b3b65c56..a2912174804342d681d1883a63d038a02fcea55a 100644
(file)
--- a/
src/shared/bus-util.c
+++ b/
src/shared/bus-util.c
@@
-2038,13
+2038,21
@@
static const struct {
{ "start-limit", "start of the service was attempted too often" }
};
{ "start-limit", "start of the service was attempted too often" }
};
-static void log_job_error_with_service_result(const char* service, const char *result) {
- _cleanup_free_ char *service_shell_quoted = NULL;
+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_extra_args = NULL
;
assert(service);
service_shell_quoted = shell_maybe_quote(service);
assert(service);
service_shell_quoted = shell_maybe_quote(service);
+ systemctl_extra_args = strjoin("systemctl ", extra_args, " ", NULL);
+ if (!systemctl_extra_args) {
+ log_oom();
+ return;
+ }
+
+ systemctl_extra_args = strstrip(systemctl_extra_args);
+
if (!isempty(result)) {
unsigned i;
if (!isempty(result)) {
unsigned i;
@@
-2053,27
+2061,30
@@
static void log_job_error_with_service_result(const char* service, const char *r
break;
if (i < ELEMENTSOF(explanations)) {
break;
if (i < ELEMENTSOF(explanations)) {
- log_error("Job for %s failed because %s. See \"
systemctl
status %s\" and \"journalctl -xe\" for details.\n",
+ log_error("Job for %s failed because %s. See \"
%s
status %s\" and \"journalctl -xe\" for details.\n",
service,
explanations[i].explanation,
service,
explanations[i].explanation,
+ systemctl_extra_args,
strna(service_shell_quoted));
goto finish;
}
}
strna(service_shell_quoted));
goto finish;
}
}
- log_error("Job for %s failed. See \"
systemctl
status %s\" and \"journalctl -xe\" for details.\n",
+ log_error("Job for %s failed. See \"
%s
status %s\" and \"journalctl -xe\" for details.\n",
service,
service,
+ systemctl_extra_args,
strna(service_shell_quoted));
finish:
/* For some results maybe additional explanation is required */
if (streq_ptr(result, "start-limit"))
strna(service_shell_quoted));
finish:
/* For some results maybe additional explanation is required */
if (streq_ptr(result, "start-limit"))
- log_info("To force a start use \"systemctl reset-failed %1$s\" followed by \"systemctl start %1$s\" again.",
+ log_info("To force a start use \"%1$s reset-failed %2$s\" followed by \"%1$s start %2$s\" again.",
+ systemctl_extra_args,
strna(service_shell_quoted));
}
strna(service_shell_quoted));
}
-static int check_wait_response(BusWaitForJobs *d, bool quiet) {
+static int check_wait_response(BusWaitForJobs *d, bool quiet
, const char *extra_args
) {
int r = 0;
assert(d->result);
int r = 0;
assert(d->result);
@@
-2100,7
+2111,7
@@
static int check_wait_response(BusWaitForJobs *d, bool quiet) {
if (q < 0)
log_debug_errno(q, "Failed to get Result property of service %s: %m", d->name);
if (q < 0)
log_debug_errno(q, "Failed to get Result property of service %s: %m", d->name);
- log_job_error_with_service_result(d->name, result);
+ log_job_error_with_service_result(d->name, result
, extra_args
);
} else
log_error("Job failed. See \"journalctl -xe\" for details.");
}
} else
log_error("Job failed. See \"journalctl -xe\" for details.");
}
@@
-2124,7
+2135,7
@@
static int check_wait_response(BusWaitForJobs *d, bool quiet) {
return r;
}
return r;
}
-int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet) {
+int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet
, const char *extra_args
) {
int r = 0;
assert(d);
int r = 0;
assert(d);
@@
-2137,7
+2148,7
@@
int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet) {
return log_error_errno(q, "Failed to wait for response: %m");
if (d->result) {
return log_error_errno(q, "Failed to wait for response: %m");
if (d->result) {
- q = check_wait_response(d, quiet);
+ q = check_wait_response(d, quiet
, extra_args
);
/* Return the first error as it is most likely to be
* meaningful. */
if (q < 0 && r == 0)
/* Return the first error as it is most likely to be
* meaningful. */
if (q < 0 && r == 0)
@@
-2172,7
+2183,7
@@
int bus_wait_for_jobs_one(BusWaitForJobs *d, const char *path, bool quiet) {
if (r < 0)
return log_oom();
if (r < 0)
return log_oom();
- return bus_wait_for_jobs(d, quiet);
+ return bus_wait_for_jobs(d, quiet
, NULL
);
}
int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet, UnitFileChange **changes, unsigned *n_changes) {
}
int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet, UnitFileChange **changes, unsigned *n_changes) {