From: Lennart Poettering Date: Thu, 28 Apr 2011 02:55:05 +0000 (+0200) Subject: lookup: drop empty directories from search paths X-Git-Tag: v26~8 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9dd208208e672a4fe5a3c2405946c1506e034db;p=systemd lookup: drop empty directories from search paths --- diff --git a/TODO b/TODO index 106ee974..d5479b50 100644 --- a/TODO +++ b/TODO @@ -34,8 +34,6 @@ Features: * Maybe merge nss-myhostname into systemd? -* ensure we strip empty directories from search path - * GC unreferenced jobs (such as .device jobs) * support wildcard expansion in ListenStream= and friends diff --git a/src/path-lookup.c b/src/path-lookup.c index b39ce8b6..b1c69814 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 5029896e..6037455f 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 7fa488b0..ff294745 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);