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

Annotation of /src/io/prom/fs/hfsstruct.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: 4671 byte(s)
import upstream CVS
1 dpavlin 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