diff options
Diffstat (limited to 'libstdc++-v3/src/filesystem/std-dir.cc')
-rw-r--r-- | libstdc++-v3/src/filesystem/std-dir.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libstdc++-v3/src/filesystem/std-dir.cc b/libstdc++-v3/src/filesystem/std-dir.cc index 98eb22ab920..c14fa185974 100644 --- a/libstdc++-v3/src/filesystem/std-dir.cc +++ b/libstdc++-v3/src/filesystem/std-dir.cc @@ -57,7 +57,13 @@ struct fs::_Dir : _Dir_base { if (const auto entp = _Dir_base::advance(skip_permission_denied, ec)) { - entry = fs::directory_entry{path / entp->d_name, get_file_type(*entp)}; + file_type type = file_type::none; +#ifdef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE + // Even if the OS supports dirent::d_type the filesystem might not: + if (entp->d_type != DT_UNKNOWN) + type = get_file_type(*entp); +#endif + entry = fs::directory_entry{path / entp->d_name, type}; return true; } else if (!ec) |