# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \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 debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" 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, 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 Efcntl.hE> /* Definition of B constants */\n" "B<#include Esys/stat.hE>\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 "" "BIB<, const char *>IB<,>\n" "B< const struct timespec >IB<[_Nullable 2], int >IB<);>\n" "BIB<, const struct timespec >IB<[_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(7)):" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B():" 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= 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():" 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= 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() and B() update the timestamps of a file with " "nanosecond precision. This contrasts with the historical B(2) and " "B(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() the file is specified via the pathname given in " "I. With B() the file whose timestamps are to be " "updated is specified via an open file descriptor, I." 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: " "I specifies the new \"last access time\" (I); I " "specifies the new \"last modification time\" (I). Each of the " "elements of I 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(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 field of one of the I structures has the special " "value B, then the corresponding file timestamp is set to the " "current time. If the I field of one of the I structures " "has the special value B, then the corresponding file timestamp " "is left unchanged. In both of these cases, the value of the corresponding " "I 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 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 is NULL, or " "both I fields specify B), 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 is not NULL, and neither I field is B and " "neither I field is B), 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 fields are specified as B, 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 is relative, then by default it is interpreted relative to " "the directory referred to by the open file descriptor, I (rather than " "relative to the current working directory of the calling process, as is done " "by B(2) for a relative pathname). See B(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 is relative and I is the special value B, " "then I is interpreted relative to the current working directory of " "the calling process (like B(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 is absolute, then I is ignored." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed msgid "" "The I argument is a bit mask created by ORing together zero or more " "of the following values defined in Ifcntl.hE>:" msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B (since Linux 5.8)" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed msgid "" "If I is an empty string, operate on the file referred to by " "I (which may have been obtained using the B(2) B " "flag). In this case, I can refer to any type of file, not just a " "directory. If I is B, 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I 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() and B() return 0. On error, -1 is " "returned and I 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" 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 is NULL, or both I values are B, 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 or the " "B 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "(B()) I 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()) I is relative but I is neither " "B 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I pointed to an invalid address; or, I was B, and " "I 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" 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." 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 fields (value outside range [0, " "999,999,999], and not B or B); or an invalid value in " "one of the I 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 is NULL, I is not B, and I contains " "B." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) Too many symbolic links were encountered in resolving " "I." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "(B()) I 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) A component of I does not refer to an existing " "directory or file, or I 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) I is a relative pathname, but I is " "neither B nor a file descriptor referring to a directory; or, one " "of the prefix components of I 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" 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 is not NULL, " "neither I field is B, and neither I field is " "B) 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 " "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(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" 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) Search permission is denied for one of the prefix " "components of I." 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(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(),\n" "B()" 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() is a library function implemented on top of the " "B() system call. To support this, the Linux B() " "system call implements a nonstandard feature: if I is NULL, then " "the call modifies the timestamps of the file referred to by the file " "descriptor I (which may refer to any type of file). Using this " "feature, the call I 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() disallows passing " "NULL as the value for I: the wrapper function returns the error " "B 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()" 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()" 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() obsoletes B(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(2) and B(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 fields are specified as B, then the Linux " "implementation of B() succeeds even if the file referred to by " "I and I 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() and B() 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 fields has the value " "B or B, then the value of the corresponding I " "field should be ignored. Instead, the value of the I field is " "required to be 0 (or the error B 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 \[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-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 \[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 #: 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 fields are set to B isn't always treated " "the same as specifying I as NULL, and the case where one I " "value is B and the other is B isn't treated the same " "as specifying I 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 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 can make a " "call with I as NULL, or with I pointing to an array of " "structures in which both I fields are B, in order to " "update both timestamps to the current time. However, B() instead " "checks whether the I." 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(1), B(1), B(2), B(2), B(2), " "B(2), B(3), B(3), B(7), " "B(7), B(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 opensuse-leap-15-6 msgid "" "The I field is a bit mask that may be 0, or include the following " "constant, defined in Ifcntl.hE>:" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "B() 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() first appeared in glibc 2.6." msgstr "" #. type: Plain text #: debian-bookworm msgid "B() and B() are specified in POSIX.1-2008." msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2024-01-01" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" 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 "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""