PR libstdc++/83626 handle ENOENT due to filesystem race
commit5310392950a93a58fb59a6f659d01137c4b682ec
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Jan 2018 18:02:18 +0000 (5 18:02 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Jan 2018 18:02:18 +0000 (5 18:02 +0000)
tree3ed7c9569ed1cbe6f874fc17ea1c273eefa56808
parente6ece981d1c67e546251b3af1ead9e04ca3cdb45
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256283 138bc75d-0d04-0410-961f-82ee72b054a4
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