]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/man/man5/dir.5
xnu-1228.15.4.tar.gz
[apple/xnu.git] / bsd / man / man5 / dir.5
index d852d0c86d62bfd9ffe1dd31ef9dcca1ae2d3893..891e5db37f2d41fc66332015663cbda1f851bf3e 100644 (file)
@@ -82,64 +82,82 @@ and
 .Xr mount 8 . )
 .Pp
 The directory entry format is defined in the file
+.Aq sys/dirent.h 
+and further in the file
 .Aq dirent.h :
 .Bd -literal
-#ifndef _DIRENT_H_
-#define _DIRENT_H_
-
+/*** Excerpt from <sys/dirent.h> ***/
 /*
-* 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.
+ *
+ * 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 MAXPATHLEN.
+ */
 
-struct dirent {
-       u_long  d_fileno;       /* file number of entry */
-       u_short d_reclen;       /* length of this record */
-       u_short d_namlen;       /* length of string in d_name */
-#ifdef _POSIX_SOURCE
-       char    d_name[MAXNAMLEN + 1];  /* maximum name length */
-#else
-#define MAXNAMLEN       255
-       char    d_name[MAXNAMLEN + 1];  /* maximum name length */
-#endif
+#ifndef _SYS_DIRENT_H 
+#define _SYS_DIRENT_H 
 
+struct dirent {
+        ino_t     d_ino;                /* file number of entry */
+        u_int64_t d_seekoff;            /* length of this record */
+        u_int16_t d_reclen;             /* length of this record */
+        u_int16_t d_namlen;             /* length of string in d_name */
+        u_int8_t  d_type;               /* file type, see below */
+        char      d_name[MAXPATHLEN];   /* name must be no longer than this */
 };
 
-#ifdef _POSIX_SOURCE
-typedef void * DIR;
-#else
-
-#define        d_ino           d_fileno        /* backward compatibility */
+/*
+ * File types
+ */
+#define DT_UNKNOWN       0
+#define DT_FIFO          1
+#define DT_CHR           2
+#define DT_DIR           4
+#define DT_BLK           6
+#define DT_REG           8
+#define DT_LNK          10
+#define DT_SOCK         12
+#define DT_WHT          14
 
-/* definitions for library routines operating on directories. */
-#define        DIRBLKSIZ       1024
+#endif /* !_SYS_DIRENT_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 */
-} DIR;
+.Ed
+-----------------------------------------
+.Bd -literal
+/*** Excerpt from <dirent.h> ***/
 
-#define        dirfd(dirp)     ((dirp)->dd_fd)
+#ifndef _DIRENT_H 
+#define _DIRENT_H 
 
-#ifndef NULL
-#define        NULL    0
-#endif
+/* definitions for library routines operating on directories. */
+#define DIRBLKSIZ       1024
 
-#endif /* _POSIX_SOURCE */
+struct _telldir;                /* see telldir.h */
 
-#ifndef _KERNEL
+/* structure describing an open directory. */
+typedef struct {
+        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;
 
-#include <sys/cdefs.h>
+#define dirfd(dirp)     ((dirp)->__dd_fd)
 
-#endif /* !_KERNEL */
+/* flags for opendir2 */
+#define DTF_HIDEW       0x0001  /* hide whiteout entries */
+#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 */
 
 #endif /* !_DIRENT_H_ */
 .Ed