+.TH DIR 5 "15 January 1983"
+.SH NAME
+dir \- format of directories
+.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
+.B #include <sys/dir.h>
+.SH DESCRIPTION
+A directory behaves exactly like an ordinary file, save that no
+user may write into a directory.
+The fact that a file is a directory is indicated by
+a bit in the flag word of its i-node entry; see
+.IR fs (5).
+The structure of a directory entry as given in the include file is:
+.RS
+.ta 8n +10n +10n
+.PP
+.nf
+/*
+ * This sets the "page size" for directories.
+ * Requirements are DEV_BSIZE <= DIRBLKSIZ <= MINBSIZE with
+ * DIRBLKSIZ a power of two.
+ * Dennis Ritchie feels that directory pages should be atomic
+ * operations to the disk, so we use DEV_BSIZE.
+ */
+#ifdef KERNEL
+#define DIRBLKSIZ DEV_BSIZE
+#else
+#define DIRBLKSIZ 512
+#endif
+
+/*
+ * This limits the directory name length. Its main constraint
+ * is that it appears twice in the user structure. (u. area)
+ */
+#define MAXNAMLEN 255
+
+struct direct {
+ u_long d_ino;
+ short d_reclen;
+ short d_namlen;
+ char d_name[MAXNAMLEN + 1];
+ /* typically shorter */
+};
+
+struct _dirdesc {
+ int dd_fd;
+ long dd_loc;
+ long dd_size;
+ char dd_buf[DIRBLKSIZ];
+};
+.fi
+.RE
+.PP
+By convention, the first two entries in each directory
+are for `\fB.\fR' and `\fB..\fR'. The first is an entry for the
+directory itself. The second is for the parent directory.
+The meaning of `\fB..\fR' is modified for the root directory
+of the master file system
+.RB (\*(lq / \*(rq),
+where `\fB..\fR' has the same meaning as `\fB.\fR'.
+.SH "SEE ALSO"
+fs(5)