[libcxx] Implement the stat function family on top of native windows APIs
authorMartin Storsjö <martin@martin.st>
Wed, 4 Nov 2020 14:59:07 +0000 (16:59 +0200)
committerMartin Storsjö <martin@martin.st>
Fri, 29 Jan 2021 11:37:54 +0000 (13:37 +0200)
commit2ff8662b5d16129ec6d1ee60dcec4f6ff8f717e2
treeebcbfe45c56ac5343f94a064becaafc88b70cc65
parent305ac81e1d4bbd037587190175e4d0b5631300e1
[libcxx] Implement the stat function family on top of native windows APIs

While the windows CRTs (the modern UCRT, and the legacy msvcrt.dll
that mingw still often defaults to) do provide stat functions, they're
a bit lacking - they only provide second precision on the modification
time, lack support for symlinks and a few other details.

Instead reimplement them using a couple windows native functions,
getting exactly the info we need. (Technically, the implementation
within the CRT calls these functions anyway.)

If we only need a few fields, we could also do with fewer calls, as a
later optimization.

Differential Revision: https://reviews.llvm.org/D91141
libcxx/src/CMakeLists.txt
libcxx/src/filesystem/filesystem_common.h
libcxx/src/filesystem/operations.cpp
libcxx/src/filesystem/posix_compat.h [new file with mode: 0644]