# 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 05:52+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 "getdents" 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 "getdents, getdents64 - get directory entries" 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/syscall.hE> /* Definition of B constants */\n" "B<#include Eunistd.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<, struct linux_dirent *>IB<,>\n" "B< unsigned int >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<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" "B<#include Edirent.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<, void >IB<[.>IB<], size_t >IB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I: glibc provides no wrapper for B(), necessitating the use " "of B(2)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I: There is no definition of I in glibc; see " "NOTES." 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 are not the interfaces you are interested in. Look at B(3) " "for the POSIX-conforming C library interface. This page documents the bare " "kernel system call interfaces." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "getdents()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The system call B() reads several I structures from " "the directory referred to by the open file descriptor I into the buffer " "pointed to by I. The argument I specifies the size of that " "buffer." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The I structure is declared as follows:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, no-wrap msgid "" "struct linux_dirent {\n" " unsigned long d_ino; /* Inode number */\n" " unsigned long d_off; /* Not an offset; see below */\n" " unsigned short d_reclen; /* Length of this I */\n" " char d_name[]; /* Filename (null-terminated) */\n" " /* length is actually (d_reclen - 2 -\n" " offsetof(struct linux_dirent, d_name)) */\n" " /*\n" " char pad; // Zero padding byte\n" " char d_type; // File type (only since Linux\n" " // 2.6.4); offset is (d_reclen - 1)\n" " */\n" "}\n" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed msgid "" "I is an inode number. I is a filesystem-specific value with " "no specific meaning to user space, though on older filesystems it used to be " "the distance from the start of the directory to the start of the next " "I; see B(3)B<.> I is the size of this " "entire I. I is a null-terminated filename." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I is a byte at the end of the structure that indicates the file " "type. It contains one of the following values (defined in Idirent." "hE>):" 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 "This is a block device." 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 "This is a character device." 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 "This is 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 "This is a named pipe (FIFO)." 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 "This is a symbolic link." 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 "This is a regular file." 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 "This is a UNIX domain socket." 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 type is unknown." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I field is implemented since Linux 2.6.4. It occupies a space " "that was previously a zero-filled padding byte in the I " "structure. Thus, on kernels up to and including Linux 2.6.3, attempting to " "access this field always provides the value 0 (B)." msgstr "" #. kernel 2.6.27 #. The same sentence is in readdir.2 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Currently, only some filesystems (among them: Btrfs, ext2, ext3, and ext4) " "have full support for returning the file type in I. All " "applications must properly handle a return of B." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "getdents64()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The original Linux B() system call did not handle large " "filesystems and large file offsets. Consequently, Linux 2.4 added " "B(), with wider types for the I and I fields. In " "addition, B() supports an explicit I field." 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 like B(), except that its " "second argument is a pointer to a buffer containing structures of the " "following type:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, no-wrap msgid "" "struct linux_dirent64 {\n" " ino64_t d_ino; /* 64-bit inode number */\n" " off64_t d_off; /* Not an offset; see getdents() */\n" " unsigned short d_reclen; /* Size of this dirent */\n" " unsigned char d_type; /* File type */\n" " char d_name[]; /* Filename (null-terminated) */\n" "};\n" 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, the number of bytes read is returned. On end of directory, 0 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 "Invalid file descriptor 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 "Argument points outside the calling process's address space." 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 "Result buffer is too small." 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 "No such 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 "File descriptor does not refer to a directory." 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 "None." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. SVr4 documents additional ENOLINK, EIO error conditions. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "SVr4." 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.30." 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-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "glibc does not provide a wrapper for B(); call B() " "using B(2). In that case you will need to define the " "I or I structure yourself." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Probably, you want to use B(3) instead of these system calls." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "These calls supersede B(2)." 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 "" #. FIXME The example program needs to be revised, since it uses the older #. getdents() system call and the structure with smaller field widths. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The program below demonstrates the use of B(). The following " "output shows an example of what we see when running this program on an ext2 " "directory:" 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< ./a.out /testfs/>\n" "--------------- nread=120 ---------------\n" "inode# file type d_reclen d_off d_name\n" " 2 directory 16 12 .\n" " 2 directory 16 24 ..\n" " 11 directory 24 44 lost+found\n" " 12 regular 16 56 a\n" " 228929 directory 16 68 sub\n" " 16353 directory 16 80 sub2\n" " 130817 directory 16 4096 sub3\n" msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "" #. type: Plain text #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Edirent.hE /* Defines DT_* constants */\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/syscall.hE\n" "#include Esys/types.hE\n" "#include Eunistd.hE\n" "\\&\n" "struct linux_dirent {\n" " unsigned long d_ino;\n" " off_t d_off;\n" " unsigned short d_reclen;\n" " char d_name[];\n" "};\n" "\\&\n" "#define BUF_SIZE 1024\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char d_type;\n" " char buf[BUF_SIZE];\n" " long nread;\n" " struct linux_dirent *d;\n" "\\&\n" " fd = open(argc E 1 ? argv[1] : \".\", O_RDONLY | O_DIRECTORY);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"open\");\n" "\\&\n" " for (;;) {\n" " nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);\n" " if (nread == -1)\n" " err(EXIT_FAILURE, \"getdents\");\n" "\\&\n" " if (nread == 0)\n" " break;\n" "\\&\n" " printf(\"--------------- nread=%ld ---------------\\en\", nread);\n" " printf(\"inode# file type d_reclen d_off d_name\\en\");\n" " for (size_t bpos = 0; bpos E nread;) {\n" " d = (struct linux_dirent *) (buf + bpos);\n" " printf(\"%8lu \", d-Ed_ino);\n" " d_type = *(buf + bpos + d-Ed_reclen - 1);\n" " printf(\"%-10s \", (d_type == DT_REG) ? \"regular\" :\n" " (d_type == DT_DIR) ? \"directory\" :\n" " (d_type == DT_FIFO) ? \"FIFO\" :\n" " (d_type == DT_SOCK) ? \"socket\" :\n" " (d_type == DT_LNK) ? \"symlink\" :\n" " (d_type == DT_BLK) ? \"block dev\" :\n" " (d_type == DT_CHR) ? \"char dev\" : \"???\");\n" " printf(\"%4d %10jd %s\\en\", d-Ed_reclen,\n" " (intmax_t) d-Ed_off, d-Ed_name);\n" " bpos += d-Ed_reclen;\n" " }\n" " }\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(2), B(3), 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: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 #, no-wrap msgid "" "struct linux_dirent {\n" " unsigned long d_ino; /* Inode number */\n" " unsigned long d_off; /* Offset to next I */\n" " unsigned short d_reclen; /* Length of this I */\n" " char d_name[]; /* Filename (null-terminated) */\n" " /* length is actually (d_reclen - 2 -\n" " offsetof(struct linux_dirent, d_name)) */\n" " /*\n" " char pad; // Zero padding byte\n" " char d_type; // File type (only since Linux\n" " // 2.6.4); offset is (d_reclen - 1)\n" " */\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "I is an inode number. I is the distance from the start of the " "directory to the start of the next I. I is the size " "of this entire I. I is a null-terminated filename." msgstr "" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 #, no-wrap msgid "" "struct linux_dirent64 {\n" " ino64_t d_ino; /* 64-bit inode number */\n" " off64_t d_off; /* 64-bit offset to next structure */\n" " unsigned short d_reclen; /* Size of this dirent */\n" " unsigned char d_type; /* File type */\n" " char d_name[]; /* Filename (null-terminated) */\n" "};\n" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "Library support for B() was added in glibc 2.30; glibc does not " "provide a wrapper for B(); call B() (or " "B() on earlier glibc versions) using B(2). In that " "case you will need to define the I or I " "structure yourself." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Edirent.hE /* Defines DT_* constants */\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/syscall.hE\n" "#include Eunistd.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "struct linux_dirent {\n" " unsigned long d_ino;\n" " off_t d_off;\n" " unsigned short d_reclen;\n" " char d_name[];\n" "};\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "#define BUF_SIZE 1024\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char d_type;\n" " char buf[BUF_SIZE];\n" " long nread;\n" " struct linux_dirent *d;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fd = open(argc E 1 ? argv[1] : \".\", O_RDONLY | O_DIRECTORY);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"open\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " for (;;) {\n" " nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);\n" " if (nread == -1)\n" " err(EXIT_FAILURE, \"getdents\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (nread == 0)\n" " break;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"--------------- nread=%ld ---------------\\en\", nread);\n" " printf(\"inode# file type d_reclen d_off d_name\\en\");\n" " for (size_t bpos = 0; bpos E nread;) {\n" " d = (struct linux_dirent *) (buf + bpos);\n" " printf(\"%8lu \", d-Ed_ino);\n" " d_type = *(buf + bpos + d-Ed_reclen - 1);\n" " printf(\"%-10s \", (d_type == DT_REG) ? \"regular\" :\n" " (d_type == DT_DIR) ? \"directory\" :\n" " (d_type == DT_FIFO) ? \"FIFO\" :\n" " (d_type == DT_SOCK) ? \"socket\" :\n" " (d_type == DT_LNK) ? \"symlink\" :\n" " (d_type == DT_BLK) ? \"block dev\" :\n" " (d_type == DT_CHR) ? \"char dev\" : \"???\");\n" " printf(\"%4d %10jd %s\\en\", d-Ed_reclen,\n" " (intmax_t) d-Ed_off, d-Ed_name);\n" " bpos += d-Ed_reclen;\n" " }\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-40 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: Plain text #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Edirent.hE /* Defines DT_* constants */\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/syscall.hE\n" "#include Eunistd.hE\n" "\\&\n" "struct linux_dirent {\n" " unsigned long d_ino;\n" " off_t d_off;\n" " unsigned short d_reclen;\n" " char d_name[];\n" "};\n" "\\&\n" "#define BUF_SIZE 1024\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char d_type;\n" " char buf[BUF_SIZE];\n" " long nread;\n" " struct linux_dirent *d;\n" "\\&\n" " fd = open(argc E 1 ? argv[1] : \".\", O_RDONLY | O_DIRECTORY);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"open\");\n" "\\&\n" " for (;;) {\n" " nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);\n" " if (nread == -1)\n" " err(EXIT_FAILURE, \"getdents\");\n" "\\&\n" " if (nread == 0)\n" " break;\n" "\\&\n" " printf(\"--------------- nread=%ld ---------------\\en\", nread);\n" " printf(\"inode# file type d_reclen d_off d_name\\en\");\n" " for (size_t bpos = 0; bpos E nread;) {\n" " d = (struct linux_dirent *) (buf + bpos);\n" " printf(\"%8lu \", d-Ed_ino);\n" " d_type = *(buf + bpos + d-Ed_reclen - 1);\n" " printf(\"%-10s \", (d_type == DT_REG) ? \"regular\" :\n" " (d_type == DT_DIR) ? \"directory\" :\n" " (d_type == DT_FIFO) ? \"FIFO\" :\n" " (d_type == DT_SOCK) ? \"socket\" :\n" " (d_type == DT_LNK) ? \"symlink\" :\n" " (d_type == DT_BLK) ? \"block dev\" :\n" " (d_type == DT_CHR) ? \"char dev\" : \"???\");\n" " printf(\"%4d %10jd %s\\en\", d-Ed_reclen,\n" " (intmax_t) d-Ed_off, d-Ed_name);\n" " bpos += d-Ed_reclen;\n" " }\n" " }\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "2024-02-25" 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 ""