summaryrefslogtreecommitdiffstats
path: root/src/systemctl
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-03-10 16:47:51 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-03-29 16:17:56 +0200
commit99aad9a2b9e2c06023a2043976fd9395332ff097 (patch)
tree83f451c5ecbb365e13bcea180f8f6ec9dc729fbb /src/systemctl
parentshared/install: return failure when enablement fails, but process as much as ... (diff)
downloadsystemd-99aad9a2b9e2c06023a2043976fd9395332ff097.tar.xz
systemd-99aad9a2b9e2c06023a2043976fd9395332ff097.zip
systemctl: fix silent failure when --root is not found
Some calls to lookup_path_init() were not followed by any log emission. E.g.: $ SYSTEMD_LOG_LEVEL=debug systemctl --root=/missing enable unit; echo $? 1 Let's add a helper function and use it in various places. $ SYSTEMD_LOG_LEVEL=debug build/systemctl --root=/missing enable unit; echo $? Failed to initialize unit search paths for root directory /missing: No such file or directory 1 $ SYSTEMCTL_SKIP_SYSV=1 build/systemctl --root=/missing enable unit; echo $? Failed to initialize unit search paths for root directory /missing: No such file or directory Failed to enable: No such file or directory. 1 The repeated error in the second case is not very nice, but this is a niche case and I don't think it's worth the trouble to trying to avoid it.
Diffstat (limited to 'src/systemctl')
-rw-r--r--src/systemctl/systemctl-edit.c8
-rw-r--r--src/systemctl/systemctl-enable.c2
-rw-r--r--src/systemctl/systemctl-sysv-compat.c2
3 files changed, 6 insertions, 6 deletions
diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c
index 6ef6cc54a8..f8f810e1cd 100644
--- a/src/systemctl/systemctl-edit.c
+++ b/src/systemctl/systemctl-edit.c
@@ -37,9 +37,9 @@ int verb_cat(int argc, char *argv[], void *userdata) {
if (arg_transport != BUS_TRANSPORT_LOCAL)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Cannot remotely cat units.");
- r = lookup_paths_init(&lp, arg_scope, 0, arg_root);
+ r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root);
if (r < 0)
- return log_error_errno(r, "Failed to determine unit paths: %m");
+ return r;
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
@@ -507,9 +507,9 @@ int verb_edit(int argc, char *argv[], void *userdata) {
if (arg_transport != BUS_TRANSPORT_LOCAL)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Cannot edit units remotely.");
- r = lookup_paths_init(&lp, arg_scope, 0, arg_root);
+ r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root);
if (r < 0)
- return log_error_errno(r, "Failed to determine unit paths: %m");
+ return r;
r = mac_selinux_init();
if (r < 0)
diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c
index b18c516b26..a1ca837d4d 100644
--- a/src/systemctl/systemctl-enable.c
+++ b/src/systemctl/systemctl-enable.c
@@ -141,7 +141,7 @@ int verb_enable(int argc, char *argv[], void *userdata) {
if (STR_IN_SET(verb, "mask", "unmask")) {
_cleanup_(lookup_paths_free) LookupPaths lp = {};
- r = lookup_paths_init(&lp, arg_scope, 0, arg_root);
+ r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root);
if (r < 0)
return r;
diff --git a/src/systemctl/systemctl-sysv-compat.c b/src/systemctl/systemctl-sysv-compat.c
index 017dba2034..c6e8defd1b 100644
--- a/src/systemctl/systemctl-sysv-compat.c
+++ b/src/systemctl/systemctl-sysv-compat.c
@@ -128,7 +128,7 @@ int enable_sysv_units(const char *verb, char **args) {
"is-enabled"))
return 0;
- r = lookup_paths_init(&paths, arg_scope, LOOKUP_PATHS_EXCLUDE_GENERATED, arg_root);
+ r = lookup_paths_init_or_warn(&paths, arg_scope, LOOKUP_PATHS_EXCLUDE_GENERATED, arg_root);
if (r < 0)
return r;