| UTIMES(2) | System Calls Manual | UTIMES(2) | 
utimes, lutimes,
  futimes, utimens,
  lutimens, futimens,
  utimensat —
#include <sys/time.h>
int
  
  utimes(const
    char *path, const struct
    timeval times[2]);
int
  
  lutimes(const
    char *path, const struct
    timeval times[2]);
int
  
  futimes(int
    fd, const struct timeval
    times[2]);
#include
    <sys/stat.h>
int
  
  utimens(const
    char *path, const struct
    timespec times[2]);
int
  
  lutimens(const
    char *path, const struct
    timespec times[2]);
int
  
  futimens(int
    fd, const struct timespec
    times[2]);
#include
    <sys/stat.h>
  
  #include <fcntl.h>
int
  
  utimensat(int
    fd, const char
    *path, const struct
    timespec times[2], int
    flag);
If times is NULL,
    the access and modification times are set to the current time. The caller
    must be the owner of the file, have permission to write the file, or be the
    super-user.
If times is
    non-NULL, it is assumed to point to an array of two
    timeval structures. The access time is set to the value of the first
    element, and the modification time is set to the value of the second
    element. For file systems that support file birth (creation) times (such as
    UFS2), the birth time will be set to the value of the second element if the
    second element is older than the currently set birth time. To set both a
    birth time and a modification time, two calls are required; the first to set
    the birth time and the second to set the (presumably newer) modification
    time. Ideally a new system call will be added that allows the setting of all
    three times at once. The caller must be the owner of the file or be the
    super-user.
In either case, the inode-change-time of the file is set to the current time.
lutimes() is like
    utimes() except in the case where the named file is
    a symbolic link, in which case lutimes() changes the
    access and modification times of the link, while
    utimes() changes the times of the file the link
    references.
utimens(),
    lutimens(), and futimens()
    are like utimes(),
    lutimes(), and futimes()
    respectively except that time is specified with nanosecond instead of
    microsecond precision.
utimensat() works the same way as
    utimens() except if path is
    relative. In that case, it is looked up from a directory whose file
    descriptor was passed as fd. Search permission is
    required on this directory. fd can be set to
    AT_FDCWD in order to specify the current
  directory.
When it operates on a symbolic link,
    utimensat() will change the target's time unless
    AT_SYMLINK_NOFOLLOW is set in
    flag. In that later case, the symbolic link's dates
    are changed.
The nanosecond fields for utimens(),
    lutimens(), futimens(), and
    utimensat() can be set to the special value
    UTIME_NOW to set the current time, or to
    UTIME_OMIT to let the time unchanged (this allows
    changing access time but not modification time, and vice-versa).
utimes(), lutimes(),
  futimes(), utimens(),
  lutimens(), futimens(), and
  utimensat() functions return the value 0 if
  successful; otherwise the value -1 is returned and the global variable
  errno is set to indicate the error.
utimes(), lutimes(),
  utimens(), lutimens(), and
  utimensat() will fail if:
EACCES]NULL and
      the effective user ID of the process does not match the owner of the file,
      and is not the super-user, and write access is denied.EFAULT]EIO]ELOOP]ENAMETOOLONG]NAME_MAX}
      characters, or an entire path name exceeded
      {PATH_MAX} characters.ENOENT]ENOTDIR]EPERM]NULL and the calling process's effective user ID
      does not match the owner of the file and is not the super-user.EROFS]In addition, utimensat() will fail if:
EBADF]AT_FDCWD nor a
      valid file descriptor open for reading or searching.ENOTDIR]futimes() and
    futimens() will fail if:
EACCES]NULL
      and the effective user ID of the process does not match the owner of the
      file, and is not the super-user, and write access is denied.EBADF]EFAULT]EIO]EPERM]NULL and the calling process's effective user ID
      does not match the owner of the file and is not the super-user.EROFS]utimes() function conforms to IEEE
  Std 1003.1-2001 (“POSIX.1”). It was however marked as
  legacy in the IEEE Std 1003.1-2004
  (“POSIX.1”) revision. futimens()
  and utimensat() functions conform to
  IEEE Std 1003.1-2008 (“POSIX.1”).
utimes() function call appeared in
  4.2BSD. The futimes() function
  call appeared in NetBSD 1.2. The
  lutimes() function call appeared in
  NetBSD 1.3. Birthtime setting support was added in
  NetBSD 5.0. futimens() and
  utimensat() functions calls appeared in
  NetBSD 6.0.
| September 14, 2013 | NetBSD 9.3 |