view doc/posix-functions/futimens.texi @ 13794:586d7f932642

futimens: work around Solaris 11 bug Revert "test-futimens: avoid unwarranted test failure on Solaris 5.11" This reverts commit 0afab138f4aedb7eaab70957c164aa0e5eb01fce. * m4/futimens.m4 (gl_FUNC_FUTIMENS): Detect the bug. * tests/test-futimens.h (test_futimens): Enhance, rather than weaken test. * doc/posix-functions/futimens.texi (futimens): Document the bug. Signed-off-by: Eric Blake <eblake@redhat.com>
author Eric Blake <eblake@redhat.com>
date Mon, 11 Oct 2010 13:54:45 -0600
parents bb0ceefd22dc
children 837d918f9552
line wrap: on
line source

@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.
@itme
Passing @code{AT_FDCWD} as the fd argument does not properly fail with
@code{EBADF} on some systems:
glibc 2.11, Solaris 11.
@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