Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / fs / hfs / include / apple.h
diff --git a/qemu/roms/openbios/fs/hfs/include/apple.h b/qemu/roms/openbios/fs/hfs/include/apple.h
new file mode 100644 (file)
index 0000000..3de581d
--- /dev/null
@@ -0,0 +1,273 @@
+/*
+ * libhfs - library for reading and writing Macintosh HFS volumes
+ * Copyright (C) 1996-1998 Robert Leslie
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * $Id: apple.h,v 1.1 1998/04/11 08:27:11 rob Exp $
+ */
+
+typedef signed char    Char;
+typedef unsigned char  UChar;
+typedef signed char    SignedByte;
+typedef signed short   Integer;
+typedef unsigned short UInteger;
+typedef signed long    LongInt;
+typedef unsigned long  ULongInt;
+typedef char           Str15[16];
+typedef char           Str31[32];
+typedef long           OSType;
+
+typedef struct {
+  Integer      sbSig;          /* device signature (should be 0x4552) */
+  Integer      sbBlkSize;      /* block size of the device (in bytes) */
+  LongInt      sbBlkCount;     /* number of blocks on the device */
+  Integer      sbDevType;      /* reserved */
+  Integer      sbDevId;        /* reserved */
+  LongInt      sbData;         /* reserved */
+  Integer      sbDrvrCount;    /* number of driver descriptor entries */
+  LongInt      ddBlock;        /* first driver's starting block */
+  Integer      ddSize;         /* size of the driver, in 512-byte blocks */
+  Integer      ddType;         /* driver operating system type (MacOS = 1) */
+  Integer      ddPad[243];     /* additional drivers, if any */
+} Block0;
+
+typedef struct {
+  Integer      pmSig;          /* partition signature (0x504d or 0x5453) */
+  Integer      pmSigPad;       /* reserved */
+  LongInt      pmMapBlkCnt;    /* number of blocks in partition map */
+  LongInt      pmPyPartStart;  /* first physical block of partition */
+  LongInt      pmPartBlkCnt;   /* number of blocks in partition */
+  Char         pmPartName[33]; /* partition name */
+  Char         pmParType[33];  /* partition type */
+  LongInt      pmLgDataStart;  /* first logical block of data area */
+  LongInt      pmDataCnt;      /* number of blocks in data area */
+  LongInt      pmPartStatus;   /* partition status information */
+  LongInt      pmLgBootStart;  /* first logical block of boot code */
+  LongInt      pmBootSize;     /* size of boot code, in bytes */
+  LongInt      pmBootAddr;     /* boot code load address */
+  LongInt      pmBootAddr2;    /* reserved */
+  LongInt      pmBootEntry;    /* boot code entry point */
+  LongInt      pmBootEntry2;   /* reserved */
+  LongInt      pmBootCksum;    /* boot code checksum */
+  Char         pmProcessor[17];/* processor type */
+  Integer      pmPad[188];     /* reserved */
+} Partition;
+
+typedef struct {
+  Integer      bbID;           /* boot blocks signature */
+  LongInt      bbEntry;        /* entry point to boot code */
+  Integer      bbVersion;      /* boot blocks version number */
+  Integer      bbPageFlags;    /* used internally */
+  Str15                bbSysName;      /* System filename */
+  Str15                bbShellName;    /* Finder filename */
+  Str15                bbDbg1Name;     /* debugger filename */
+  Str15                bbDbg2Name;     /* debugger filename */
+  Str15                bbScreenName;   /* name of startup screen */
+  Str15                bbHelloName;    /* name of startup program */
+  Str15                bbScrapName;    /* name of system scrap file */
+  Integer      bbCntFCBs;      /* number of FCBs to allocate */
+  Integer      bbCntEvts;      /* number of event queue elements */
+  LongInt      bb128KSHeap;    /* system heap size on 128K Mac */
+  LongInt      bb256KSHeap;    /* used internally */
+  LongInt      bbSysHeapSize;  /* system heap size on all machines */
+  Integer      filler;         /* reserved */
+  LongInt      bbSysHeapExtra; /* additional system heap space */
+  LongInt      bbSysHeapFract; /* fraction of RAM for system heap */
+} BootBlkHdr;
+
+typedef struct {
+  UInteger     xdrStABN;       /* first allocation block */
+  UInteger     xdrNumABlks;    /* number of allocation blocks */
+} ExtDescriptor;
+
+typedef ExtDescriptor ExtDataRec[3];
+
+typedef struct {
+  SignedByte   xkrKeyLen;      /* key length */
+  SignedByte   xkrFkType;      /* fork type (0x00/0xff == data/resource */
+  ULongInt     xkrFNum;        /* file number */
+  UInteger     xkrFABN;        /* starting file allocation block */
+} ExtKeyRec;
+
+typedef struct {
+  SignedByte   ckrKeyLen;      /* key length */
+  SignedByte   ckrResrv1;      /* reserved */
+  ULongInt     ckrParID;       /* parent directory ID */
+  Str31                ckrCName;       /* catalog node name */
+} CatKeyRec;
+
+typedef struct {
+  Integer      v;              /* vertical coordinate */
+  Integer      h;              /* horizontal coordinate */
+} Point;
+
+typedef struct {
+  Integer      top;            /* top edge of rectangle */
+  Integer      left;           /* left edge */
+  Integer      bottom;         /* bottom edge */
+  Integer      right;          /* right edge */
+} Rect;
+
+typedef struct {
+  Rect         frRect;         /* folder's rectangle */
+  Integer      frFlags;        /* flags */
+  Point                frLocation;     /* folder's location */
+  Integer      frView;         /* folder's view */
+} DInfo;
+
+typedef struct {
+  Point                frScroll;       /* scroll position */
+  LongInt      frOpenChain;    /* directory ID chain of open folders */
+  Integer      frUnused;       /* reserved */
+  Integer      frComment;      /* comment ID */
+  LongInt      frPutAway;      /* directory ID */
+} DXInfo;
+
+typedef struct {
+  OSType       fdType;         /* file type */
+  OSType       fdCreator;      /* file's creator */
+  Integer      fdFlags;        /* flags */
+  Point                fdLocation;     /* file's location */
+  Integer      fdFldr;         /* file's window */
+} FInfo;
+
+typedef struct {
+  Integer      fdIconID;       /* icon ID */
+  Integer      fdUnused[4];    /* reserved */
+  Integer      fdComment;      /* comment ID */
+  LongInt      fdPutAway;      /* home directory ID */
+} FXInfo;
+
+typedef struct {
+  Integer      drSigWord;      /* volume signature (0x4244 for HFS) */
+  LongInt      drCrDate;       /* date and time of volume creation */
+  LongInt      drLsMod;        /* date and time of last modification */
+  Integer      drAtrb;         /* volume attributes */
+  UInteger     drNmFls;        /* number of files in root directory */
+  UInteger     drVBMSt;        /* first block of volume bit map (always 3) */
+  UInteger     drAllocPtr;     /* start of next allocation search */
+  UInteger     drNmAlBlks;     /* number of allocation blocks in volume */
+  ULongInt     drAlBlkSiz;     /* size (in bytes) of allocation blocks */
+  ULongInt     drClpSiz;       /* default clump size */
+  UInteger     drAlBlSt;       /* first allocation block in volume */
+  LongInt      drNxtCNID;      /* next unused catalog node ID (dir/file ID) */
+  UInteger     drFreeBks;      /* number of unused allocation blocks */
+  char         drVN[28];       /* volume name (1-27 chars) */
+  LongInt      drVolBkUp;      /* date and time of last backup */
+  Integer      drVSeqNum;      /* volume backup sequence number */
+  ULongInt     drWrCnt;        /* volume write count */
+  ULongInt     drXTClpSiz;     /* clump size for extents overflow file */
+  ULongInt     drCTClpSiz;     /* clump size for catalog file */
+  UInteger     drNmRtDirs;     /* number of directories in root directory */
+  ULongInt     drFilCnt;       /* number of files in volume */
+  ULongInt     drDirCnt;       /* number of directories in volume */
+  LongInt      drFndrInfo[8];  /* information used by the Finder */
+  UInteger     drEmbedSigWord; /* type of embedded volume */
+  ExtDescriptor        drEmbedExtent;  /* location of embedded volume */
+  ULongInt     drXTFlSize;     /* size (in bytes) of extents overflow file */
+  ExtDataRec   drXTExtRec;     /* first extent record for extents file */
+  ULongInt     drCTFlSize;     /* size (in bytes) of catalog file */
+  ExtDataRec   drCTExtRec;     /* first extent record for catalog file */
+} MDB;
+
+typedef enum {
+  cdrDirRec  = 1,
+  cdrFilRec  = 2,
+  cdrThdRec  = 3,
+  cdrFThdRec = 4
+} CatDataType;
+
+typedef struct {
+  SignedByte   cdrType;        /* record type */
+  SignedByte   cdrResrv2;      /* reserved */
+  union {
+    struct {  /* cdrDirRec */
+      Integer  dirFlags;       /* directory flags */
+      UInteger dirVal;         /* directory valence */
+      ULongInt dirDirID;       /* directory ID */
+      LongInt  dirCrDat;       /* date and time of creation */
+      LongInt  dirMdDat;       /* date and time of last modification */
+      LongInt  dirBkDat;       /* date and time of last backup */
+      DInfo    dirUsrInfo;     /* Finder information */
+      DXInfo   dirFndrInfo;    /* additional Finder information */
+      LongInt  dirResrv[4];    /* reserved */
+    } dir;
+    struct {  /* cdrFilRec */
+      SignedByte
+               filFlags;       /* file flags */
+      SignedByte
+               filTyp;         /* file type */
+      FInfo    filUsrWds;      /* Finder information */
+      ULongInt filFlNum;       /* file ID */
+      UInteger filStBlk;       /* first alloc block of data fork */
+      ULongInt filLgLen;       /* logical EOF of data fork */
+      ULongInt filPyLen;       /* physical EOF of data fork */
+      UInteger filRStBlk;      /* first alloc block of resource fork */
+      ULongInt filRLgLen;      /* logical EOF of resource fork */
+      ULongInt filRPyLen;      /* physical EOF of resource fork */
+      LongInt  filCrDat;       /* date and time of creation */
+      LongInt  filMdDat;       /* date and time of last modification */
+      LongInt  filBkDat;       /* date and time of last backup */
+      FXInfo   filFndrInfo;    /* additional Finder information */
+      UInteger filClpSize;     /* file clump size */
+      ExtDataRec
+               filExtRec;      /* first data fork extent record */
+      ExtDataRec
+               filRExtRec;     /* first resource fork extent record */
+      LongInt  filResrv;       /* reserved */
+    } fil;
+    struct {  /* cdrThdRec */
+      LongInt  thdResrv[2];    /* reserved */
+      ULongInt thdParID;       /* parent ID for this directory */
+      Str31    thdCName;       /* name of this directory */
+    } dthd;
+    struct {  /* cdrFThdRec */
+      LongInt  fthdResrv[2];   /* reserved */
+      ULongInt fthdParID;      /* parent ID for this file */
+      Str31    fthdCName;      /* name of this file */
+    } fthd;
+  } u;
+} CatDataRec;
+
+typedef struct {
+  ULongInt     ndFLink;        /* forward link */
+  ULongInt     ndBLink;        /* backward link */
+  SignedByte   ndType;         /* node type */
+  SignedByte   ndNHeight;      /* node level */
+  UInteger     ndNRecs;        /* number of records in node */
+  Integer      ndResv2;        /* reserved */
+} NodeDescriptor;
+
+enum {
+  ndIndxNode = (SignedByte) 0x00,
+  ndHdrNode  = (SignedByte) 0x01,
+  ndMapNode  = (SignedByte) 0x02,
+  ndLeafNode = (SignedByte) 0xff
+};
+
+typedef struct {
+  UInteger     bthDepth;       /* current depth of tree */
+  ULongInt     bthRoot;        /* number of root node */
+  ULongInt     bthNRecs;       /* number of leaf records in tree */
+  ULongInt     bthFNode;       /* number of first leaf node */
+  ULongInt     bthLNode;       /* number of last leaf node */
+  UInteger     bthNodeSize;    /* size of a node */
+  UInteger     bthKeyLen;      /* maximum length of a key */
+  ULongInt     bthNNodes;      /* total number of nodes in tree */
+  ULongInt     bthFree;        /* number of free nodes */
+  SignedByte   bthResv[76];    /* reserved */
+} BTHdrRec;