/[pearpc]/src/io/prom/fs/hfsstruct.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/hfsstruct.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 4671 byte(s)
import upstream CVS
1 /*
2 * PearPC
3 * hfsstruct.h
4 *
5 * Copyright (C) 2004 Stefan Weyergraf
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
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 #ifndef __HFSSTRUCT_H__
22 #define __HFSSTRUCT_H__
23
24 #define HFSSigWord MAGIC16("BD")
25
26 struct HFSExtentDescriptor {
27 uint16 startBlock;
28 uint16 blockCount;
29 } PACKED;
30
31 struct HFSMDB {
32 uint16 drSigWord;
33 uint32 drCrDate;
34 uint32 drLsMod;
35 uint16 drAtrb;
36 uint16 drNmFls;
37 uint16 drVBMSt;
38 uint16 drAllocPtr;
39 uint16 drNmAlBlks;
40 uint32 drAlblkSz;
41 uint32 drClpSiz;
42 uint16 drAlBlSt;
43 uint32 drNxtCNID;
44 uint16 drFreeBks;
45 char drVN[28];
46 uint32 drVolBkUp;
47 uint16 drVSeqNum;
48 uint32 drWrCnt;
49 uint32 drXTClpSiz;
50 uint32 drCTClpSiz;
51 uint16 drNmRtDirs;
52 uint32 drFilCnt;
53 uint32 drDirCnt;
54 uint32 drFndrInfo[8];
55 uint16 drEmbedSigWord;
56 HFSExtentDescriptor drEmbedExtent;
57 uint32 drXtFlSize;
58 HFSExtentDescriptor drXTExtRec[3];
59 uint32 drCTFlSize;
60 HFSExtentDescriptor drCTExtRec[3];
61 } PACKED;
62
63 #if 0
64 struct HFSNodeDescriptor {
65 uint32 ndFLink; // forward link
66 uint32 ndBLink; // backward link
67 char ndType; // node type
68 char ndNHeight; // node level
69 uint16 ndNRecs; // number of records in node
70 uint16 ndResv2; // reserved
71 } PACKED;
72
73 enum HFSNodeType {
74 ndIndxNode = 0,
75 ndHdrNode = 1,
76 ndMapNode = 2,
77 ndLeafNode = -1
78 };
79
80 union HFSNode {
81 HFSNodeDescriptor desc;
82 byte raw[512];
83 } PACKED;
84
85 struct HFSBTHdrRec {
86 uint16 bthDepth;
87 uint32 bthRoot;
88 uint32 bthNRecs;
89 uint32 bthFNode;
90 uint32 bthLNode;
91 uint16 bthNodeSize;
92 uint16 bthKeyLen;
93 uint32 bthNNodes;
94 uint32 bthFree;
95 char bthResv[76];
96 } PACKED;
97
98 struct HFSCatKeyRec {
99 char ckrKeyLen;
100 char ckrResrv1;
101 uint32 ckrParID;
102 char ckrCName[31];
103 } PACKED;
104
105 enum HFSCatDataType {
106 cdrDirRec = 1,
107 cdrFilRec = 2,
108 cdrThdRec = 3,
109 cdrFThdRec = 4
110 };
111
112 struct HFSFXInfo {
113 uint16 fdIconID; //icon ID
114 uint16 fdUnused[3]; //unused but reserved 6 bytes
115 char fdScript; //script flag and code
116 char fdXFlags; //reserved
117 uint16 fdComment; //comment ID
118 uint32 fdPutAway; //home directory ID
119 } PACKED;
120
121 struct HFSFInfo {
122 char fdType[4]; //file type
123 char fdCreator[4]; //file creator
124 uint16 fdFlags; //Finder flags
125 uint16 fdLocation_v; //file's location in window
126 uint16 fdLocation_h;
127 uint16 fdFldr; //directory that contains file
128 } PACKED;
129
130 struct HFSCatDirRec {
131 uint16 dirFlags; //directory flags
132 uint16 dirVal; //directory valence
133 uint32 dirDirID; //directory ID
134 uint32 dirCrDat; //date and time of creation
135 uint32 dirMdDat; //date and time of last modification
136 uint32 dirBkDat; //date and time of last backup
137 // dont care
138 // dirUsrInfo:DInfo;//Finder information
139 // dirFndrInfo:DXInfo;//additional Finder information
140 // uint32 dirResrv[4];
141 } PACKED;
142
143 struct HFSCatFileRec {
144 char filFlags; //file flags
145 char filTyp; //file type
146 HFSFInfo filUsrWds; //Finder information
147 uint32 filFlNum; //file ID
148 uint16 filStBlk; //first alloc. blk. of data fork
149 uint32 filLgLen; //logical EOF of data fork
150 uint32 filPyLen; //physical EOF of data fork
151 uint16 filRStBlk; //first alloc.blk.of resource fork
152 uint32 filRLgLen; //logical EOF of resource fork
153 uint32 filRPyLen; //physical EOF of resource fork
154 uint32 filCrDat; //date and time of creation
155 uint32 filMdDat; //date and time of last modification
156 uint32 filBkDat; //date and time of last backup
157 HFSFXInfo filFndrInfo; //additional Finder information
158 uint16 filClpSize; //file clump size
159 HFSExtentDescriptor filExtRec[3];//first data fork extent record
160 HFSExtentDescriptor filRExtRec[3];//first resource fork extent record
161 uint32 filResrv; //reserved
162 } PACKED;
163
164 struct HFSCatDataRec {
165 char cdrType;
166 char cdrResrv2;
167 // layout depends on cdrType
168 union {
169 HFSCatDirRec dirRec;
170 HFSCatFileRec fileRec;
171 //directory thread record
172 struct {
173 uint32 thdResrv[2];
174 uint32 thdParID; //parent ID for this directory
175 char thdCName[31]; //name of this directory
176 } dirThreadRec;
177 //file thread record
178 struct {
179 uint32 fthdResrv[2];
180 uint32 fthdParID; //parent ID for this file
181 char fthdCName[31]; //name of this file
182 } fileThreadRec;
183 };
184 } PACKED;
185 #endif
186
187 #endif

  ViewVC Help
Powered by ViewVC 1.1.26