summaryrefslogtreecommitdiff
path: root/src/manager.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-05-22 03:30:46 +0200
committerLennart Poettering <lennart@poettering.net>2010-05-22 03:30:46 +0200
commitc3f6d6757a0923428a82ff617c10635d4ff4b184 (patch)
tree0e34d596e9b2c8c9bd2a608cceee0984e854ff65 /src/manager.c
parent9a34ec5fbb4b55413dc9d610b636fe760d34ecd7 (diff)
manager: canonicalize search paths and filter out non-existing paths and those pointing to the same fs directory
Diffstat (limited to 'src/manager.c')
-rw-r--r--src/manager.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/manager.c b/src/manager.c
index f6f205fac8..5964fc9223 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -283,15 +283,33 @@ static int manager_find_paths(Manager *m) {
}
}
+ if (m->unit_path)
+ if (!strv_path_canonicalize(m->unit_path))
+ return -ENOMEM;
+
+ if (m->sysvinit_path)
+ if (!strv_path_canonicalize(m->sysvinit_path))
+ return -ENOMEM;
+
+ if (m->sysvrcnd_path)
+ if (!strv_path_canonicalize(m->sysvrcnd_path))
+ return -ENOMEM;
+
strv_uniq(m->unit_path);
strv_uniq(m->sysvinit_path);
strv_uniq(m->sysvrcnd_path);
- assert(!strv_isempty(m->unit_path));
- if (!(t = strv_join(m->unit_path, "\n\t")))
- return -ENOMEM;
- log_debug("Looking for unit files in:\n\t%s", t);
- free(t);
+ if (!strv_isempty(m->unit_path)) {
+
+ if (!(t = strv_join(m->unit_path, "\n\t")))
+ return -ENOMEM;
+ log_debug("Looking for unit files in:\n\t%s", t);
+ free(t);
+ } else {
+ log_debug("Ignoring unit files.");
+ strv_free(m->unit_path);
+ m->unit_path = NULL;
+ }
if (!strv_isempty(m->sysvinit_path)) {
@@ -300,8 +318,11 @@ static int manager_find_paths(Manager *m) {
log_debug("Looking for SysV init scripts in:\n\t%s", t);
free(t);
- } else
+ } else {
log_debug("Ignoring SysV init scripts.");
+ strv_free(m->sysvinit_path);
+ m->sysvinit_path = NULL;
+ }
if (!strv_isempty(m->sysvrcnd_path)) {
@@ -310,8 +331,11 @@ static int manager_find_paths(Manager *m) {
log_debug("Looking for SysV rcN.d links in:\n\t%s", t);
free(t);
- } else
+ } else {
log_debug("Ignoring SysV rcN.d links.");
+ strv_free(m->sysvrcnd_path);
+ m->sysvrcnd_path = NULL;
+ }
return 0;
}