Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fs(4)

dir(4)

NAME

dir − format of directories

SYNOPSIS

#include <ufs/fsdir.h>

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 fs(4)].  The structure of a directory entry as given in the include file is:

#define DIRBLKSIZ1024
#defineMAXNAMLEN 255
structdirect {
u_longd_ino; /∗ inode number of entry ∗/
u_shortd_reclen; /∗ length of this record ∗/
u_shortd_namlen; /∗ length of string in d_name ∗/
chard_name[MAXNAMLEN + 1]; /∗ name must be no longer than this ∗/
};
#define DIRSIZ(dp) ((sizeof (struct direct) - (MAXNAMLEN+1)) +
          (((dp)->d_namlen+1 + 3) &~ 3))

 

A directory consists of some number of blocks of DIRBLKSIZ.  Each DIRBLKSIZ byte block contains some number of directory entry structures, which are of variable length.  Each directory entry has a struct direct 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 a 4 byte boundary with null bytes.  All names are guaranteed null terminated.  The maximum length of a name in a directory is MAXNAMLEN. 

Free space in a directory is represented by entries which have dp->d_reclen > DIRSIZ(dp).  All DIRBLKSIZ bytes in a directory block are claimed by the directory entries.  This usually results in the last entry in a directory having a large dp->d_reclen.  When entries are deleted from a directory, the space is returned to the previous entry in the same directory block by increasing its dp->d_reclen.  If the first entry of a directory block is free, then its dp->d_ino is set to 0.  Entries other than the first in a directory do not normally have dp->d_ino set to 0. 

By convention, the first two entries in each directory are for . and ...  The first is an entry for the directory itself.  The second is for the parent directory.  The meaning of .. is modified for the root directory of the master file system; there is no parent, so .. has the same meaning as .. 

SEE ALSO

fs(4). 

CX/UX Programmer’s Reference Manual

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026