]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/man/man5/dir.5
xnu-1699.22.73.tar.gz
[apple/xnu.git] / bsd / man / man5 / dir.5
index b33c223c0b8cd3fbb72a33d5857e60e63afa1a18..c9e37b3b5044278591cccc0a2e683b6e48f9efe1 100644 (file)
@@ -84,38 +84,63 @@ and
 The directory entry format is defined in the file
 .Aq sys/dirent.h 
 and further in the file
-.Aq dirent.h :
+.Aq dirent.h .
+When the macro
+.Dv _DARWIN_FEATURE_64_BIT_INODE
+is not defined (see
+.Xr stat 2
+for more information on this macro), the
+.Fa dirent
+structure is defined as:
 .Bd -literal
 /*** Excerpt from <sys/dirent.h> ***/
 /*
- * The dirent structure defines the format of directory entries returned by 
- * the getdirentries(2) system call.
+ * The dirent structure defines the format of directory entries.
  *
  * A directory entry has a struct dirent at the front of it, containing its
  * inode number, the length of the entry, and the length of the name
  * contained in the entry.  These are followed by the name padded to a 4
  * byte boundary with null bytes.  All names are guaranteed null terminated.
- * The maximum length of a name in a directory is MAXNAMLEN.
- * The dirent structure defines the format of directory entries returned by 
- * the getdirentries(2) system call.
+ * The maximum length of a name in a directory is 255.
  */
 
-#ifndef _SYS_DIRENT_H 
-#define _SYS_DIRENT_H 
-
-struct dirent {
-        u_int32_t d_fileno;             /* file number of entry */
-        u_int16_t d_reclen;             /* length of this record */
-        u_int8_t  d_type;               /* file type, see below */
-        u_int8_t  d_namlen;             /* length of string in d_name */
-#ifdef _POSIX_SOURCE
-        char    d_name[255 + 1];        /* name must be no longer than this */
-#else
-#define MAXNAMLEN       255
-        char    d_name[MAXNAMLEN + 1];  /* name must be no longer than this */
-#endif
+struct dirent { /* when _DARWIN_FEATURE_64_BIT_INODE is NOT defined */
+        ino_t      d_ino;                /* file number of entry */
+        __uint16_t d_reclen;             /* length of this record */
+        __uint8_t  d_type;               /* file type, see below */
+        __uint8_t  d_namlen;             /* length of string in d_name */
+        char    d_name[255 + 1];   /* name must be no longer than this */
 };
+.Ed
+.Pp
+However, when the macro
+.Dv _DARWIN_FEATURE_64_BIT_INODE
+is defined, the
+.Fa dirent
+structure is defined as:
+.Bd -literal
+/*
+ * The dirent structure defines the format of directory entries.
+ *
+ * A directory entry has a struct dirent at the front of it, containing its
+ * inode number, the length of the entry, and the length of the name
+ * contained in the entry.  These are followed by the name padded to a 4
+ * byte boundary with null bytes.  All names are guaranteed null terminated.
+ * The maximum length of a name in a directory is 1023.
+ */
 
+struct dirent { /* when _DARWIN_FEATURE_64_BIT_INODE is defined */
+        ino_t      d_fileno;     /* file number of entry */
+        __uint16_t d_seekoff;    /* seek offset (optional, used by servers) */
+        __uint16_t d_reclen;     /* length of this record */
+        __uint16_t d_namlen;     /* length of string in d_name */
+        __uint8_t  d_type;       /* file type, see below */
+        char    d_name[1024];    /* name must be no longer than this */
+};
+.Ed
+.Pp
+In addition:
+.Bd -literal
 /*
  * File types
  */
@@ -129,21 +154,12 @@ struct dirent {
 #define DT_SOCK         12
 #define DT_WHT          14
 
-#endif /* !_SYS_DIRENT_H_ */
-
 .Ed
 -----------------------------------------
 .Bd -literal
 /*** Excerpt from <dirent.h> ***/
 
-#ifndef _DIRENT_H 
-#define _DIRENT_H 
-
-#ifdef _POSIX_SOURCE
-typedef void *  DIR;
-#else
-
-#define d_ino           d_fileno        /* backward compatibility */
+#define d_fileno        d_ino        /* backward compatibility */
 
 /* definitions for library routines operating on directories. */
 #define DIRBLKSIZ       1024
@@ -152,35 +168,16 @@ struct _telldir;                /* see telldir.h */
 
 /* structure describing an open directory. */
 typedef struct _dirdesc {
-        int     dd_fd;          /* file descriptor associated with directory */
-        long    dd_loc;         /* offset in current buffer */
-        long    dd_size;        /* amount of data returned by getdirentries */
-        char    *dd_buf;        /* data buffer */
-        int     dd_len;         /* size of data buffer */
-        long    dd_seek;        /* magic cookie returned by getdirentries */
-        long    dd_rewind;      /* magic cookie for rewinding */
-        int     dd_flags;       /* flags for readdir */
-        pthread_mutex_t dd_lock; /* for thread locking */
-        struct _telldir *dd_td; /* telldir position recording */
-} DIR;
-
-#define dirfd(dirp)     ((dirp)->dd_fd)
-
-/* flags for opendir2 */
-#define DTF_HIDEW       0x0001  /* hide whiteout entries */
-#define DTF_NODUP       0x0002  /* don't return duplicate names */
-/* structure describing an open directory. */
-typedef struct _dirdesc {
-        int     dd_fd;          /* file descriptor associated with directory */
-        long    dd_loc;         /* offset in current buffer */
-        long    dd_size;        /* amount of data returned by getdirentries */
-        char    *dd_buf;        /* data buffer */
-        int     dd_len;         /* size of data buffer */
-        long    dd_seek;        /* magic cookie returned by getdirentries */
-        long    dd_rewind;      /* magic cookie for rewinding */
-        int     dd_flags;       /* flags for readdir */
-        pthread_mutex_t dd_lock; /* for thread locking */
-        struct _telldir *dd_td; /* telldir position recording */
+        int     __dd_fd;      /* file descriptor associated with directory */
+        long    __dd_loc;     /* offset in current buffer */
+        long    __dd_size;    /* amount of data returned by getdirentries */
+        char    *__dd_buf;    /* data buffer */
+        int     __dd_len;     /* size of data buffer */
+        long    __dd_seek;    /* magic cookie returned by getdirentries */
+        long    __dd_rewind;  /* magic cookie for rewinding */
+        int     __dd_flags;   /* flags for readdir */
+        pthread_mutex_t __dd_lock; /* for thread locking */
+        struct _telldir *__dd_td; /* telldir position recording */
 } DIR;
 
 #define dirfd(dirp)     ((dirp)->dd_fd)
@@ -190,14 +187,6 @@ typedef struct _dirdesc {
 #define DTF_NODUP       0x0002  /* don't return duplicate names */
 #define DTF_REWIND      0x0004  /* rewind after reading union stack */
 #define __DTF_READALL   0x0008  /* everything has been read */
-
-#ifndef NULL
-#define NULL    0
-#endif
-
-#endif /* _POSIX_SOURCE */
-
-#endif /* !_DIRENT_H_ */
 .Ed
 .Sh SEE ALSO
 .Xr fs 5 ,