summaryrefslogtreecommitdiffstats
path: root/templates/man2/utimensat.2.pot
diff options
context:
space:
mode:
Diffstat (limited to 'templates/man2/utimensat.2.pot')
-rw-r--r--templates/man2/utimensat.2.pot1541
1 files changed, 1541 insertions, 0 deletions
diff --git a/templates/man2/utimensat.2.pot b/templates/man2/utimensat.2.pot
new file mode 100644
index 00000000..1acd5c02
--- /dev/null
+++ b/templates/man2/utimensat.2.pot
@@ -0,0 +1,1541 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-03-01 17:13+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "utimensat"
+msgstr ""
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "2024-01-01"
+msgstr ""
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "Linux man-pages 6.06"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "utimensat, futimens - change file timestamps with nanosecond precision"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "LIBRARY"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Standard C library (I<libc>, I<-lc>)"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"B<#include E<lt>fcntl.hE<gt>> /* Definition of B<AT_*> constants */\n"
+"B<#include E<lt>sys/stat.hE<gt>>\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"B<int utimensat(int >I<dirfd>B<, const char *>I<pathname>B<,>\n"
+"B< const struct timespec >I<times>B<[_Nullable 2], int >I<flags>B<);>\n"
+"B<int futimens(int >I<fd>B<, const struct timespec >I<times>B<[_Nullable 2]);>\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "B<utimensat>():"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+" Since glibc 2.10:\n"
+" _POSIX_C_SOURCE E<gt>= 200809L\n"
+" Before glibc 2.10:\n"
+" _ATFILE_SOURCE\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "B<futimens>():"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+" Since glibc 2.10:\n"
+" _POSIX_C_SOURCE E<gt>= 200809L\n"
+" Before glibc 2.10:\n"
+" _GNU_SOURCE\n"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"B<utimensat>() and B<futimens>() update the timestamps of a file with "
+"nanosecond precision. This contrasts with the historical B<utime>(2) and "
+"B<utimes>(2), which permit only second and microsecond precision, "
+"respectively, when setting file timestamps."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"With B<utimensat>() the file is specified via the pathname given in "
+"I<pathname>. With B<futimens>() the file whose timestamps are to be "
+"updated is specified via an open file descriptor, I<fd>."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"For both calls, the new file timestamps are specified in the array I<times>: "
+"I<times[0]> specifies the new \"last access time\" (I<atime>); I<times[1]> "
+"specifies the new \"last modification time\" (I<mtime>). Each of the "
+"elements of I<times> specifies a time as the number of seconds and "
+"nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). This "
+"information is conveyed in a B<timespec>(3) structure."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Updated file timestamps are set to the greatest value supported by the "
+"filesystem that is not greater than the specified time."
+msgstr ""
+
+#. 2.6.22 was broken: it is not ignored
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If the I<tv_nsec> field of one of the I<timespec> structures has the special "
+"value B<UTIME_NOW>, then the corresponding file timestamp is set to the "
+"current time. If the I<tv_nsec> field of one of the I<timespec> structures "
+"has the special value B<UTIME_OMIT>, then the corresponding file timestamp "
+"is left unchanged. In both of these cases, the value of the corresponding "
+"I<tv_sec> field is ignored."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "If I<times> is NULL, then both timestamps are set to the current time."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The status change time (ctime) will be set to the current time, even if the "
+"other time stamps don't actually change."
+msgstr ""
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Permissions requirements"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"To set both file timestamps to the current time (i.e., I<times> is NULL, or "
+"both I<tv_nsec> fields specify B<UTIME_NOW>), either:"
+msgstr ""
+
+#. type: IP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "\\[bu]"
+msgstr ""
+
+#. 2.6.22 was broken here -- for futimens() the check is
+#. based on whether or not the file descriptor is writable,
+#. not on whether the caller's effective UID has write
+#. permission for the file referred to by the descriptor.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "the caller must have write access to the file;"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "the caller's effective user ID must match the owner of the file; or"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "the caller must have appropriate privileges."
+msgstr ""
+
+#. 2.6.22 was broken here:
+#. both must be something other than *either* UTIME_OMIT *or* UTIME_NOW.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"To make any change other than setting both timestamps to the current time (i."
+"e., I<times> is not NULL, and neither I<tv_nsec> field is B<UTIME_NOW> and "
+"neither I<tv_nsec> field is B<UTIME_OMIT>), either condition 2 or 3 above "
+"must apply."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If both I<tv_nsec> fields are specified as B<UTIME_OMIT>, then no file "
+"ownership or permission checks are performed, and the file timestamps are "
+"not modified, but other error conditions may still be detected."
+msgstr ""
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "utimensat() specifics"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If I<pathname> is relative, then by default it is interpreted relative to "
+"the directory referred to by the open file descriptor, I<dirfd> (rather than "
+"relative to the current working directory of the calling process, as is done "
+"by B<utimes>(2) for a relative pathname). See B<openat>(2) for an "
+"explanation of why this can be useful."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If I<pathname> is relative and I<dirfd> is the special value B<AT_FDCWD>, "
+"then I<pathname> is interpreted relative to the current working directory of "
+"the calling process (like B<utimes>(2))."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "If I<pathname> is absolute, then I<dirfd> is ignored."
+msgstr ""
+
+#. type: Plain text
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+msgid ""
+"The I<flags> argument is a bit mask created by ORing together zero or more "
+"of the following values defined in I<E<lt>fcntl.hE<gt>>:"
+msgstr ""
+
+#. type: TP
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "B<AT_EMPTY_PATH> (since Linux 5.8)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+msgid ""
+"If I<pathname> is an empty string, operate on the file referred to by "
+"I<dirfd> (which may have been obtained using the B<open>(2) B<O_PATH> "
+"flag). In this case, I<dirfd> can refer to any type of file, not just a "
+"directory. If I<dirfd> is B<AT_FDCWD>, the call operates on the current "
+"working directory. This flag is Linux-specific; define B<_GNU_SOURCE> to "
+"obtain its definition."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<AT_SYMLINK_NOFOLLOW>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If I<pathname> specifies a symbolic link, then update the timestamps of the "
+"link, rather than the file to which it refers."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "RETURN VALUE"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"On success, B<utimensat>() and B<futimens>() return 0. On error, -1 is "
+"returned and I<errno> is set to indicate the error."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ERRORS"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EACCES>"
+msgstr ""
+
+#
+#. But Linux 2.6.22 was broken here.
+#. Traditionally, utime()/utimes() gives the error EACCES for the case
+#. where the timestamp pointer argument is NULL (i.e., set both timestamps
+#. to the current time), and the file is owned by a user other than the
+#. effective UID of the caller, and the file is not writable by the
+#. effective UID of the program. utimensat() also gives this error in the
+#. same case. However, in the same circumstances, when utimensat() is
+#. given a 'times' array in which both tv_nsec fields are UTIME_NOW, which
+#. provides equivalent functionality to specifying 'times' as NULL, the
+#. call succeeds. It should fail with the error EACCES in this case.
+#. POSIX.1-2008 has the following:
+#. .TP
+#. .B EACCES
+#. .RB ( utimensat ())
+#. .I fd
+#. was not opened with
+#. .B O_SEARCH
+#. and the permissions of the directory to which
+#. .I fd
+#. refers do not allow searches.
+#. EXT2_IMMUTABLE_FL and similar flags for other filesystems.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<times> is NULL, or both I<tv_nsec> values are B<UTIME_NOW>, and the "
+"effective user ID of the caller does not match the owner of the file, the "
+"caller does not have write access to the file, and the caller is not "
+"privileged (Linux: does not have either the B<CAP_FOWNER> or the "
+"B<CAP_DAC_OVERRIDE> capability)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EBADF>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "(B<futimens>()) I<fd> is not a valid file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"(B<utimensat>()) I<pathname> is relative but I<dirfd> is neither "
+"B<AT_FDCWD> nor a valid file descriptor."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EFAULT>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<times> pointed to an invalid address; or, I<dirfd> was B<AT_FDCWD>, and "
+"I<pathname> is NULL or an invalid address."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EINVAL>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Invalid value in I<flags>."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Invalid value in one of the I<tv_nsec> fields (value outside range [0, "
+"999,999,999], and not B<UTIME_NOW> or B<UTIME_OMIT>); or an invalid value in "
+"one of the I<tv_sec> fields."
+msgstr ""
+
+#. SUSv4 does not specify this error.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<pathname> is NULL, I<dirfd> is not B<AT_FDCWD>, and I<flags> contains "
+"B<AT_SYMLINK_NOFOLLOW>."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ELOOP>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"(B<utimensat>()) Too many symbolic links were encountered in resolving "
+"I<pathname>."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ENAMETOOLONG>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "(B<utimensat>()) I<pathname> is too long."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ENOENT>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"(B<utimensat>()) A component of I<pathname> does not refer to an existing "
+"directory or file, or I<pathname> is an empty string."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ENOTDIR>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"(B<utimensat>()) I<pathname> is a relative pathname, but I<dirfd> is "
+"neither B<AT_FDCWD> nor a file descriptor referring to a directory; or, one "
+"of the prefix components of I<pathname> is not a directory."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EPERM>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The caller attempted to change one or both timestamps to a value other than "
+"the current time, or to change one of the timestamps to the current time "
+"while leaving the other timestamp unchanged, (i.e., I<times> is not NULL, "
+"neither I<tv_nsec> field is B<UTIME_NOW>, and neither I<tv_nsec> field is "
+"B<UTIME_OMIT>) and either:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"the caller's effective user ID does not match the owner of file, and the "
+"caller is not privileged (Linux: does not have the B<CAP_FOWNER> "
+"capability); or,"
+msgstr ""
+
+#
+#. Linux 2.6.22 was broken here:
+#. it was not consistent with the old utimes() implementation,
+#. since the case when both tv_nsec fields are UTIME_NOW, was not
+#. treated like the (times == NULL) case.
+#. EXT2_IMMUTABLE_FL EXT_APPEND_FL and similar flags for
+#. other filesystems.
+#. Why the inconsistency (which is described under NOTES) between
+#. EACCES and EPERM, where only EPERM tests for append-only.
+#. (This was also so for the older utimes() implementation.)
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "the file is marked append-only or immutable (see B<chattr>(1))."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EROFS>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The file is on a read-only filesystem."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ESRCH>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"(B<utimensat>()) Search permission is denied for one of the prefix "
+"components of I<pathname>."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ATTRIBUTES"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"For an explanation of the terms used in this section, see B<attributes>(7)."
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Interface"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Attribute"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Value"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ".na\n"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ".nh\n"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"B<utimensat>(),\n"
+"B<futimens>()"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Thread safety"
+msgstr ""
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "MT-Safe"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "VERSIONS"
+msgstr ""
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "C library/kernel ABI differences"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"On Linux, B<futimens>() is a library function implemented on top of the "
+"B<utimensat>() system call. To support this, the Linux B<utimensat>() "
+"system call implements a nonstandard feature: if I<pathname> is NULL, then "
+"the call modifies the timestamps of the file referred to by the file "
+"descriptor I<dirfd> (which may refer to any type of file). Using this "
+"feature, the call I<futimens(fd,\\ times)> is implemented as:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "utimensat(fd, NULL, times, 0);\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Note, however, that the glibc wrapper for B<utimensat>() disallows passing "
+"NULL as the value for I<pathname>: the wrapper function returns the error "
+"B<EINVAL> in this case."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "STANDARDS"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+msgid "POSIX.1-2008."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<utimensat>()"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Linux 2.6.22, glibc 2.6. POSIX.1-2008."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<futimens>()"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+msgid "glibc 2.6. POSIX.1-2008."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "NOTES"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "B<utimensat>() obsoletes B<futimesat>(2)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"On Linux, timestamps cannot be changed for a file marked immutable, and the "
+"only change permitted for files marked append-only is to set the timestamps "
+"to the current time. (This is consistent with the historical behavior of "
+"B<utime>(2) and B<utimes>(2) on Linux.)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If both I<tv_nsec> fields are specified as B<UTIME_OMIT>, then the Linux "
+"implementation of B<utimensat>() succeeds even if the file referred to by "
+"I<dirfd> and I<pathname> does not exist."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Several bugs afflict B<utimensat>() and B<futimens>() before Linux "
+"2.6.26. These bugs are either nonconformances with the POSIX.1 draft "
+"specification or inconsistencies with historical Linux behavior."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"POSIX.1 specifies that if one of the I<tv_nsec> fields has the value "
+"B<UTIME_NOW> or B<UTIME_OMIT>, then the value of the corresponding I<tv_sec> "
+"field should be ignored. Instead, the value of the I<tv_sec> field is "
+"required to be 0 (or the error B<EINVAL> results)."
+msgstr ""
+
+#. #-#-#-#-# archlinux: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP \[bu]
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP \[bu]
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP \[bu]
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP \[bu]
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# debian-bookworm: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP *
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP *
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP *
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP *
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# debian-unstable: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP *
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP *
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP *
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP *
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# fedora-40: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP \[bu]
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP \[bu]
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP \[bu]
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP \[bu]
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# fedora-rawhide: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP \[bu]
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP \[bu]
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP \[bu]
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP \[bu]
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# mageia-cauldron: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP \[bu]
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP \[bu]
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP \[bu]
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP \[bu]
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# opensuse-leap-15-6: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP *
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP *
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP *
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP *
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#. #-#-#-#-# opensuse-tumbleweed: utimensat.2.pot (PACKAGE VERSION) #-#-#-#-#
+#. Below, the long description of the errors from the previous bullet
+#. point (abridged because it's too much detail for a man page).
+#. .IP *
+#. If one of the
+#. .I tv_nsec
+#. fields is
+#. .BR UTIME_OMIT
+#. and the other is
+#. .BR UTIME_NOW ,
+#. then the error
+#. .B EPERM
+#. should occur if the process's effective user ID does not match
+#. the file owner and the process is not privileged.
+#. Instead, the call successfully changes one of the timestamps.
+#. .IP *
+#. If file is not writable by the effective user ID of the process and
+#. the process's effective user ID does not match the file owner and
+#. the process is not privileged,
+#. and
+#. .I times
+#. is NULL, then the error
+#. .B EACCES
+#. results.
+#. This error should also occur if
+#. .I times
+#. points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead the call succeeds.
+#. .IP *
+#. If a file is marked as append-only (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. permits a NULL
+#. .I times
+#. argument to be used in order to update both timestamps to the current time.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. argument that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. .IP *
+#. If a file is marked as immutable (see
+#. .BR chattr (1)),
+#. then Linux traditionally
+#. (i.e.,
+#. .BR utime (2),
+#. .BR utimes (2)),
+#. gives an
+#. .B EACCES
+#. error if
+#. .I times
+#. is NULL.
+#. For consistency,
+#. .BR utimensat ()
+#. and
+#. .BR futimens ()
+#. should also produce the same result when given a
+#. .I times
+#. that points to an array of structures in which both
+#. .I tv_nsec
+#. fields are
+#. .BR UTIME_NOW .
+#. Instead, the call fails with the error
+#. .BR EPERM .
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Various bugs mean that for the purposes of permission checking, the case "
+"where both I<tv_nsec> fields are set to B<UTIME_NOW> isn't always treated "
+"the same as specifying I<times> as NULL, and the case where one I<tv_nsec> "
+"value is B<UTIME_NOW> and the other is B<UTIME_OMIT> isn't treated the same "
+"as specifying I<times> as a pointer to an array of structures containing "
+"arbitrary time values. As a result, in some cases: a) file timestamps can "
+"be updated by a process that shouldn't have permission to perform updates; "
+"b) file timestamps can't be updated by a process that should have permission "
+"to perform updates; and c) the wrong I<errno> value is returned in case of "
+"an error."
+msgstr ""
+
+#. This means that a process with a file descriptor that allows
+#. writing could change the timestamps of a file for which it
+#. does not have write permission;
+#. conversely, a process with a read-only file descriptor won't
+#. be able to update the timestamps of a file,
+#. even if it has write permission on the file.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"POSIX.1 says that a process that has I<write access to the file> can make a "
+"call with I<times> as NULL, or with I<times> pointing to an array of "
+"structures in which both I<tv_nsec> fields are B<UTIME_NOW>, in order to "
+"update both timestamps to the current time. However, B<futimens>() instead "
+"checks whether the I<access mode of the file descriptor allows writing>."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"B<chattr>(1), B<touch>(1), B<futimesat>(2), B<openat>(2), B<stat>(2), "
+"B<utimes>(2), B<futimes>(3), B<timespec>(3), B<inode>(7), "
+"B<path_resolution>(7), B<symlink>(7)"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "2023-02-12"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "Linux man-pages 6.03"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<flags> field is a bit mask that may be 0, or include the following "
+"constant, defined in I<E<lt>fcntl.hE<gt>>:"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"B<utimensat>() was added in Linux 2.6.22; glibc support was added with "
+"glibc 2.6."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "Support for B<futimens>() first appeared in glibc 2.6."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "B<futimens>() and B<utimensat>() are specified in POSIX.1-2008."
+msgstr ""
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-07-20"
+msgstr ""
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages 6.05.01"
+msgstr ""
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2023-03-30"
+msgstr ""
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux man-pages 6.04"
+msgstr ""