[PATCH] D16948: [libcxx] Filesystem TS -- Complete

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 1 13:41:02 PDT 2016


EricWF marked an inline comment as done.

================
Comment at: src/experimental/operations.cpp:128-129
@@ +127,4 @@
+bool stat_equivalent(struct ::stat& st1, struct ::stat& st2) {
+    return (st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino);
+}
+
----------------
majnemer wrote:
> It is possible for `st_ino` to wrap around while the machine is still running.
> I'd mix `st_gen` into the comparison if we are running under one of the BSDs or Darwin.
> 
> Linux has a `FS_IOC_GETVERSION` ioctl but it requires a file descriptor.  Maybe such heroics are not worth it.
> It is possible for st_ino to wrap around while the machine is still running.

Can you clarify this point? Maybe some docs I could read.

> I'd mix st_gen into the comparison if we are running under one of the BSDs or Darwin.

According to the darwin docs st_gen is only available as a super user and even then my tests show it's always zero.
https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man2/stat.2.html

How does mixing that in help if st_ino wraps?

================
Comment at: test/std/utilities/meta/meta.rel/is_nothrow_callable.pass.cpp:57
@@ -56,3 +56,3 @@
     struct Dummy { void foo() noexcept {} static void bar() noexcept {} };
-#if !defined(__cpp_noexcept_function_type)
+#if !defined(__cpp_noexcept_function_type) && 0
     {
----------------
ahatanak wrote:
> Can you explain why this change was needed? I'm trying to figure out why the two static_asserts in the #else part fail.
Woops that sneaked in.  I was investigating some GCC behavior unrelated to filesystem but forgot to revert the changes.



http://reviews.llvm.org/D16948





More information about the cfe-commits mailing list