/[pearpc]/src/io/prom/fs/hfs/apple.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /src/io/prom/fs/hfs/apple.h

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.26