A bug report was filed on cygwin due to the algorithm change
in cp -p.  In 5.3.0 the syscall sequence was close(dest_desc),
utimes(dest).  In 5.90, the sequence now uses gnulib
futimens(dest_desc, dest), close().  But on cygwin (which does
not yet have futimes), futimens makes the syscall utimes(dest),
setting the timestamps, then the close() again sets the
timestamps.  I was unable to determine from POSIX if this
behavior is permissable (close changing the timestamps of
an open file descriptor, even when the underlying file had its
timestamps changed externally), in which case there is a
rather severe regression in coreutils (cp -p no longer preserves
timestamps, because it calls utimes() too soon), or whether
POSIX forbids close() from changing timestamps if utimes()
was called on the underlying file, in which case it is a bug in
cygwin.

Any thoughts?

--
Eric Blake


_______________________________________________
Bug-coreutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to