#include <dirent.h>

dirent.h

includes: _bounds.h, _types.h, sys/dirent.h, sys/cdefs.h, Availability.h, sys/_pthread/_pthread_types.h, sys/_types/_size_t.h
19 functions · 4 macros · 1 struct · 1 typedef

structDIR

structure describing an open directory.
size 136, align 8
int__dd_fdfile descriptor associated with directory
size_t__dd_locoffset in current buffer
size_t__dd_sizeamount of data returned
char *__dd_bufdata buffer
int__dd_lensize of data buffer
long__dd_seekmagic cookie returned
long__padding(__dd_rewind space left for bincompat)
int__dd_flagsflags for readdir
__darwin_pthread_mutex_t__dd_lockfor thread locking
struct _telldir *__dd_tdtelldir position recording

typedefDIR

typedef struct DIR DIR;

macroDIRBLKSIZ

definitions for library routines operating on directories.
#define DIRBLKSIZ 1024

macroDTF_HIDEW

flags for opendir2
#define DTF_HIDEW 0x0001
hide whiteout entries

macroDTF_NODUP

#define DTF_NODUP 0x0002
don't return duplicate names

macroDTF_REWIND

#define DTF_REWIND 0x0004
rewind after reading union stack

functionclosedir

__DARWIN_ALIAS(closedir)
int closedir(DIR *)
man page · August 1, 2020
closedir(3) — directory operations

functionopendir

__DARWIN_ALIAS_I(opendir)
DIR *opendir(const char *)
man page · August 1, 2020
opendir(3) — directory operations

functionreaddir

__DARWIN_INODE64(readdir)
struct dirent *readdir(DIR *)
man page · August 1, 2020
readdir(3) — directory operations

functionreaddir_r

__deprecated_msg("This function cannot be used safely as it does not take into account the variability of {NAME_MAX}. It is highly recommended that you use readdir(3) instead.") __DARWIN_INODE64(readdir_r)
int readdir_r(DIR *, struct dirent *, struct dirent **)
deprecated
man page · August 1, 2020
readdir_r(3) — directory operations

functionrewinddir

__DARWIN_ALIAS_I(rewinddir)
void rewinddir(DIR *)
man page · August 1, 2020
rewinddir(3) — directory operations

functionseekdir

__DARWIN_ALIAS_I(seekdir)
void seekdir(DIR *, long)
man page · August 1, 2020
seekdir(3) — directory operations

functiontelldir

__DARWIN_ALIAS_I(telldir)
long telldir(DIR *)
man page · August 1, 2020
telldir(3) — directory operations

functionfdopendir

__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) __DARWIN_ALIAS_I(fdopendir)
DIR *fdopendir(int)
man page · August 1, 2020
fdopendir(3) — directory operations

functionalphasort

__DARWIN_INODE64(alphasort)
int alphasort(const struct dirent **, const struct dirent **)
man page · June 25, 2025
alphasort(3) — scan a directory

functiondirfd

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int dirfd(DIR *dirp)
man page · August 1, 2020
dirfd(3) — directory operations

functionscandir

__DARWIN_INODE64(scandir)
int scandir(
	const char *,
	struct dirent ***,
	int (*)(const struct dirent *),
	int (*)(const struct dirent **, const struct dirent **)
)
man page · June 25, 2025
scandir(3) — scan a directory

functionscandir_b

__DARWIN_INODE64(scandir_b) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
int scandir_b(
	const char *,
	struct dirent ***,
	int (^)(const struct dirent *) __scandir_noescape,
	int (^)(const struct dirent **, const struct dirent **) __scandir_noescape
)
man page · June 25, 2025
scandir_b(3) — scan a directory

functionfdclosedir

__API_AVAILABLE(macos(26.4), ios(26.4), watchos(26.4), tvos(26.4), visionos(26.4))
int fdclosedir(DIR *)
man page · August 1, 2020
fdclosedir(3) — directory operations

functionfdscandir

__DARWIN_INODE64(fdscandir) __API_AVAILABLE(macos(26.4), ios(26.4), watchos(26.4), tvos(26.4), visionos(26.4))
int fdscandir(
	int,
	struct dirent ***,
	int (*)(const struct dirent *),
	int (*)(const struct dirent **, const struct dirent **)
)
man page · June 25, 2025
fdscandir(3) — scan a directory

functionfdscandir_b

__DARWIN_INODE64(fdscandir_b) __API_AVAILABLE(macos(26.4), ios(26.4), watchos(26.4), tvos(26.4), visionos(26.4))
int fdscandir_b(
	int,
	struct dirent ***,
	int (^)(const struct dirent *) __scandir_noescape,
	int (^)(const struct dirent **, const struct dirent **) __scandir_noescape
)
man page · June 25, 2025
fdscandir_b(3) — scan a directory

functionscandirat

__DARWIN_INODE64(scandirat) __API_AVAILABLE(macos(26.4), ios(26.4), watchos(26.4), tvos(26.4), visionos(26.4))
int scandirat(
	int,
	const char *,
	struct dirent ***,
	int (*)(const struct dirent *),
	int (*)(const struct dirent **, const struct dirent **)
)
man page · June 25, 2025
scandirat(3) — scan a directory

functionscandirat_b

__DARWIN_INODE64(scandirat_b) __API_AVAILABLE(macos(26.4), ios(26.4), watchos(26.4), tvos(26.4), visionos(26.4))
int scandirat_b(
	int,
	const char *,
	struct dirent ***,
	int (^)(const struct dirent *) __scandir_noescape,
	int (^)(const struct dirent **, const struct dirent **) __scandir_noescape
)

functiongetdirentries

/* * getdirentries() doesn't work when 64-bit inodes is in effect, so we * generate a link error. */ __asm("_getdirentries_is_not_available_when_64_bit_inodes_are_in_effect")
int getdirentries(int, char *_LIBC_COUNT(__nbytes), int __nbytes, long *)
man page · October 5, 2023
getdirentries(2) — "get directory entries in a filesystem independent format"

function__opendir2

__DARWIN_ALIAS_I(__opendir2)
DIR *__opendir2(const char *, int)