[PATCH] PR libstdc++/86910 fix filesystem::create_directories

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] PR libstdc++/86910 fix filesystem::create_directories

Jonathan Wakely-3
Implement the proposed semantics from P1164R0, which reverts the changes
of LWG 2935. This means that failure to create a directory because a
non-directory already exists with that name will be reported as an
error.

While rewriting the function, also fix PR 87846, which is a result of
the C++17 changes to how a trailing slash on a path affects the last
component of a path.

        PR libstdc++/86910
        PR libstdc++/87846
        * src/filesystem/ops.cc (experimental::create_directories): Report
        an error when the path resolves to an existing non-directory (P1164).
        * src/filesystem/std-ops.cc (create_directories): Likewise. Handle
        empty filenames due to trailing slashes.
        * testsuite/27_io/filesystem/operations/create_directories.cc: Test
        when some component of the path exists and is not a directory. Test
        trailing slashes.
        * testsuite/experimental/filesystem/operations/create_directories.cc:
        Likewise.

Tested powerpc64le-linux, committed to trunk.


patch.txt (8K) Download Attachment