Format of a Directory Entry
---------------------------
This section describes what you find in a single directory entry, as
you might obtain it from a directory stream. All the symbols are
declared in the header file `dirent.h'.
- Data Type: struct dirent
This is a structure type used to return information about directory
entries. It contains the following fields:
`char d_name[]'
This is the null-terminated file name component. This is the
only field you can count on in all POSIX systems.
`ino_t d_fileno'
This is the file serial number. For BSD compatibility, you
can also refer to this member as `d_ino'. In the GNU system
and most POSIX systems, for most files this the same as the
`st_ino' member that `stat' will return for the file. Note:File Attributes.
`unsigned char d_namlen'
This is the length of the file name, not including the
terminating null character. Its type is `unsigned char'
because that is the integer type of the appropriate size
`unsigned char d_type'
This is the type of the file, possibly unknown. The
following constants are defined for its value:
`DT_UNKNOWN'
The type is unknown. On some systems this is the only
value returned.
`DT_REG'
A regular file.
`DT_DIR'
A directory.
`DT_FIFO'
A named pipe, or FIFO. Note:FIFO Special Files.
`DT_SOCK'
A local-domain socket.
`DT_CHR'
A character device.
`DT_BLK'
A block device.
This member is a BSD extension. The symbol
`_DIRENT_HAVE_D_TYPE' is defined if this member is available.
On systems where it is used, it corresponds to the file type
bits in the `st_mode' member of `struct statbuf'. If the
value cannot be determine the member value is DT_UNKNOWN.
These two macros convert between `d_type' values and
`st_mode' values:
- Function: int IFTODT (mode_t MODE)
This returns the `d_type' value corresponding to MODE.
- Function: mode_t DTTOIF (int DTYPE)
This returns the `st_mode' value corresponding to DTYPE.
This structure may contain additional members in the future. Their
availability is always announced in the compilation environment by
a macro names `_DIRENT_HAVE_D_XXX' where XXX is replaced by the
name of the new member. For instance, the member `d_reclen'
available on some systems is announced through the macro
`_DIRENT_HAVE_D_RECLEN'.
When a file has multiple names, each name has its own directory
entry. The only way you can tell that the directory entries
belong to a single file is that they have the same value for the
`d_fileno' field.
File attributes such as size, modification times etc., are part of
the file itself, not of any particular directory entry. Note:File Attributes.