typedef struct ExtDescriptor { // extent descriptor
uint16_t xdrStABN; // first allocation block
uint16_t xdrNumABlks; // number of allocation blocks
} ext_descriptor;
typedef struct ExtDataRec {
ext_descriptor ed[3]; // extent data record
} ext_data_rec;
/*
* The crazy "uint16_t x[2]" stuff here is to get around the fact
* that I can't convince the Mac compiler to align on 32 bit
* quantities on 16 bit boundaries...
*/
struct mdb_record { // master directory block
uint16_t drSigWord; // volume signature
uint16_t drCrDate[2]; // date and time of volume creation
uint16_t drLsMod[2]; // date and time of last modification
uint16_t drAtrb; // volume attributes
uint16_t drNmFls; // number of files in root directory
uint16_t drVBMSt; // first block of volume bitmap
uint16_t drAllocPtr; // start of next allocation search
uint16_t drNmAlBlks; // number of allocation blocks in volume
uint32_t drAlBlkSiz; // size (in bytes) of allocation blocks
uint32_t drClpSiz; // default clump size
uint16_t drAlBlSt; // first allocation block in volume
uint16_t drNxtCNID[2]; // next unused catalog node ID
uint16_t drFreeBks; // number of unused allocation blocks
char drVN[28]; // volume name
uint16_t drVolBkUp[2]; // date and time of last backup
uint16_t drVSeqNum; // volume backup sequence number
uint16_t drWrCnt[2]; // volume write count
uint16_t drXTClpSiz[2]; // clump size for extents overflow file
uint16_t drCTClpSiz[2]; // clump size for catalog file
uint16_t drNmRtDirs; // number of directories in root directory
uint32_t drFilCnt; // number of files in volume
uint32_t drDirCnt; // number of directories in volume
uint32_t drFndrInfo[8]; // information used by the Finder
#ifdef notdef
uint16_t drVCSize; // size (in blocks) of volume cache
uint16_t drVBMCSize; // size (in blocks) of volume bitmap cache
uint16_t drCtlCSize; // size (in blocks) of common volume cache
#else
uint16_t drEmbedSigWord; // type of embedded volume
ext_descriptor drEmbedExtent; // embedded volume extent
#endif
uint16_t drXTFlSize[2]; // size of extents overflow file
ext_data_rec drXTExtRec; // extent record for extents overflow file
uint16_t drCTFlSize[2]; // size of catalog file
ext_data_rec drCTExtRec; // extent record for catalog file
};