libstdc++: Fix directory iterator build for newlib
authorJonathan Wakely <jwakely@redhat.com>
Tue, 8 Feb 2022 21:05:30 +0000 (21:05 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 10 Feb 2022 13:01:10 +0000 (13:01 +0000)
When building for newlib HAVE_OPENAT and HAVE_UNLINKAT are (sometimes?)
defined, but <fcntl.h> is only included when HAVE_DIRENT_H is defined.
Since directory iterators are completely useless without <dirent.h>,
just override the HAVE_OPENAT and HAVE_UNLINKAT detection when we don't
have <dirent.h>.

libstdc++-v3/ChangeLog:

* src/filesystem/dir-common.h (_GLIBCXX_HAVE_DIRFD): Undefine
when <dirent.h> is not available.
(_GLIBCXX_HAVE_UNLINKAT):  Likewise.

libstdc++-v3/src/filesystem/dir-common.h

index 511b988..365fd52 100644 (file)
@@ -70,6 +70,8 @@ struct DIR { };
 inline DIR* opendir(const char*) { return nullptr; }
 inline dirent* readdir(DIR*) { return nullptr; }
 inline int closedir(DIR*) { return -1; }
+#undef _GLIBCXX_HAVE_DIRFD
+#undef _GLIBCXX_HAVE_UNLINKAT
 #endif
 } // namespace __gnu_posix