Annotation of coherent/b/lib/libc/ndir/old/sys._dir.h, revision 1.1

1.1     ! root        1: /*
        !             2:        <sys/_dir.h> -- definitions for 4.2,4.3BSD directories
        !             3: 
        !             4:        last edit:      25-Apr-1987     D A Gwyn
        !             5: 
        !             6:        A directory consists of some number of blocks of DIRBLKSIZ bytes each,
        !             7:        where DIRBLKSIZ is chosen such that it can be transferred to disk in a
        !             8:        single atomic operation (e.g., 512 bytes on most machines).
        !             9: 
        !            10:        Each DIRBLKSIZ-byte block contains some number of directory entry
        !            11:        structures, which are of variable length.  Each directory entry has the
        !            12:        beginning of a (struct direct) at the front of it, containing its
        !            13:        filesystem-unique ident number, the length of the entry, and the length
        !            14:        of the name contained in the entry.  These are followed by the NUL-
        !            15:        terminated name padded to a (long) boundary with 0 bytes.  The maximum
        !            16:        length of a name in a directory is MAXNAMELEN.
        !            17: 
        !            18:        The macro DIRSIZ(dp) gives the amount of space required to represent a
        !            19:        directory entry.  Free space in a directory is represented by entries
        !            20:        that have dp->d_reclen > DIRSIZ(dp).  All DIRBLKSIZ bytes in a
        !            21:        directory block are claimed by the directory entries; this usually
        !            22:        results in the last entry in a directory having a large dp->d_reclen.
        !            23:        When entries are deleted from a directory, the space is returned to the
        !            24:        previous entry in the same directory block by increasing its
        !            25:        dp->d_reclen.  If the first entry of a directory block is free, then
        !            26:        its dp->d_fileno is set to 0; entries other than the first in a
        !            27:        directory do not normally have  dp->d_fileno set to 0.
        !            28: 
        !            29:        prerequisite:   <sys/types.h>
        !            30: */
        !            31: 
        !            32: #if defined(accel) || defined(sun) || defined(vax)
        !            33: #define        DIRBLKSIZ       512             /* size of directory block */
        !            34: #else
        !            35: #ifdef alliant
        !            36: #define        DIRBLKSIZ       4096            /* size of directory block */
        !            37: #else
        !            38: #ifdef gould
        !            39: #define        DIRBLKSIZ       1024            /* size of directory block */
        !            40: #else
        !            41: #ifdef ns32000 /* Dynix System V */
        !            42: #define        DIRBLKSIZ       2600            /* size of directory block */
        !            43: #else  /* be conservative; multiple blocks are okay but fractions are not */
        !            44: #define        DIRBLKSIZ       4096            /* size of directory block */
        !            45: #endif
        !            46: #endif
        !            47: #endif
        !            48: #endif
        !            49: 
        !            50: #define        MAXNAMELEN      255             /* maximum filename length */
        !            51: /* NOTE:  not MAXNAMLEN, which has been preempted by SVR3 <dirent.h> */
        !            52: 
        !            53: struct direct                          /* data from read()/_getdirentries() */
        !            54:        {
        !            55:        unsigned long   d_fileno;       /* unique ident of entry */
        !            56:        unsigned short  d_reclen;       /* length of this record */
        !            57:        unsigned short  d_namlen;       /* length of string in d_name */
        !            58:        char            d_name[MAXNAMELEN+1];   /* NUL-terminated filename */
        !            59:        /* typically shorter */
        !            60:        };
        !            61: 
        !            62: /*
        !            63:        The DIRSIZ macro gives the minimum record length which will hold the
        !            64:        directory entry.  This requires the amount of space in a (struct
        !            65:        direct) without the d_name field, plus enough space for the name with a
        !            66:        terminating NUL character, rounded up to a (long) boundary.
        !            67: 
        !            68:        (Note that Berkeley didn't properly compensate for struct padding,
        !            69:        but we nevertheless have to use the same size as the actual system.)
        !            70: */
        !            71: 
        !            72: #define        DIRSIZ( dp )    ((sizeof(struct direct) - (MAXNAMELEN+1) \
        !            73:                        + sizeof(long) + (dp)->d_namlen) \
        !            74:                        / sizeof(long) * sizeof(long))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.