*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> dirent (5)              



NAME    [Toc]    [Back]

     dir, dirent - directory file format

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <dirent.h>

DESCRIPTION    [Toc]    [Back]

     Directories provide  a  convenient  hierarchical  method  of
grouping files
     while  obscuring the underlying details of the storage medium.  A directory
 file is differentiated from a plain file by a flag in its
inode(5) entry.
   It  consists  of  records (directory entries) each of
which contains
     information about a file and a pointer to the  file  itself.
Directory entries
  may contain other directories as well as plain files;
such nested
     directories are referred to as subdirectories.  A  hierarchy
of directories
 and files is formed in this manner and is called a file
system (or
     referred to as a file system tree).

     Each directory file contains two special directory  entries;
one is a
     pointer  to  the directory itself called dot (``.'') and the
other a pointer
 to its parent directory called dot-dot (``..'').  Dot and
dot-dot are
     valid pathnames, however, the system root directory (``/''),
has no parent
 and dot-dot points to itself like dot.

     File system nodes are ordinary directory files on which  has
been grafted
     a  file  system  object, such as a physical disk or a partitioned area of
     such a disk (see mount(8)).

     The  directory  entry  format  is  defined   in   the   file

      * A directory entry has a struct dirent at the front of it,
      * 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
NUL terminated.
      * The maximum length of a name in a directory is MAXNAMLEN.

     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 */
     #define MAXNAMLEN       255
             char    d_name[MAXNAMLEN  +  1];   /*  maximum  name
length */

      * 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

      * Convert between stat structure types and directory types.
     #define IFTODT(mode)    (((mode) & 0170000) >> 12)
     #define DTTOIF(dirtype) ((dirtype) << 12)

     #ifdef _POSIX_SOURCE
     typedef void *  DIR;

     #define d_ino           d_fileno        /* backward compatibility */

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

     /* 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 */
     } 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 */
     #define DTF_REWIND       0x0004   /*  rewind  after  reading
union stack */
     #define  __DTF_READALL   0x0008  /* everything has been read

     #endif /* _POSIX_SOURCE */

SEE ALSO    [Toc]    [Back]

     getdirentries(2), fs(5), inode(5)

HISTORY    [Toc]    [Back]

     A dir file format appeared in Version 7 AT&T UNIX.

OpenBSD      3.6                            May      3,      1995
[ Back ]
 Similar pages
Name OS Title
getdirentri HP-UX get entries from a directory in a file-systemindependent format
getdents FreeBSD get directory entries in a file system independent format
getdirentries Tru64 Get directory entries in a file-system independent format.
getdirentries FreeBSD get directory entries in a file system independent format
getdents IRIX read directory entries and put in a file system independent format
dirent HP-UX format of directory streams and directory entries
DxfToIv IRIX converts an Autodesk Data Exchange File format (.DXF) file to Open Inventor 2.0 format
ndir HP-UX format of HP-UX directory streams
getdirentries OpenBSD get directory entries in a filesystem independent format
getdents NetBSD get directory entries in a filesystem independent format
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service