From: Lennart Poettering Date: Mon, 23 May 2011 19:39:15 +0000 (+0200) Subject: util: introduce dirent_is_file() X-Git-Tag: v30~188 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=fb19a739d528651e6c78e198269ae856192ffc68;ds=sidebyside util: introduce dirent_is_file() --- diff --git a/src/util.c b/src/util.c index 4046938fc..7f5902182 100644 --- a/src/util.c +++ b/src/util.c @@ -4181,6 +4181,20 @@ finish: return r; } +bool dirent_is_file(struct dirent *de) { + assert(de); + + if (ignore_file(de->d_name)) + return false; + + if (de->d_type != DT_REG && + de->d_type != DT_LNK && + de->d_type != DT_UNKNOWN) + return false; + + return true; +} + void execute_directory(const char *directory, DIR *d, char *argv[]) { DIR *_d = NULL; struct dirent *de; @@ -4214,12 +4228,7 @@ void execute_directory(const char *directory, DIR *d, char *argv[]) { pid_t pid; int k; - if (ignore_file(de->d_name)) - continue; - - if (de->d_type != DT_REG && - de->d_type != DT_LNK && - de->d_type != DT_UNKNOWN) + if (!dirent_is_file(de)) continue; if (asprintf(&path, "%s/%s", directory, de->d_name) < 0) { diff --git a/src/util.h b/src/util.h index 79d634bb6..f2156afb6 100644 --- a/src/util.h +++ b/src/util.h @@ -268,6 +268,7 @@ bool path_equal(const char *a, const char *b); char *ascii_strlower(char *path); +bool dirent_is_file(struct dirent *de); bool ignore_file(const char *filename); bool chars_intersect(const char *a, const char *b);