diff options
author | Martin Storsjö <martin@martin.st> | 2020-10-30 22:24:25 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2021-02-05 22:47:33 +0200 |
commit | 4d292d531bea6f7a6021f212e59b3826bc7cd913 (patch) | |
tree | f1b7cb064bacc69c1adb4d5b3fd70a2925d9b17b /libcxx/src/filesystem/operations.cpp | |
parent | f6342806dbfcae5320013331958dae98855e75f6 (diff) | |
download | llvm-4d292d531bea6f7a6021f212e59b3826bc7cd913.zip llvm-4d292d531bea6f7a6021f212e59b3826bc7cd913.tar.gz llvm-4d292d531bea6f7a6021f212e59b3826bc7cd913.tar.bz2 |
[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
Diffstat (limited to 'libcxx/src/filesystem/operations.cpp')
-rw-r--r-- | libcxx/src/filesystem/operations.cpp | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/libcxx/src/filesystem/operations.cpp b/libcxx/src/filesystem/operations.cpp index a5463e4..dccec93 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 |