mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-09-11 11:50:52 +03:00
futimens/utimensat on Linux fails to bump ctime if mtime is UTIME_OMIT and atime is specified. * tests/test-utimens-common.h (check_ctime): Define. * tests/test-utimens.h (test_utimens): Expose the Linux bug. * tests/test-futimens.h (test_futimens): Likewise. * tests/test-lutimens.h (test_lutimens): Likewise. * doc/posix-functions/futimens.texi (futimens): Document the bug. * doc/posix-functions/utimensat.texi (utimensat): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
@node futimens
|
|
@section @code{futimens}
|
|
@findex futimens
|
|
|
|
POSIX specification: @url{http://www.opengroup.org/onlinepubs/9699919799/functions/futimens.html}
|
|
|
|
Gnulib module: futimens
|
|
|
|
Portability problems fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
This function is missing on some platforms:
|
|
glibc 2.3.6, MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX
|
|
5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
|
|
Interix 3.5, BeOS.
|
|
However, the replacement function may end up truncating timestamps to
|
|
less resolution than supported by the file system.
|
|
@item
|
|
This function returns a bogus value instead of failing with
|
|
@code{ENOSYS} on some platforms:
|
|
Linux kernel 2.6.21.
|
|
@item
|
|
When using @code{UTIME_OMIT} or @code{UTIME_NOW}, some systems require
|
|
the @code{tv_sec} argument to be 0, and don't necessarily handle all
|
|
file permissions in the manner required by POSIX:
|
|
Linux kernel 2.6.25.
|
|
@item
|
|
When using @code{UTIME_OMIT} for the modification time, but specifying
|
|
an access time, some systems fail to update the change time:
|
|
Linux kernel 2.6.32.
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
Some platforms lack the ability to change the timestamps of a file
|
|
descriptor, so the replacement can fail with @code{ENOSYS}; the gnulib
|
|
module @samp{utimens} provides a more reliable interface @code{fdutimens}.
|
|
@item
|
|
The mere act of using @code{stat} modifies the access time of
|
|
directories on some platforms, so @code{utimensat} can only
|
|
effectively change directory modification time:
|
|
Cygwin 1.5.x.
|
|
@end itemize
|