X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/55e303ae13a4cf49d70f2294092726f2fffb9ef2..6d2010ae8f7a6078e10b361c6962983bab233e0f:/bsd/man/man5/dir.5 diff --git a/bsd/man/man5/dir.5 b/bsd/man/man5/dir.5 index b33c223c0..c9e37b3b5 100644 --- a/bsd/man/man5/dir.5 +++ b/bsd/man/man5/dir.5 @@ -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 ***/ /* - * 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 ***/ -#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 ,