The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> dirent.h - format of directory entries

#### SYNOPSIS

> `#include <dirent.h>`

#### DESCRIPTION

> The internal format of directories is unspecified.

> The <dirent.h> header shall define the following type:

> DIR
>   A type representing a directory stream.

> It shall also define the structure dirent which shall include the following members:

>     [XSI]
>     ino_t  d_ino       File serial number.

>     char   d_name[]    Name of entry.

> [XSI] The type ino_t shall be defined as described in <sys/types.h>.

> The character array d_name is of unspecified size, but the number of bytes preceding the terminating null byte shall not exceed {NAME_MAX}.

> The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided.

>     int            closedir(DIR *);
>     DIR           *opendir(const char *);
>     struct dirent *readdir(DIR *);
>     [TSF]
>     int            readdir_r(DIR *restrict, struct dirent *restrict,
>                        struct dirent **restrict);

>     void           rewinddir(DIR *);
>     [XSI]
>     void           seekdir(DIR *, long);
>     long           telldir(DIR *);

The following sections are informative.

#### APPLICATION USAGE

> None.

#### RATIONALE

> Information similar to that in the <dirent.h> header is contained in a file <sys/dir.h> in 4.2 BSD and 4.3 BSD. The equivalent in these implementations of struct dirent from this volume of IEEE Std 1003.1-2001 is struct direct. The filename was changed because the name <sys/dir.h> was also used in earlier implementations to refer to definitions related to the older access method; this produced name conflicts. The name of the structure was changed because this volume of IEEE Std 1003.1-2001 does not completely define what is in the structure, so it could be different on some implementations from struct direct.

> The name of an array of char of an unspecified size should not be used as an lvalue. Use of:

>     sizeof(d_name)

> is incorrect; use:

>     strlen(d_name)

> instead.

> The array of char d_name is not a fixed size. Implementations may need to declare struct dirent with an array size for d_name of 1, but the actual number of characters provided matches (or only slightly exceeds) the length of the filename.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> <sys/types.h>, the System Interfaces volume of IEEE Std 1003.1-2001, closedir(), opendir(), readdir(), readdir_r(), rewinddir(), seekdir(), telldir()

#### CHANGE HISTORY

> First released in Issue 2.

#### Issue 5

> The DESCRIPTION is updated for alignment with the POSIX Threads Extension.

#### Issue 6

> The Open Group Corrigendum U026/7 is applied, correcting the prototype for readdir_r().

> The restrict keyword is added to the prototype for readdir_r().

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]