summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/util.c21
-rw-r--r--src/util.h1
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);