diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-04-28 04:55:05 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-04-28 04:55:05 +0200 |
commit | a9dd208208e672a4fe5a3c2405946c1506e034db (patch) | |
tree | 42f069093153a5db7b78de55270dc4ef5ccbecff /src | |
parent | ac3f50caa50835a429fc59d9168799bbb6e24fb9 (diff) |
lookup: drop empty directories from search paths
Diffstat (limited to 'src')
-rw-r--r-- | src/path-lookup.c | 4 | ||||
-rw-r--r-- | src/util.c | 20 | ||||
-rw-r--r-- | src/util.h | 1 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/path-lookup.c b/src/path-lookup.c index b39ce8b699..b1c69814ca 100644 --- a/src/path-lookup.c +++ b/src/path-lookup.c @@ -205,6 +205,7 @@ int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) { return -ENOMEM; strv_uniq(p->unit_path); + strv_path_remove_empty(p->unit_path); if (!strv_isempty(p->unit_path)) { @@ -259,6 +260,9 @@ int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) { strv_uniq(p->sysvinit_path); strv_uniq(p->sysvrcnd_path); + strv_path_remove_empty(p->sysvinit_path); + strv_path_remove_empty(p->sysvrcnd_path); + if (!strv_isempty(p->sysvinit_path)) { if (!(t = strv_join(p->sysvinit_path, "\n\t"))) diff --git a/src/util.c b/src/util.c index 5029896ef0..6037455f70 100644 --- a/src/util.c +++ b/src/util.c @@ -1209,6 +1209,26 @@ char **strv_path_canonicalize(char **l) { return l; } +char **strv_path_remove_empty(char **l) { + char **f, **t; + + if (!l) + return NULL; + + for (f = t = l; *f; f++) { + + if (dir_is_empty(*f) > 0) { + free(*f); + continue; + } + + *(t++) = *f; + } + + *t = NULL; + return l; +} + int reset_all_signal_handlers(void) { int sig; diff --git a/src/util.h b/src/util.h index 7fa488b0f5..ff29474502 100644 --- a/src/util.h +++ b/src/util.h @@ -224,6 +224,7 @@ char *path_make_absolute_cwd(const char *p); char **strv_path_make_absolute_cwd(char **l); char **strv_path_canonicalize(char **l); +char **strv_path_remove_empty(char **l); int reset_all_signal_handlers(void); |