util: introduce dirent_is_file()

This commit is contained in:
Lennart Poettering
2011-06-21 19:29:43 +02:00
parent d0baa06fda
commit fb19a739d5
2 changed files with 16 additions and 6 deletions
+15 -6
View File
@@ -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) {
+1
View File
@@ -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);