# 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:23+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 "stat" 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 "stat, fstat, lstat, fstatat - get file status" 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 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<,>\n" "B< struct stat *restrict >IB<);>\n" "BIB<, struct stat *>IB<);>\n" "BIB<,>\n" "B< struct stat *restrict >IB<);>\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<#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 *restrict >IB<,>\n" "B< struct stat *restrict >IB<, int >IB<);>\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 "" #. _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED #. 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.20 */ _DEFAULT_SOURCE\n" " || _XOPEN_SOURCE E= 500\n" " || /* Since glibc 2.10: */ _POSIX_C_SOURCE E= 200112L\n" " || /* glibc 2.19 and earlier */ _BSD_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" " _ATFILE_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 "" "These functions return information about a file, in the buffer pointed to by " "I. No permissions are required on the file itself, but\\[em]in the " "case of B(), B(), and B()\\[em]execute (search) " "permission is required on all of the directories in I that lead 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 "" "B() and B() retrieve information about the file pointed to " "by I; the differences for B() are described below." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() is identical to B(), except that if I is a " "symbolic link, then it returns information about the link itself, not the " "file that the link refers to." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() is identical to B(), except that the file about which " "information is to be retrieved is specified by the file descriptor I." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "The stat structure" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "All of these system calls return a I structure (see B(3type))." msgstr "" #. Background: inode attributes are modified with i_mutex held, but #. read by stat() without taking the mutex. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I: for performance and simplicity reasons, different fields in the " "I structure may contain state information from different moments " "during the execution of the system call. For example, if I or " "I is changed by another process by calling B(2) or " "B(2), B() might return the old I together with the " "new I, or the old I together with the new I." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "fstatat()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() system call is a more general interface for accessing file " "information which can still provide exactly the behavior of each of " "B(), B(), and B()." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the pathname given in I is relative, then it is interpreted " "relative to the directory referred to by the file descriptor I " "(rather than relative to the current working directory of the calling " "process, as is done by B() and B() for a relative pathname)." 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() and 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 is absolute, then I is ignored." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I can either be 0, or include one or more of the following flags ORed:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.39)" msgstr "" #. commit 65cfc6722361570bfe255698d9cd4dccaf47570d #. Before glibc 2.16, defining _ATFILE_SOURCE sufficed #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 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, and the behavior of B() is similar to that of " "B(). 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 (since Linux 2.6.38)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Don't automount the terminal (\"basename\") component of I Since " "Linux 3.1 this flag is ignored. Since Linux 4.11 this flag is implied." 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 is a symbolic link, do not dereference it: instead return " "information about the link itself, like B(). (By default, " "B() dereferences symbolic links, like B().)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "See B(2) for an explanation of the need for B()." 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, zero is returned. 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 "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Search permission is denied for one of the directories in the path prefix of " "I. (See also B(7).)" 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 is not a valid open 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 "Bad 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 "(B()) Invalid flag specified in 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 "Too many symbolic links encountered while traversing the path." 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 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 "" "A component of I does not exist or is a dangling symbolic link." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I is an empty string and B was not specified in " "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 "Out of memory (i.e., kernel memory)." 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 "A component of the path prefix of I is not a directory." 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 and I is a file descriptor " "referring to a file other than 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 "" "I or I refers to a file whose size, inode number, or number of " "blocks cannot be represented in, respectively, the types I, I, " "or I. This error can occur when, for example, an application " "compiled on a 32-bit platform without I<-D_FILE_OFFSET_BITS=64> calls " "B() on a file whose size exceeds I<(1EE31)-1> bytes." 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: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. SVr4 documents additional #. .BR fstat () #. error conditions EINTR, ENOLINK, and EOVERFLOW. SVr4 #. documents additional #. .BR stat () #. and #. .BR lstat () #. error conditions EINTR, EMULTIHOP, ENOLINK, and EOVERFLOW. #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "SVr4, 4.3BSD, POSIX.1-2001." 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 "POSIX.1-2008. Linux 2.6.16, glibc 2.4." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "According to POSIX.1-2001, B() on a symbolic link need return valid " "information only in the I field and the file type of the I " "field of the I structure. POSIX.1-2008 tightens the specification, " "requiring B() to return valid information in all fields except the " "mode bits in I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Use of the I and I fields may be less portable. " "(They were introduced in BSD. The interpretation differs between systems, " "and possibly on a single system when NFS mounts are involved.)" 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 differences" msgstr "" #. See include/asm-i386/stat.h in the Linux 2.4 source code for the #. various versions of the structure definitions #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Over time, increases in the size of the I structure have led to three " "successive versions of B(): I() (slot I<__NR_oldstat>), " "I() (slot I<__NR_stat>), and I (slot " "I<__NR_stat64>) on 32-bit platforms such as i386. The first two versions " "were already present in Linux 1.0 (albeit with different names); the last " "was added in Linux 2.4. Similar remarks apply for B() and " "B()." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The kernel-internal versions of the I structure dealt with by the " "different versions are, respectively:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I<__old_kernel_stat>" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The original structure, with rather narrow fields, and no padding." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Larger I field and padding added to various parts of the structure " "to allow for future expansion." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Even larger I field, larger I and I fields to " "accommodate the Linux-2.4 expansion of UIDs and GIDs to 32 bits, and various " "other enlarged fields and further padding in the structure. (Various " "padding bytes were eventually consumed in Linux 2.6, with the advent of 32-" "bit device IDs and nanosecond components for the timestamp fields.)" msgstr "" # # # # # # #. A note from Andries Brouwer, July 2007 #. > Is the story not rather more complicated for some calls like #. > stat(2)? #. Yes and no, mostly no. See /usr/include/sys/stat.h . #. The idea is here not so much that syscalls change, but that #. the definitions of struct stat and of the types dev_t and mode_t change. #. This means that libc (even if it does not call the kernel #. but only calls some internal function) must know what the #. format of dev_t or of struct stat is. #. The communication between the application and libc goes via #. the include file that defines a _STAT_VER and #. _MKNOD_VER describing the layout of the data that user space #. uses. Each (almost each) occurrence of stat() is replaced by #. an occurrence of xstat() where the first parameter of xstat() #. is this version number _STAT_VER. #. Now, also the definitions used by the kernel change. #. But glibc copes with this in the standard way, and the #. struct stat as returned by the kernel is repacked into #. the struct stat as expected by the application. #. Thus, _STAT_VER and this setup cater for the application-libc #. interface, rather than the libc-kernel interface. #. (Note that the details depend on gcc being used as c compiler.) #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The glibc B() wrapper function hides these details from applications, " "invoking the most recent version of the system call provided by the kernel, " "and repacking the returned information if required for old binaries." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On modern 64-bit systems, life is simpler: there is a single B() " "system call and the kernel deals with a I structure that contains " "fields of a sufficient size." msgstr "" #. strace(1) shows the name "newfstatat" on x86-64 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The underlying system call employed by the glibc B() wrapper " "function is actually called B() or, on some architectures, " "B()." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following program calls B() and displays selected fields in the " "returned I structure." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/stat.hE\n" "#include Esys/sysmacros.hE\n" "#include Etime.hE\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " struct stat sb;\n" "\\&\n" " if (argc != 2) {\n" " fprintf(stderr, \"Usage: %s EpathnameE\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " if (lstat(argv[1], &sb) == -1) {\n" " perror(\"lstat\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " printf(\"ID of containing device: [%x,%x]\\en\",\n" " major(sb.st_dev),\n" " minor(sb.st_dev));\n" "\\&\n" " printf(\"File type: \");\n" "\\&\n" " switch (sb.st_mode & S_IFMT) {\n" " case S_IFBLK: printf(\"block device\\en\"); break;\n" " case S_IFCHR: printf(\"character device\\en\"); break;\n" " case S_IFDIR: printf(\"directory\\en\"); break;\n" " case S_IFIFO: printf(\"FIFO/pipe\\en\"); break;\n" " case S_IFLNK: printf(\"symlink\\en\"); break;\n" " case S_IFREG: printf(\"regular file\\en\"); break;\n" " case S_IFSOCK: printf(\"socket\\en\"); break;\n" " default: printf(\"unknown?\\en\"); break;\n" " }\n" "\\&\n" " printf(\"I-node number: %ju\\en\", (uintmax_t) sb.st_ino);\n" "\\&\n" " printf(\"Mode: %jo (octal)\\en\",\n" " (uintmax_t) sb.st_mode);\n" "\\&\n" " printf(\"Link count: %ju\\en\", (uintmax_t) sb.st_nlink);\n" " printf(\"Ownership: UID=%ju GID=%ju\\en\",\n" " (uintmax_t) sb.st_uid, (uintmax_t) sb.st_gid);\n" "\\&\n" " printf(\"Preferred I/O block size: %jd bytes\\en\",\n" " (intmax_t) sb.st_blksize);\n" " printf(\"File size: %jd bytes\\en\",\n" " (intmax_t) sb.st_size);\n" " printf(\"Blocks allocated: %jd\\en\",\n" " (intmax_t) sb.st_blocks);\n" "\\&\n" " printf(\"Last status change: %s\", ctime(&sb.st_ctime));\n" " printf(\"Last file access: %s\", ctime(&sb.st_atime));\n" " printf(\"Last file modification: %s\", ctime(&sb.st_mtime));\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. 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(2), B(2), B(3type), " "B(7), B(7), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: SH #: debian-bookworm #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "B() was added in Linux 2.6.16; library support was added in glibc " "2.4." msgstr "" #. SVr4 documents additional #. .BR fstat () #. error conditions EINTR, ENOLINK, and EOVERFLOW. SVr4 #. documents additional #. .BR stat () #. and #. .BR lstat () #. error conditions EINTR, EMULTIHOP, ENOLINK, and EOVERFLOW. #. type: Plain text #: debian-bookworm msgid "" "B(), B(), B(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1.2008." msgstr "" #. type: Plain text #: debian-bookworm msgid "B(): POSIX.1-2008." msgstr "" #. type: SH #: debian-bookworm #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/stat.hE\n" "#include Esys/sysmacros.hE\n" "#include Etime.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " struct stat sb;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc != 2) {\n" " fprintf(stderr, \"Usage: %s EpathnameE\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (lstat(argv[1], &sb) == -1) {\n" " perror(\"lstat\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"ID of containing device: [%x,%x]\\en\",\n" " major(sb.st_dev),\n" " minor(sb.st_dev));\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " printf(\"File type: \");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " switch (sb.st_mode & S_IFMT) {\n" " case S_IFBLK: printf(\"block device\\en\"); break;\n" " case S_IFCHR: printf(\"character device\\en\"); break;\n" " case S_IFDIR: printf(\"directory\\en\"); break;\n" " case S_IFIFO: printf(\"FIFO/pipe\\en\"); break;\n" " case S_IFLNK: printf(\"symlink\\en\"); break;\n" " case S_IFREG: printf(\"regular file\\en\"); break;\n" " case S_IFSOCK: printf(\"socket\\en\"); break;\n" " default: printf(\"unknown?\\en\"); break;\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " printf(\"I-node number: %ju\\en\", (uintmax_t) sb.st_ino);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Mode: %jo (octal)\\en\",\n" " (uintmax_t) sb.st_mode);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Link count: %ju\\en\", (uintmax_t) sb.st_nlink);\n" " printf(\"Ownership: UID=%ju GID=%ju\\en\",\n" " (uintmax_t) sb.st_uid, (uintmax_t) sb.st_gid);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Preferred I/O block size: %jd bytes\\en\",\n" " (intmax_t) sb.st_blksize);\n" " printf(\"File size: %jd bytes\\en\",\n" " (intmax_t) sb.st_size);\n" " printf(\"Blocks allocated: %jd\\en\",\n" " (intmax_t) sb.st_blocks);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Last status change: %s\", ctime(&sb.st_ctime));\n" " printf(\"Last file access: %s\", ctime(&sb.st_atime));\n" " printf(\"Last file modification: %s\", ctime(&sb.st_mtime));\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" 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 ""