68b20ca4d9c4bee2c2ad5a9240599b3e4b78d0ba |
|
06-Feb-2018 |
Nico Weber <nicolasweber@gmx.de> |
Fix building libc++ with the macOS 10.13 SDK with -mmacosx-version-min=10.12 or lower. The 10.13 SDK always defines utimensat() (with an availability(macosx=10.13) annotation) and unconditionally defines UTIME_OMIT, so use the compile-time availability macros on Apple platforms instead. For people statically linking libc++, it might make sense to also provide an opt-in option for using __builtin_available() to dynamically check for the OS version, but for now let's do the smallest thing needed to unbreak the build. Based on a patch by Eric Fiselier <eric@efcs.ca>: https://reviews.llvm.org/D34249 Fixes PR33469. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@324385 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
af1fd7c75f5cb2a19c11339d60b4fa2da31fd901 |
|
04-Feb-2018 |
Eric Fiselier <eric@efcs.ca> |
Address LWG 2849 and fix missing failure condition in copy_file. Previously copy_file didn't handle the case where the input and output were the same file. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@324187 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
45d5893943f0099a4ef827d699708cda005a37f5 |
|
11-Jan-2018 |
Ekaterina Vaartis <vaartis@cock.li> |
Make std::experimental::filesystem::remove and remove_all return false or 0 if the file doesn't exist Differential Revision: https://reviews.llvm.org/D41830 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
14d7b698bfd65044583ae34ab136bd84016cc16e |
|
25-Dec-2017 |
Don Hinton <hintonda@gmail.com> |
[libcxx] Suppress unused warning on apple. Summary: This warning is already suppressed on non-apple platforms, so this change just suppresses it on apple as well. Reviewers: EricWF, lichray Reviewed By: lichray Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D41248 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@321435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
4aee06b818ed7ee73a7be11997fc8b9afb442bbe |
|
02-Aug-2017 |
Marshall Clow <mclow.lists@gmail.com> |
Rename a couple variables to eliminate a shadow warning. No functionality change git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@309881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
b2e9337b06425b4af554651d5f2fa65615eb009f |
|
08-Jul-2017 |
Eric Fiselier <eric@efcs.ca> |
Fix filesystem build on platforms with weird time_t types. 32-bit powerpc provides a 64 bit time_t type and older ppc64 systems provide time_t as a floating point type. This caused problems when building operations.cpp since operations.cpp contained compile time tests for conversions between time_t and filesystem time type. When these tests failed they caused the libc++ build to fail as well. This is unfortunate. This patch moves the tests out of the source file and into the test suite. It also expands the tests to allow testing of the weird time_t configurations on all platforms. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
3288eac67369acd35e37ee70d140af2836957f0b |
|
05-Jul-2017 |
Eric Fiselier <eric@efcs.ca> |
Implement LWG 2937 - equivalent("dne", "exists") is not an error This patch speculatively implements the PR for LWG 2937, which fixes two issues with equivalent. (1) It makes equivalent("dne", "exists") an error. Previously only equivalent("dne", "dne") was an error and the former case was not (it returned false). Now equivalent reports an error when either input doesn't exist. (2) It makes equivalent(p1, p2) well-formed when `is_other(p1) && is_other(p2)`. Previously this was an error, but there is seemingly no reason why it should be on POSIX system. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307117 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
4b1c560ca313f8fdd268d93586b175b60124b738 |
|
16-Jun-2017 |
Eric Fiselier <eric@efcs.ca> |
Fix potential bug by casting to the POSIX specified type git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@305549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
50ca6f720fca3ef95813d1366bea47cd081814b6 |
|
05-May-2017 |
Eric Fiselier <eric@efcs.ca> |
Fix remaining GCC 7 build warnings git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
166d27ed3133af1deb0c1b73ab142847e1942644 |
|
07-Feb-2017 |
Saleem Abdulrasool <compnerd@compnerd.org> |
filesystem: return the constructed object This really should get identified properly by the compiler to convert to a NVRO, but compress the code anyways. This makes the implementation identical to directory_iterator.cpp git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294270 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
7566869dabd82699f26c8c95f18de331ec3950ce |
|
05-Feb-2017 |
Saleem Abdulrasool <compnerd@compnerd.org> |
filesystem: fix n4100 conformance for `temp_directory_path` N4100 states that an error shall be reported if `!exists(p) || !is_directory(p)`. We were missing the first half of the conditional. Invert the error and normal code paths to make the code easier to follow. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
1e1bbc7437f4679ce8b6ed5984f2cc72a96f3349 |
|
16-Oct-2016 |
Eric Fiselier <eric@efcs.ca> |
Implement LWG 2712 and update other issues status git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284318 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
451f34db162fddec235736bc0ee0c670ad452e2a |
|
16-Oct-2016 |
Eric Fiselier <eric@efcs.ca> |
Implement LWG 2681 and 2682 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284316 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
25dc5bdb887e80a232f86e5b54b298427392e1c7 |
|
16-Oct-2016 |
Eric Fiselier <eric@efcs.ca> |
Implement LWG 2672. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
508f208ae9fe8afa4cccea0763ffc99662433886 |
|
12-Oct-2016 |
Eric Fiselier <eric@efcs.ca> |
Fix LWG2683 - filesystem::copy() should always clear the user-provided error_code git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
051593845dfa97a9787cdf9297e7f47cfeb6cde5 |
|
10-Oct-2016 |
Eric Fiselier <eric@efcs.ca> |
Workaround missing C++14 constexpr semantics in filesystem git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
fd0e7614738ac855b28f24631cff8e4d8986d100 |
|
10-Oct-2016 |
Eric Fiselier <eric@efcs.ca> |
Remove use of int128_t inside the filesystem implementation git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283712 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
c0f860c9460cf084f9fbd3bd3635c06e839bcabb |
|
29-Sep-2016 |
Eric Fiselier <eric@efcs.ca> |
Partially revert overflow checking in last_write_time git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@282660 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
d5fc5ca37f673f47938d3a36f6f762eee58a3a7a |
|
28-Sep-2016 |
Eric Fiselier <eric@efcs.ca> |
Improve 'last_write_time(...)' accuracy and detect overflow errors. The ::stat struct on Linux, FreeBSD, and OS X provides the access and modification times as an instance of 'timespec', which has a nanosecond resolution. The 'st_mtime' and 'st_atime' members simply reference the 'tv_sec' value of the timespec struct. This patch changes 'last_write_time(...)' so that it extracts both the seconds and nanoseconds values of the last modification time, providing a more accurate implementation of 'last_write_time(...)'. Additionally this patch fixes a possible signed integer overflow bug. The 'file_time_type' type cannot represent all possible values returned by the filesystem. Attempting to construct a 'file_time_type' from one of these values is undefined behavior. This patch avoids that UB by detecting possible overflows before the conversion. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@282634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
fbdbb36015dc4695e07d00da213705f57b87f78d |
|
27-Sep-2016 |
Eric Fiselier <eric@efcs.ca> |
Fix possible division by zero git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@282468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
e7acb0e5be91c8e6ded934184f4053757c5f5360 |
|
25-Aug-2016 |
Marshall Clow <mclow.lists@gmail.com> |
Followon to r279744. Find the other exception types and make __throw_XXX routines (and call them). Remove the generic __libcpp_throw routine, since no one uses it anymore. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@279763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
55e084dd4de60d5a80c1295653f1e41d45ce1c1b |
|
22-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Cleanup filesystem::permissions ever more. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273392 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
e1a1a1ffb7ff3722ce697dada8eeebc03c6ca542 |
|
22-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Avoid unnecessary stat call in filesystem::permissions implementation. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
7c96ddb5639078164a3fe8bcfbf7a11d7f502afb |
|
22-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Implement LWG issue 2720. Replace perms::resolve_symlinks with perms::symlink_nofollow. This changes how filesystem::permissions(p, perms) handles symlinks. Previously symlinks were not resolved by default instead only getting resolved when "perms::resolve_symlinks" was used. After this change symlinks are resolved by default and perms::symlink_nofollow must be given to change this. This issue has not yet been moved to Ready status, and I will revert if it doesn't get moved at the current meeting. However I feel confident that it will and it's nice to have implementations when moving issues. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273328 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
70f7afec38f9b2064d9aa22440fde30234a58af2 |
|
19-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Fix bugs in last_write_time implementation. * Fix passing a negative number as either tv_usec or tv_nsec. When file_time_type is negative and has a non-zero sub-second value we subtract 1 from tv_sec and make the sub-second duration positive. * Detect and report when 'file_time_type' cannot be represented by time_t. This happens when using large/small file_time_type values with a 32 bit time_t. There is more work to be done in the implementation. It should start to use stat's st_mtim or st_mtimeval if it's provided as an extension. That way we can provide a better resolution. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
2730c251ae13b737836ed723ce3bf718761d9da3 |
|
18-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Remove Apple specific guard for utimensat. Use !defined(UTIME_OMIT) instead. As pointed out by @majnemer this is a better way to detect utimensat on all platforms. The Apple specific guard is unneeded. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
7840a8ca84a44db41386e4c6341b8589b1f55236 |
|
18-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Use utimes instead of utimensat when !defined(UTIME_OMIT). Fixes build for older GLIBC versions git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
591e18f6aaa7f8a8ae1ed0e239708b5e752173bd |
|
18-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Add additional tests in an attempt to diagnose ARM test failures. Currently 4 tests are failing on the ARM buildbot. To try and diagnose each of the failures this patch does the following: 1) path.itr/iterator.pass.cpp * Temporarily print iteration sequence to see where its failing. 2) path.native.obs/string_alloc.pass.cpp * Remove test that ::new is not called when constructing a short string that requires a conversion. Since during the conversion global locale objects might be constructed. 3) fs.op.funcs/space.pass.cpp * Explicitly use uintmax_t in the implementation of space, hopefully preventing possible overflows. * Add additional tests that check for overflow is the calculation of the space_info values. * Add additional tests for the values returned from statfvs. 4) fs.op.funcs/last_write_time.pass.cpp * No changes made yet. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273075 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|
6e9a694dce70319e60dbdfb09cf055bacb4c948e |
|
17-Jun-2016 |
Eric Fiselier <eric@efcs.ca> |
Add Filesystem TS -- Complete Add the completed std::experimental::filesystem implementation and tests. The implementation supports C++11 or newer. The TS is built as part of 'libc++experimental.a'. Users of the TS need to manually link this library. Building and testing the TS can be disabled using the CMake option '-DLIBCXX_ENABLE_FILESYSTEM=OFF'. Currently 'libc++experimental.a' is not installed by default. To turn on the installation of the library use '-DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON'. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273034 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/src/experimental/filesystem/operations.cpp
|