diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-05-22 03:30:46 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-05-22 03:30:46 +0200 |
commit | c3f6d6757a0923428a82ff617c10635d4ff4b184 (patch) | |
tree | 0e34d596e9b2c8c9bd2a608cceee0984e854ff65 /src/manager.c | |
parent | 9a34ec5fbb4b55413dc9d610b636fe760d34ecd7 (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.c | 38 |
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; } |