futimens
========

POSIX specification: http://www.opengroup.org/onlinepubs/9699919799/functions/futimens.html

Gnulib module: futimens

Portability problems fixed by Gnulib:

  * 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.

  * This function returns a bogus value instead of failing with ENOSYS on some platforms: Linux kernel 2.6.21.

  * When using UTIME_OMIT or UTIME_NOW, some systems require the 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.

  * When using UTIME_OMIT for the modification time, but specifying an access time, some systems fail to update the change time: Linux kernel 2.6.32.

Portability problems not fixed by Gnulib:

  * Some platforms lack the ability to change the timestamps of a file descriptor, so the replacement can fail with ENOSYS; the gnulib module utimens provides a more reliable interface fdutimens.

  * The mere act of using stat modifies the access time of directories on some platforms, so utimensat can only effectively change directory modification time: Cygwin 1.5.x.