Annotation of qemu/roms/openbios/fs/hfs/include/apple.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * libhfs - library for reading and writing Macintosh HFS volumes
                      3:  * Copyright (C) 1996-1998 Robert Leslie
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify
                      6:  * it under the terms of the GNU General Public License as published by
                      7:  * the Free Software Foundation; either version 2 of the License, or
                      8:  * (at your option) any later version.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful,
                     11:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
                     12:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     13:  * GNU General Public License for more details.
                     14:  *
                     15:  * You should have received a copy of the GNU General Public License
                     16:  * along with this program; if not, write to the Free Software
                     17:  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
                     18:  * MA 02110-1301, USA.
                     19:  *
                     20:  * $Id: apple.h,v 1.1 1998/04/11 08:27:11 rob Exp $
                     21:  */
                     22: 
                     23: typedef signed char    Char;
                     24: typedef unsigned char  UChar;
                     25: typedef signed char    SignedByte;
                     26: typedef signed short   Integer;
                     27: typedef unsigned short UInteger;
                     28: typedef signed long    LongInt;
                     29: typedef unsigned long  ULongInt;
                     30: typedef char           Str15[16];
                     31: typedef char           Str31[32];
                     32: typedef long           OSType;
                     33: 
                     34: typedef struct {
                     35:   Integer      sbSig;          /* device signature (should be 0x4552) */
                     36:   Integer      sbBlkSize;      /* block size of the device (in bytes) */
                     37:   LongInt      sbBlkCount;     /* number of blocks on the device */
                     38:   Integer      sbDevType;      /* reserved */
                     39:   Integer      sbDevId;        /* reserved */
                     40:   LongInt      sbData;         /* reserved */
                     41:   Integer      sbDrvrCount;    /* number of driver descriptor entries */
                     42:   LongInt      ddBlock;        /* first driver's starting block */
                     43:   Integer      ddSize;         /* size of the driver, in 512-byte blocks */
                     44:   Integer      ddType;         /* driver operating system type (MacOS = 1) */
                     45:   Integer      ddPad[243];     /* additional drivers, if any */
                     46: } Block0;
                     47: 
                     48: typedef struct {
                     49:   Integer      pmSig;          /* partition signature (0x504d or 0x5453) */
                     50:   Integer      pmSigPad;       /* reserved */
                     51:   LongInt      pmMapBlkCnt;    /* number of blocks in partition map */
                     52:   LongInt      pmPyPartStart;  /* first physical block of partition */
                     53:   LongInt      pmPartBlkCnt;   /* number of blocks in partition */
                     54:   Char         pmPartName[33]; /* partition name */
                     55:   Char         pmParType[33];  /* partition type */
                     56:   LongInt      pmLgDataStart;  /* first logical block of data area */
                     57:   LongInt      pmDataCnt;      /* number of blocks in data area */
                     58:   LongInt      pmPartStatus;   /* partition status information */
                     59:   LongInt      pmLgBootStart;  /* first logical block of boot code */
                     60:   LongInt      pmBootSize;     /* size of boot code, in bytes */
                     61:   LongInt      pmBootAddr;     /* boot code load address */
                     62:   LongInt      pmBootAddr2;    /* reserved */
                     63:   LongInt      pmBootEntry;    /* boot code entry point */
                     64:   LongInt      pmBootEntry2;   /* reserved */
                     65:   LongInt      pmBootCksum;    /* boot code checksum */
                     66:   Char         pmProcessor[17];/* processor type */
                     67:   Integer      pmPad[188];     /* reserved */
                     68: } Partition;
                     69: 
                     70: typedef struct {
                     71:   Integer      bbID;           /* boot blocks signature */
                     72:   LongInt      bbEntry;        /* entry point to boot code */
                     73:   Integer      bbVersion;      /* boot blocks version number */
                     74:   Integer      bbPageFlags;    /* used internally */
                     75:   Str15                bbSysName;      /* System filename */
                     76:   Str15                bbShellName;    /* Finder filename */
                     77:   Str15                bbDbg1Name;     /* debugger filename */
                     78:   Str15                bbDbg2Name;     /* debugger filename */
                     79:   Str15                bbScreenName;   /* name of startup screen */
                     80:   Str15                bbHelloName;    /* name of startup program */
                     81:   Str15                bbScrapName;    /* name of system scrap file */
                     82:   Integer      bbCntFCBs;      /* number of FCBs to allocate */
                     83:   Integer      bbCntEvts;      /* number of event queue elements */
                     84:   LongInt      bb128KSHeap;    /* system heap size on 128K Mac */
                     85:   LongInt      bb256KSHeap;    /* used internally */
                     86:   LongInt      bbSysHeapSize;  /* system heap size on all machines */
                     87:   Integer      filler;         /* reserved */
                     88:   LongInt      bbSysHeapExtra; /* additional system heap space */
                     89:   LongInt      bbSysHeapFract; /* fraction of RAM for system heap */
                     90: } BootBlkHdr;
                     91: 
                     92: typedef struct {
                     93:   UInteger     xdrStABN;       /* first allocation block */
                     94:   UInteger     xdrNumABlks;    /* number of allocation blocks */
                     95: } ExtDescriptor;
                     96: 
                     97: typedef ExtDescriptor ExtDataRec[3];
                     98: 
                     99: typedef struct {
                    100:   SignedByte   xkrKeyLen;      /* key length */
                    101:   SignedByte   xkrFkType;      /* fork type (0x00/0xff == data/resource */
                    102:   ULongInt     xkrFNum;        /* file number */
                    103:   UInteger     xkrFABN;        /* starting file allocation block */
                    104: } ExtKeyRec;
                    105: 
                    106: typedef struct {
                    107:   SignedByte   ckrKeyLen;      /* key length */
                    108:   SignedByte   ckrResrv1;      /* reserved */
                    109:   ULongInt     ckrParID;       /* parent directory ID */
                    110:   Str31                ckrCName;       /* catalog node name */
                    111: } CatKeyRec;
                    112: 
                    113: typedef struct {
                    114:   Integer      v;              /* vertical coordinate */
                    115:   Integer      h;              /* horizontal coordinate */
                    116: } Point;
                    117: 
                    118: typedef struct {
                    119:   Integer      top;            /* top edge of rectangle */
                    120:   Integer      left;           /* left edge */
                    121:   Integer      bottom;         /* bottom edge */
                    122:   Integer      right;          /* right edge */
                    123: } Rect;
                    124: 
                    125: typedef struct {
                    126:   Rect         frRect;         /* folder's rectangle */
                    127:   Integer      frFlags;        /* flags */
                    128:   Point                frLocation;     /* folder's location */
                    129:   Integer      frView;         /* folder's view */
                    130: } DInfo;
                    131: 
                    132: typedef struct {
                    133:   Point                frScroll;       /* scroll position */
                    134:   LongInt      frOpenChain;    /* directory ID chain of open folders */
                    135:   Integer      frUnused;       /* reserved */
                    136:   Integer      frComment;      /* comment ID */
                    137:   LongInt      frPutAway;      /* directory ID */
                    138: } DXInfo;
                    139: 
                    140: typedef struct {
                    141:   OSType       fdType;         /* file type */
                    142:   OSType       fdCreator;      /* file's creator */
                    143:   Integer      fdFlags;        /* flags */
                    144:   Point                fdLocation;     /* file's location */
                    145:   Integer      fdFldr;         /* file's window */
                    146: } FInfo;
                    147: 
                    148: typedef struct {
                    149:   Integer      fdIconID;       /* icon ID */
                    150:   Integer      fdUnused[4];    /* reserved */
                    151:   Integer      fdComment;      /* comment ID */
                    152:   LongInt      fdPutAway;      /* home directory ID */
                    153: } FXInfo;
                    154: 
                    155: typedef struct {
                    156:   Integer      drSigWord;      /* volume signature (0x4244 for HFS) */
                    157:   LongInt      drCrDate;       /* date and time of volume creation */
                    158:   LongInt      drLsMod;        /* date and time of last modification */
                    159:   Integer      drAtrb;         /* volume attributes */
                    160:   UInteger     drNmFls;        /* number of files in root directory */
                    161:   UInteger     drVBMSt;        /* first block of volume bit map (always 3) */
                    162:   UInteger     drAllocPtr;     /* start of next allocation search */
                    163:   UInteger     drNmAlBlks;     /* number of allocation blocks in volume */
                    164:   ULongInt     drAlBlkSiz;     /* size (in bytes) of allocation blocks */
                    165:   ULongInt     drClpSiz;       /* default clump size */
                    166:   UInteger     drAlBlSt;       /* first allocation block in volume */
                    167:   LongInt      drNxtCNID;      /* next unused catalog node ID (dir/file ID) */
                    168:   UInteger     drFreeBks;      /* number of unused allocation blocks */
                    169:   char         drVN[28];       /* volume name (1-27 chars) */
                    170:   LongInt      drVolBkUp;      /* date and time of last backup */
                    171:   Integer      drVSeqNum;      /* volume backup sequence number */
                    172:   ULongInt     drWrCnt;        /* volume write count */
                    173:   ULongInt     drXTClpSiz;     /* clump size for extents overflow file */
                    174:   ULongInt     drCTClpSiz;     /* clump size for catalog file */
                    175:   UInteger     drNmRtDirs;     /* number of directories in root directory */
                    176:   ULongInt     drFilCnt;       /* number of files in volume */
                    177:   ULongInt     drDirCnt;       /* number of directories in volume */
                    178:   LongInt      drFndrInfo[8];  /* information used by the Finder */
                    179:   UInteger     drEmbedSigWord; /* type of embedded volume */
                    180:   ExtDescriptor        drEmbedExtent;  /* location of embedded volume */
                    181:   ULongInt     drXTFlSize;     /* size (in bytes) of extents overflow file */
                    182:   ExtDataRec   drXTExtRec;     /* first extent record for extents file */
                    183:   ULongInt     drCTFlSize;     /* size (in bytes) of catalog file */
                    184:   ExtDataRec   drCTExtRec;     /* first extent record for catalog file */
                    185: } MDB;
                    186: 
                    187: typedef enum {
                    188:   cdrDirRec  = 1,
                    189:   cdrFilRec  = 2,
                    190:   cdrThdRec  = 3,
                    191:   cdrFThdRec = 4
                    192: } CatDataType;
                    193: 
                    194: typedef struct {
                    195:   SignedByte   cdrType;        /* record type */
                    196:   SignedByte   cdrResrv2;      /* reserved */
                    197:   union {
                    198:     struct {  /* cdrDirRec */
                    199:       Integer  dirFlags;       /* directory flags */
                    200:       UInteger dirVal;         /* directory valence */
                    201:       ULongInt dirDirID;       /* directory ID */
                    202:       LongInt  dirCrDat;       /* date and time of creation */
                    203:       LongInt  dirMdDat;       /* date and time of last modification */
                    204:       LongInt  dirBkDat;       /* date and time of last backup */
                    205:       DInfo    dirUsrInfo;     /* Finder information */
                    206:       DXInfo   dirFndrInfo;    /* additional Finder information */
                    207:       LongInt  dirResrv[4];    /* reserved */
                    208:     } dir;
                    209:     struct {  /* cdrFilRec */
                    210:       SignedByte
                    211:                filFlags;       /* file flags */
                    212:       SignedByte
                    213:                filTyp;         /* file type */
                    214:       FInfo    filUsrWds;      /* Finder information */
                    215:       ULongInt filFlNum;       /* file ID */
                    216:       UInteger filStBlk;       /* first alloc block of data fork */
                    217:       ULongInt filLgLen;       /* logical EOF of data fork */
                    218:       ULongInt filPyLen;       /* physical EOF of data fork */
                    219:       UInteger filRStBlk;      /* first alloc block of resource fork */
                    220:       ULongInt filRLgLen;      /* logical EOF of resource fork */
                    221:       ULongInt filRPyLen;      /* physical EOF of resource fork */
                    222:       LongInt  filCrDat;       /* date and time of creation */
                    223:       LongInt  filMdDat;       /* date and time of last modification */
                    224:       LongInt  filBkDat;       /* date and time of last backup */
                    225:       FXInfo   filFndrInfo;    /* additional Finder information */
                    226:       UInteger filClpSize;     /* file clump size */
                    227:       ExtDataRec
                    228:                filExtRec;      /* first data fork extent record */
                    229:       ExtDataRec
                    230:                filRExtRec;     /* first resource fork extent record */
                    231:       LongInt  filResrv;       /* reserved */
                    232:     } fil;
                    233:     struct {  /* cdrThdRec */
                    234:       LongInt  thdResrv[2];    /* reserved */
                    235:       ULongInt thdParID;       /* parent ID for this directory */
                    236:       Str31    thdCName;       /* name of this directory */
                    237:     } dthd;
                    238:     struct {  /* cdrFThdRec */
                    239:       LongInt  fthdResrv[2];   /* reserved */
                    240:       ULongInt fthdParID;      /* parent ID for this file */
                    241:       Str31    fthdCName;      /* name of this file */
                    242:     } fthd;
                    243:   } u;
                    244: } CatDataRec;
                    245: 
                    246: typedef struct {
                    247:   ULongInt     ndFLink;        /* forward link */
                    248:   ULongInt     ndBLink;        /* backward link */
                    249:   SignedByte   ndType;         /* node type */
                    250:   SignedByte   ndNHeight;      /* node level */
                    251:   UInteger     ndNRecs;        /* number of records in node */
                    252:   Integer      ndResv2;        /* reserved */
                    253: } NodeDescriptor;
                    254: 
                    255: enum {
                    256:   ndIndxNode = (SignedByte) 0x00,
                    257:   ndHdrNode  = (SignedByte) 0x01,
                    258:   ndMapNode  = (SignedByte) 0x02,
                    259:   ndLeafNode = (SignedByte) 0xff
                    260: };
                    261: 
                    262: typedef struct {
                    263:   UInteger     bthDepth;       /* current depth of tree */
                    264:   ULongInt     bthRoot;        /* number of root node */
                    265:   ULongInt     bthNRecs;       /* number of leaf records in tree */
                    266:   ULongInt     bthFNode;       /* number of first leaf node */
                    267:   ULongInt     bthLNode;       /* number of last leaf node */
                    268:   UInteger     bthNodeSize;    /* size of a node */
                    269:   UInteger     bthKeyLen;      /* maximum length of a key */
                    270:   ULongInt     bthNNodes;      /* total number of nodes in tree */
                    271:   ULongInt     bthFree;        /* number of free nodes */
                    272:   SignedByte   bthResv[76];    /* reserved */
                    273: } BTHdrRec;

unix.superglobalmegacorp.com

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