diff options
-rw-r--r-- | src/util.c | 21 | ||||
-rw-r--r-- | src/util.h | 1 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/util.c b/src/util.c index 4046938fcd..7f59021826 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 79d634bb63..f2156afb60 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); |