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
<
struct dirent {
ino_t d_fileno; /* 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 */
#define MAXNAMLEN 511
char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */
};
/*
* 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
sys/dirent.h
>:
/*
* 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 an
* 8 byte boundary with null bytes. All names are guaranteed null
* terminated. The maximum length of a name in a directory is MAXNAMLEN.
*/
AT&T UNIX
.
The
dirent
structure appeared in
NetBSD1.3.