return endswith(de->d_name, suffix);
}
-struct dirent* readdir_no_dot(DIR *dirp) {
- struct dirent* d;
+struct dirent *readdir_ensure_type(DIR *d) {
+ struct dirent *de;
+
+ assert(d);
+
+ errno = 0;
+ de = readdir(d);
+ if (de)
+ (void) dirent_ensure_type(d, de);
+ return de;
+}
+
+struct dirent *readdir_no_dot(DIR *dirp) {
+ struct dirent *d;
for (;;) {
d = readdir(dirp);
bool dirent_is_file(const struct dirent *de) _pure_;
bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) _pure_;
-struct dirent* readdir_no_dot(DIR *dirp);
+struct dirent *readdir_ensure_type(DIR *d);
+struct dirent *readdir_no_dot(DIR *dirp);
#define FOREACH_DIRENT(de, d, on_error) \
for (errno = 0, de = readdir(d);; errno = 0, de = readdir(d)) \