On 10/01/2010 09:11 AM, Jim Meyering wrote:
Eric Blake wrote:
...
+# Whether birthtime is supported or not, it better not change even when
+# [acm]time are modified.  :)
+touch a || fail=1
+btime=$(stat --format %W a) || fail=1
+atime=$(stat --format %X a) || fail=1
+mtime=$(stat --format %Y a) || fail=1
+ctime=$(stat --format %Z a) || fail=1
+
+case $(stat --format %x a) in
+  *.000000000*) sleep 2;; # worst case file system is FAT
+  *) # FIXME: sleep .1 would be sufficient if %X showed nanoseconds
+ sleep 1;; # should be adequate for any system with subsecond resolution
+esac

We try hard to avoid sleeping in the common case.
Any reason not to do what the FIXME suggests?

     case $(stat --format %X a) in
       *.000000000) sleep 1;;

You need two seconds for FAT.

       *) sleep .1;;

Done in patch 2/2 (see my other email) - you HAVE to sleep longer than the minimum resolution of %X...

     esac

+touch a || fail=1
+test "x$btime" = x$(stat --format %W a) || fail=1
+test "x$atime" != x$(stat --format %X a) || fail=1

before you can guarantee that %X changed. But if %X doesn't print subsecond details (as in patch 2/2), ... :)

--
Eric Blake   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Reply via email to