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.
This commit is contained in:
@@ -785,7 +785,8 @@ static int condition_test_needs_update(Condition *c, char **env) {
|
||||
if (r < 0) {
|
||||
log_debug_errno(r, "Failed to parse timestamp file '%s', using mtime: %m", p);
|
||||
return true;
|
||||
} else if (r == 0) {
|
||||
}
|
||||
if (isempty(timestamp_str)) {
|
||||
log_debug("No data in timestamp file '%s', using mtime.", p);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2597,7 +2597,7 @@ int unit_file_enable(
|
||||
assert(scope >= 0);
|
||||
assert(scope < _UNIT_FILE_SCOPE_MAX);
|
||||
|
||||
r = lookup_paths_init(&lp, scope, 0, root_dir);
|
||||
r = lookup_paths_init_or_warn(&lp, scope, 0, root_dir);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user