2 @section @code{utimensat}
5 POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/utimensat.html}
7 Gnulib module: utimensat
9 Portability problems fixed by Gnulib:
12 This function is missing on some platforms:
13 glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX
14 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
16 However, the replacement function may end up truncating timestamps to
17 less resolution than supported by the file system. Furthermore, the
18 replacement function is not safe to be used in libraries and is not
21 This function returns a bogus value instead of failing with
22 @code{ENOSYS} on some platforms:
25 This function fails with @code{ENOSYS} if passed the flag
26 @code{AT_SYMLINK_NOFOLLOW} on a regular file:
29 When using @code{UTIME_OMIT} or @code{UTIME_NOW}, some systems require
30 the @code{tv_sec} argument to be 0, and don't necessarily handle all
31 file permissions in the manner required by POSIX:
34 When using @code{UTIME_OMIT} for the modification time, but specifying
35 an access time, some systems fail to update the change time:
39 Portability problems not fixed by Gnulib:
42 On some platforms, timestamps of symbolic links cannot be modified, so
43 the replacement fails with @code{ENOSYS} if passed the flag
44 @code{AT_SYMLINK_NOFOLLOW} on a symlink.
46 The mere act of using @code{lstat} modifies the access time of
47 symlinks on some platforms, so @code{utimensat} with
48 @code{AT_SYMLINK_NOFOLLOW} can only effectively change modification time:
51 The mere act of using @code{stat} modifies the access time of
52 directories on some platforms, so @code{utimensat} can only
53 effectively change directory modification time:
57 The gnulib module fdutimensat provides a similar interface.