systemctl: don't confuse sysv code with generated units

The SysV compat code checks whether there's a native unit file before looking
for a SysV init script. Since the newest rework generated units will show up in
the unit path, and hence the checks ended up assuming that there always was a
native unit file for each init script: the generated one.

With this change the generated unit file directory is suppressed from the
search path when this check is done, to avoid the confusion.
This commit is contained in:
Lennart Poettering
2016-04-12 13:43:32 +02:00
parent a69b4fb0f8
commit 4943d14306
7 changed files with 34 additions and 26 deletions
+3 -3
View File
@@ -4810,7 +4810,7 @@ static int cat(int argc, char *argv[], void *userdata) {
return -EINVAL;
}
r = lookup_paths_init(&lp, arg_scope, arg_root);
r = lookup_paths_init(&lp, arg_scope, 0, arg_root);
if (r < 0)
return log_error_errno(r, "Failed to determine unit paths: %m");
@@ -5240,7 +5240,7 @@ static int enable_sysv_units(const char *verb, char **args) {
"is-enabled"))
return 0;
r = lookup_paths_init(&paths, arg_scope, arg_root);
r = lookup_paths_init(&paths, arg_scope, LOOKUP_PATHS_EXCLUDE_GENERATED, arg_root);
if (r < 0)
return r;
@@ -6073,7 +6073,7 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) {
assert(names);
assert(paths);
r = lookup_paths_init(&lp, arg_scope, arg_root);
r = lookup_paths_init(&lp, arg_scope, 0, arg_root);
if (r < 0)
return r;