This fixes linking against a DLL of libc++ while using the common headers (generated from the static version of the library, but which work for both shared and static versions) when calling e.g. std::filesystem::u8path.
80 lines
2.7 KiB
Diff
80 lines
2.7 KiB
Diff
From 6f225c9fca50bda8911a4909b3cbf0eb28733384 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
|
Date: Fri, 30 Oct 2020 22:24:25 +0200
|
|
Subject: [PATCH 10/25] [libcxx] Use the posix code for
|
|
directory_entry::__do_refresh
|
|
|
|
This works just fine for windows, as all the functions it calls
|
|
are implemented and wrapped for windows.
|
|
|
|
Differential Revision: https://reviews.llvm.org/D91173
|
|
|
|
(cherry picked from commit 4d292d531bea6f7a6021f212e59b3826bc7cd913)
|
|
---
|
|
libcxx/src/filesystem/operations.cpp | 43 ----------------------------
|
|
1 file changed, 43 deletions(-)
|
|
|
|
diff --git a/libcxx/src/filesystem/operations.cpp b/libcxx/src/filesystem/operations.cpp
|
|
index a5463e48f4d7..dccec9378531 100644
|
|
--- a/libcxx/src/filesystem/operations.cpp
|
|
+++ b/libcxx/src/filesystem/operations.cpp
|
|
@@ -1847,7 +1847,6 @@ size_t __char_to_wide(const string &str, wchar_t *out, size_t outlen) {
|
|
// directory entry definitions
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
-#ifndef _LIBCPP_WIN32API
|
|
error_code directory_entry::__do_refresh() noexcept {
|
|
__data_.__reset();
|
|
error_code failure_ec;
|
|
@@ -1901,47 +1900,5 @@ error_code directory_entry::__do_refresh() noexcept {
|
|
|
|
return failure_ec;
|
|
}
|
|
-#else
|
|
-error_code directory_entry::__do_refresh() noexcept {
|
|
- __data_.__reset();
|
|
- error_code failure_ec;
|
|
-
|
|
- file_status st = _VSTD_FS::symlink_status(__p_, failure_ec);
|
|
- if (!status_known(st)) {
|
|
- __data_.__reset();
|
|
- return failure_ec;
|
|
- }
|
|
-
|
|
- if (!_VSTD_FS::exists(st) || !_VSTD_FS::is_symlink(st)) {
|
|
- __data_.__cache_type_ = directory_entry::_RefreshNonSymlink;
|
|
- __data_.__type_ = st.type();
|
|
- __data_.__non_sym_perms_ = st.permissions();
|
|
- } else { // we have a symlink
|
|
- __data_.__sym_perms_ = st.permissions();
|
|
- // Get the information about the linked entity.
|
|
- // Ignore errors from stat, since we don't want errors regarding symlink
|
|
- // resolution to be reported to the user.
|
|
- error_code ignored_ec;
|
|
- st = _VSTD_FS::status(__p_, ignored_ec);
|
|
-
|
|
- __data_.__type_ = st.type();
|
|
- __data_.__non_sym_perms_ = st.permissions();
|
|
-
|
|
- // If we failed to resolve the link, then only partially populate the
|
|
- // cache.
|
|
- if (!status_known(st)) {
|
|
- __data_.__cache_type_ = directory_entry::_RefreshSymlinkUnresolved;
|
|
- return error_code{};
|
|
- }
|
|
- __data_.__cache_type_ = directory_entry::_RefreshSymlink;
|
|
- }
|
|
-
|
|
- // FIXME: This is currently broken, and the implementation only a placeholder.
|
|
- // We need to cache last_write_time, file_size, and hard_link_count here before
|
|
- // the implementation actually works.
|
|
-
|
|
- return failure_ec;
|
|
-}
|
|
-#endif
|
|
|
|
_LIBCPP_END_NAMESPACE_FILESYSTEM
|
|
--
|
|
2.25.1
|
|
|