diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /templates/man2/utimensat.2.pot | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'templates/man2/utimensat.2.pot')
-rw-r--r-- | templates/man2/utimensat.2.pot | 1541 |
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 "" |