]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/getdents.2
clone.2: Place CLONE_INTO_CGROUP text in correct alphabetical position
[thirdparty/man-pages.git] / man2 / getdents.2
index 0b8e6e1ee7f64f736ee1cefbf298f8f51ea3a432..a56fe02e5047e0a2eefcbbc79f196751822a2ab6 100644 (file)
@@ -28,7 +28,7 @@
 .\"   Derived from 'readdir.2'.
 .\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
 .\"
-.TH GETDENTS 2  2012-08-03 "Linux" "Linux Programmer's Manual"
+.TH GETDENTS 2  2019-03-06 "Linux" "Linux Programmer's Manual"
 .SH NAME
 getdents, getdents64 \- get directory entries
 .SH SYNOPSIS
@@ -38,9 +38,11 @@ getdents, getdents64 \- get directory entries
 .BI "int getdents64(unsigned int " fd ", struct linux_dirent64 *" dirp ,
 .BI "             unsigned int " count );
 .fi
-
+.PP
 .IR Note :
-There are no glibc wrappers for these system calls; see NOTES.
+There is no glibc wrapper for
+.BR getdents ();
+see NOTES.
 .SH DESCRIPTION
 These are not the interfaces you are interested in.
 Look at
@@ -66,7 +68,7 @@ The
 structure is declared as follows:
 .PP
 .in +4n
-.nf
+.EX
 struct linux_dirent {
     unsigned long  d_ino;     /* Inode number */
     unsigned long  d_off;     /* Offset to next \fIlinux_dirent\fP */
@@ -80,7 +82,7 @@ struct linux_dirent {
                               // 2.6.4); offset is (d_reclen \- 1)
     */
 }
-.fi
+.EE
 .in
 .PP
 .I d_ino
@@ -93,7 +95,7 @@ is the size of this entire
 .IR linux_dirent .
 .I d_name
 is a null-terminated filename.
-
+.PP
 .I d_type
 is a byte at the end of the structure that indicates the file type.
 It contains one of the following values (defined in
@@ -157,15 +159,15 @@ In addition,
 supports an explicit
 .I d_type
 field.
-
+.PP
 The
 .BR getdents64 ()
 system call is like
 .BR getdents (),
 except that its second argument is a pointer to a buffer containing
 structures of the following type:
-
-.nf
+.PP
+.EX
 .in +4n
 struct linux_dirent64 {
     ino64_t        d_ino;    /* 64-bit inode number */
@@ -174,8 +176,8 @@ struct linux_dirent64 {
     unsigned char  d_type;   /* File type */
     char           d_name[]; /* Filename (null-terminated) */
 };
+.EE
 .in
-.fi
 .SH RETURN VALUE
 On success, the number of bytes read is returned.
 On end of directory, 0 is returned.
@@ -203,17 +205,27 @@ File descriptor does not refer to a directory.
 SVr4.
 .\" SVr4 documents additional ENOLINK, EIO error conditions.
 .SH NOTES
-Glibc does not provide a wrapper for these system calls; call them using
+Library support for
+.BR getdents64 ()
+was added in glibc 2.30;
+there is no glibc wrapper for
+.BR getdents ().
+Calling
+.BR getdents ()
+(or
+.BR getdents64 ()
+on earlier glibc versions) requires the use of
 .BR syscall (2).
-You will need to define the
+In that case you will need to define the
 .I linux_dirent
 or
 .I linux_dirent64
 structure yourself.
-However, you probably want to use
+.PP
+Probably, you probably want to use
 .BR readdir (3)
-instead.
-
+instead of these system calls.
+.PP
 These calls supersede
 .BR readdir (2).
 .SH EXAMPLE
@@ -223,9 +235,9 @@ The program below demonstrates the use of
 .BR getdents ().
 The following output shows an example of what we see when running this
 program on an ext2 directory:
-
+.PP
 .in +4n
-.nf
+.EX
 .RB "$" " ./a.out /testfs/"
 --------------- nread=120 ---------------
 inode#    file type  d_reclen  d_off   d_name
@@ -236,11 +248,11 @@ inode#    file type  d_reclen  d_off   d_name
   228929  directory    16         68  sub
    16353  directory    16         80  sub2
   130817  directory    16       4096  sub3
-.fi
+.EE
 .in
 .SS Program source
 \&
-.nf
+.EX
 #define _GNU_SOURCE
 #include <dirent.h>     /* Defines DT_* constants */
 #include <fcntl.h>
@@ -250,11 +262,11 @@ inode#    file type  d_reclen  d_off   d_name
 #include <sys/stat.h>
 #include <sys/syscall.h>
 
-#define handle_error(msg) \\
+#define handle_error(msg) \e
         do { perror(msg); exit(EXIT_FAILURE); } while (0)
 
 struct linux_dirent {
-    long           d_ino;
+    unsigned long  d_ino;
     off_t          d_off;
     unsigned short d_reclen;
     char           d_name[];
@@ -283,8 +295,8 @@ main(int argc, char *argv[])
         if (nread == 0)
             break;
 
-        printf("\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=%d \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\\n", nread);
-        printf("inode#    file type  d_reclen  d_off   d_name\\n");
+        printf("\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=%d \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\en", nread);
+        printf("inode#    file type  d_reclen  d_off   d_name\en");
         for (bpos = 0; bpos < nread;) {
             d = (struct linux_dirent *) (buf + bpos);
             printf("%8ld  ", d\->d_ino);
@@ -296,7 +308,7 @@ main(int argc, char *argv[])
                              (d_type == DT_LNK) ?  "symlink" :
                              (d_type == DT_BLK) ?  "block dev" :
                              (d_type == DT_CHR) ?  "char dev" : "???");
-            printf("%4d %10lld  %s\\n", d\->d_reclen,
+            printf("%4d %10lld  %s\en", d\->d_reclen,
                     (long long) d\->d_off, d\->d_name);
             bpos += d\->d_reclen;
         }
@@ -304,7 +316,8 @@ main(int argc, char *argv[])
 
     exit(EXIT_SUCCESS);
 }
-.fi
+.EE
 .SH SEE ALSO
 .BR readdir (2),
-.BR readdir (3)
+.BR readdir (3),
+.BR inode (7)