about summary refs log tree commit diff
path: root/bits/dirent.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2012-08-07 13:17:26 -0700
committerRoland McGrath <roland@hack.frob.com>2012-08-07 13:17:26 -0700
commitf0bd3e25fb73f0fe6574282ec84610b0521f4ac1 (patch)
tree9ac70b6de6bfe8173df38bedf749641ef1d10921 /bits/dirent.h
parentd34689de847aa0a2b01ed6ec4895f289d7453905 (diff)
downloadglibc-f0bd3e25fb73f0fe6574282ec84610b0521f4ac1.tar.gz
glibc-f0bd3e25fb73f0fe6574282ec84610b0521f4ac1.tar.xz
glibc-f0bd3e25fb73f0fe6574282ec84610b0521f4ac1.zip
Make the bsd4.4/bits/dirent.h be the generic one.
Diffstat (limited to 'bits/dirent.h')
-rw-r--r--bits/dirent.h35
1 files changed, 28 insertions, 7 deletions
diff --git a/bits/dirent.h b/bits/dirent.h
index 5b803c6539..948510c068 100644
--- a/bits/dirent.h
+++ b/bits/dirent.h
@@ -1,4 +1,4 @@
-/* Directory entry structure `struct dirent'.  Stub version.
+/* Directory entry structure `struct dirent'.  4.4BSD/Generic version.
    Copyright (C) 1996-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -22,17 +22,38 @@
 
 struct dirent
   {
-    char d_name[1];		/* Variable length.  */
-    int d_fileno;
+#ifndef __USE_FILE_OFFSET64
+    __ino_t d_ino;		/* File serial number.  */
+#else
+    __ino64_t d_ino;
+#endif
+    unsigned short int d_reclen; /* Length of the whole `struct dirent'.  */
+    unsigned char d_type;	/* File type, possibly unknown.  */
+    unsigned char d_namlen;	/* Length of the file name.  */
+
+    /* Only this member is in the POSIX standard.  */
+    char d_name[1];		/* File name (actually longer).  */
   };
 
 #ifdef __USE_LARGEFILE64
 struct dirent64
   {
-    char d_name[1];		/* Variable length.  */
-    int d_fileno;
+    __ino64_t d_ino;
+    unsigned short int d_reclen;
+    unsigned char d_type;
+    unsigned char d_namlen;
+
+    char d_name[1];
   };
 #endif
 
-/* Inform libc code that these two types are identical.  */
-#define _DIRENT_MATCHES_DIRENT64	1
+#define d_fileno	d_ino	/* Backwards compatibility.  */
+
+#define _DIRENT_HAVE_D_RECLEN 1
+#define _DIRENT_HAVE_D_NAMLEN 1
+#define _DIRENT_HAVE_D_TYPE 1
+
+#ifdef __INO_T_MATCHES_INO64_T
+/* Inform libc code that these two types are effectively identical.  */
+# define _DIRENT_MATCHES_DIRENT64	1
+#endif