PR libstdc++/83626 handle ENOENT due to filesystem race
authorJonathan Wakely <jwakely@redhat.com>
Fri, 5 Jan 2018 18:02:18 +0000 (18:02 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 5 Jan 2018 18:02:18 +0000 (18:02 +0000)
commit388058dd06b26e8f55d315b3c49b707d51c7a089
tree3ed7c9569ed1cbe6f874fc17ea1c273eefa56808
parent958d63e911b3fd4c3172e7c87b2e6b6050374f76
PR libstdc++/83626 handle ENOENT due to filesystem race

PR libstdc++/83626
* src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
report an error for ENOENT.
(remove_all(const path&)): Fix type of result variable.
(remove_all(const path&, error_code&)): Use non-throwing increment
for directory iterator. Call POSIX remove directly to avoid redundant
calls to symlink_status. Do not report errors for ENOENT.
* src/filesystem/std-ops.cc: Likewise.
* testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
overload.
* testsuite/experimental/filesystem/operations/remove_all.cc:
Likewise.

From-SVN: r256283
libstdc++-v3/ChangeLog
libstdc++-v3/src/filesystem/ops.cc
libstdc++-v3/src/filesystem/std-ops.cc
libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc