/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show 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 /*
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