libstdc++: check for openat with dirfd in std::filesystem
authorAlexandre Oliva <oliva@adacore.com>
Mon, 27 Jun 2022 13:34:16 +0000 (10:34 -0300)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 22 Jul 2022 11:52:04 +0000 (12:52 +0100)
In the recent patch to check for openat, I missed an occurrence of
dirfd in std::filesystem.

for  libstdc++-v3/ChangeLog

* src/c++17/fs_dir.cc (dir_and_pathname): Use dirfd if
_GLIBCXX_HAVE_OPENAT.

(cherry picked from commit 486893b1d325d22d54c1380937943913a7501f91)

libstdc++-v3/src/c++17/fs_dir.cc

index c67fe76..25b33ba 100644 (file)
@@ -124,7 +124,7 @@ struct fs::_Dir : _Dir_base
   dir_and_pathname() const noexcept
   {
     const fs::path& p = entry.path();
-#if _GLIBCXX_HAVE_DIRFD
+#if _GLIBCXX_HAVE_DIRFD && _GLIBCXX_HAVE_OPENAT
     if (!p.empty())
       return {::dirfd(this->dirp), std::prev(p.end())->c_str()};
 #endif