ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/MacOSX/extfs_macosx.h
Revision: 1.1
Committed: 2002-03-16T04:00:18Z (22 years, 5 months ago) by nigel
Content type: text/plain
Branch: MAIN
CVS Tags: nigel-build-12, nigel-build-13, nigel-build-10
Log Message:
Initial revision of Mac OS X port code. Uses Objective-C++. Needs Mac OS 10.1

File Contents

# User Rev Content
1 nigel 1.1 /*
2     * $Id$
3     *
4     * extfs_macosx.h - Work around some symbol clashes between
5     * CarbonCore and Basilisk II header files.
6     * Based on:
7     *
8     * extfs_defs.h - MacOS types and structures for external file system
9     *
10     * Basilisk II (C) 1997-2002 Christian Bauer
11     *
12     * This program is free software; you can redistribute it and/or modify
13     * it under the terms of the GNU General Public License as published by
14     * the Free Software Foundation; either version 2 of the License, or
15     * (at your option) any later version.
16     *
17     * This program is distributed in the hope that it will be useful,
18     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20     * GNU General Public License for more details.
21     *
22     * You should have received a copy of the GNU General Public License
23     * along with this program; if not, write to the Free Software
24     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25     */
26    
27     #ifndef EXTFS_DEFS_H
28     #define EXTFS_DEFS_H
29    
30     #include "macos_util_macosx.h"
31    
32     #import <CarbonCore/Files.h>
33    
34    
35     // Gestalt selectors
36     enum {
37     gestaltFSAttr = FOURCC('f','s',' ',' '),
38     gestaltFullExtFSDispatching = 0,
39     gestaltHasFSSpecCalls = 1,
40     gestaltHasFileSystemManager = 2,
41     gestaltFSMDoesDynamicLoad = 3,
42     gestaltFSSupports4GBVols = 4,
43     gestaltFSSupports2TBVols = 5,
44     gestaltHasExtendedDiskInit = 6,
45     gestaltDTMgrSupportsFSM = 7
46     };
47    
48     enum {
49     gestaltFSMVersion = FOURCC('f','s','m',' ')
50     };
51    
52     // File attributes
53     enum {
54     faLocked = 0x01,
55     faRFOpen = 0x04,
56     faDFOpen = 0x08,
57     faIsDir = 0x10,
58     faOpen = 0x80
59     };
60    
61     // Volume attributes
62     enum {
63     vaBusy = 0x40,
64     vaHardLock = 0x80,
65     vaSoftLock = 0x8000
66     };
67    
68     // vMAttrib (GetVolParms) constants
69     enum {
70     kLimitFCBs = 1 << 31,
71     kLocalWList = 1 << 30,
72     kNoMiniFndr = 1 << 29,
73     kNoVNEdit = 1 << 28,
74     kNoLclSync = 1 << 27,
75     kTrshOffLine = 1 << 26,
76     kNoSwitchTo = 1 << 25,
77     kNoDeskItems = 1 << 20,
78     kNoBootBlks = 1 << 19,
79     kAccessCntl = 1 << 18,
80     kNoSysDir = 1 << 17,
81     kHasExtFSVol = 1 << 16,
82     kHasOpenDeny = 1 << 15,
83     kHasCopyFile = 1 << 14,
84     kHasMoveRename = 1 << 13,
85     kHasDesktopMgr = 1 << 12,
86     kHasShortName = 1 << 11,
87     kHasFolderLock = 1 << 10,
88     kHasPersonalAccessPrivileges = 1 << 9,
89     kHasUserGroupList = 1 << 8,
90     kHasCatSearch = 1 << 7,
91     kHasFileIDs = 1 << 6,
92     kHasBTreeMgr = 1 << 5,
93     kHasBlankAccessPrivileges = 1 << 4,
94     kSupportsAsyncRequests = 1 << 3
95     };
96    
97     enum {
98     fsUsrCNID = 16,
99     kHFSBit = 9,
100     kHFSMask = 0x0200,
101     kAsyncBit = 10,
102     kAsyncMask = 0x0400
103     };
104    
105     // HFSCIProc selectCode values
106     enum {
107     kFSMOpen = 0xA000,
108     kFSMClose = 0xA001,
109     kFSMRead = 0xA002,
110     kFSMWrite = 0xA003,
111     kFSMGetVolInfo = 0xA007,
112     kFSMCreate = 0xA008,
113     kFSMDelete = 0xA009,
114     kFSMOpenRF = 0xA00A,
115     kFSMRename = 0xA00B,
116     kFSMGetFileInfo = 0xA00C,
117     kFSMSetFileInfo = 0xA00D,
118     kFSMUnmountVol = 0xA00E,
119     kFSMMountVol = 0xA00F,
120     kFSMAllocate = 0xA010,
121     kFSMGetEOF = 0xA011,
122     kFSMSetEOF = 0xA012,
123     kFSMFlushVol = 0xA013,
124     kFSMGetVol = 0xA014,
125     kFSMSetVol = 0xA015,
126     kFSMEject = 0xA017,
127     kFSMGetFPos = 0xA018,
128     kFSMOffline = 0xA035,
129     kFSMSetFilLock = 0xA041,
130     kFSMRstFilLock = 0xA042,
131     kFSMSetFilType = 0xA043,
132     kFSMSetFPos = 0xA044,
133     kFSMFlushFile = 0xA045,
134     kFSMOpenWD = 0x0001,
135     kFSMCloseWD = 0x0002,
136     kFSMCatMove = 0x0005,
137     kFSMDirCreate = 0x0006,
138     kFSMGetWDInfo = 0x0007,
139     kFSMGetFCBInfo = 0x0008,
140     kFSMGetCatInfo = 0x0009,
141     kFSMSetCatInfo = 0x000A,
142     kFSMSetVolInfo = 0x000B,
143     kFSMLockRng = 0x0010,
144     kFSMUnlockRng = 0x0011,
145     kFSMXGetVolInfo = 0x0012,
146     kFSMCreateFileIDRef = 0x0014,
147     kFSMDeleteFileIDRef = 0x0015,
148     kFSMResolveFileIDRef = 0x0016,
149     kFSMExchangeFiles = 0x0017,
150     kFSMCatSearch = 0x0018,
151     kFSMOpenDF = 0x001A,
152     kFSMMakeFSSpec = 0x001B,
153     kFSMDTGetPath = 0x0020,
154     kFSMDTCloseDown = 0x0021,
155     kFSMDTAddIcon = 0x0022,
156     kFSMDTGetIcon = 0x0023,
157     kFSMDTGetIconInfo = 0x0024,
158     kFSMDTAddAPPL = 0x0025,
159     kFSMDTRemoveAPPL = 0x0026,
160     kFSMDTGetAPPL = 0x0027,
161     kFSMDTSetComment = 0x0028,
162     kFSMDTRemoveComment = 0x0029,
163     kFSMDTGetComment = 0x002A,
164     kFSMDTFlush = 0x002B,
165     kFSMDTReset = 0x002C,
166     kFSMDTGetInfo = 0x002D,
167     kFSMDTOpenInform = 0x002E,
168     kFSMDTDelete = 0x002F,
169     kFSMGetVolParms = 0x0030,
170     kFSMGetLogInInfo = 0x0031,
171     kFSMGetDirAccess = 0x0032,
172     kFSMSetDirAccess = 0x0033,
173     kFSMMapID = 0x0034,
174     kFSMMapName = 0x0035,
175     kFSMCopyFile = 0x0036,
176     kFSMMoveRename = 0x0037,
177     kFSMOpenDeny = 0x0038,
178     kFSMOpenRFDeny = 0x0039,
179     kFSMGetXCatInfo = 0x003A,
180     kFSMGetVolMountInfoSize = 0x003F,
181     kFSMGetVolMountInfo = 0x0040,
182     kFSMVolumeMount = 0x0041,
183     kFSMShare = 0x0042,
184     kFSMUnShare = 0x0043,
185     kFSMGetUGEntry = 0x0044,
186     kFSMGetForeignPrivs = 0x0060,
187     kFSMSetForeignPrivs = 0x0061
188     };
189    
190     // UTDetermineVol status values
191     enum {
192     dtmvError = 0,
193     dtmvFullPathname = 1,
194     dtmvVRefNum = 2,
195     dtmvWDRefNum = 3,
196     dtmvDriveNum = 4,
197     dtmvDefault = 5
198     };
199    
200     // Miscellaneous constants used by FSM
201     enum {
202     fsdVersion1 = 1,
203     fsmIgnoreFSID = 0xFFFE,
204     fsmGenericFSID = 0xFFFF
205     };
206    
207     // compInterfMask bits common to all FSM components
208     enum {
209     fsmComponentEnableBit = 31,
210     fsmComponentEnableMask = (long)0x80000000,
211     fsmComponentBusyBit = 30,
212     fsmComponentBusyMask = 0x40000000
213     };
214    
215     // compInterfMask bits specific to HFS component
216     enum {
217     hfsCIDoesHFSBit = 23,
218     hfsCIDoesHFSMask = 0x00800000,
219     hfsCIDoesAppleShareBit = 22,
220     hfsCIDoesAppleShareMask = 0x00400000,
221     hfsCIDoesDeskTopBit = 21,
222     hfsCIDoesDeskTopMask = 0x00200000,
223     hfsCIDoesDynamicLoadBit = 20,
224     hfsCIDoesDynamicLoadMask = 0x00100000,
225     hfsCIResourceLoadedBit = 19,
226     hfsCIResourceLoadedMask = 0x00080000,
227     hfsCIHasHLL2PProcBit = 18,
228     hfsCIHasHLL2PProcMask = 0x00040000,
229     hfsCIWantsDTSupportBit = 17,
230     hfsCIWantsDTSupportMask = 0x00020000
231     };
232    
233     // FCBRec.fcbFlags bits
234     enum {
235     fcbWriteBit = 0,
236     fcbWriteMask = 0x01,
237     fcbResourceBit = 1,
238     fcbResourceMask = 0x02,
239     fcbWriteLockedBit = 2,
240     fcbWriteLockedMask = 0x04,
241     fcbSharedWriteBit = 4,
242     fcbSharedWriteMask = 0x10,
243     fcbFileLockedBit = 5,
244     fcbFileLockedMask = 0x20,
245     fcbOwnClumpBit = 6,
246     fcbOwnClumpMask = 0x40,
247     fcbModifiedBit = 7,
248     fcbModifiedMask = 0x80
249     };
250    
251     // InformFSM messages
252     enum {
253     fsmNopMessage = 0,
254     fsmDrvQElChangedMessage = 1,
255     fsmGetFSIconMessage = 2
256     };
257    
258     // Messages passed to the fileSystemCommProc
259     enum {
260     ffsNopMessage = 0,
261     ffsGetIconMessage = 1,
262     ffsIDDiskMessage = 2,
263     ffsLoadMessage = 3,
264     ffsUnloadMessage = 4,
265     ffsIDVolMountMessage = 5,
266     ffsInformMessage = 6,
267     ffsGetIconInfoMessage = 7
268     };
269    
270     enum { // FSMGetIconRec struct
271     iconBufferPtr = 2,
272     requestSize = 6,
273     actualSize = 10,
274     iconType = 14,
275     isEjectable = 15,
276     driveQElemPtr = 16,
277     fileSystemSpecPtr = 20
278     };
279    
280     enum { // VolumeMountInfoHeader struct
281     vmiLength = 0,
282     vmiMedia = 2,
283     vmiFlags = 6,
284     SIZEOF_VolumeMountInfoHeader = 8
285     };
286    
287     enum { // GetVolParmsInfoBuffer struct
288     vMVersion = 0,
289     vMAttrib = 2,
290     vMLocalHand = 6,
291     vMServerAdr = 10,
292     vMVolumeGrade = 14,
293     vMForeignPrivID = 18,
294     SIZEOF_GetVolParmsInfoBuffer = 20
295     };
296    
297     // Finder Flags
298     enum { // FInfo struct
299     fdType = 0,
300     fdCreator = 4,
301     fdFlags = 8,
302     fdLocation = 10,
303     fdFldr = 14,
304     SIZEOF_FInfo = 16
305     };
306    
307     enum { // FXInfo struct
308     fdIconID = 0,
309     fdUnused = 2,
310     fdScript = 8,
311     fdXFlags = 9,
312     fdComment = 10,
313     fdPutAway = 12,
314     SIZEOF_FXInfo = 16
315     };
316    
317     enum { // HFileParam/HFileInfo struct
318     ioFRefNum = 24,
319     ioFVersNum = 26,
320     ioFDirIndex = 28,
321     ioFlAttrib = 30,
322     ioACUser = 31,
323     ioFlFndrInfo = 32,
324     ioDirID = 48,
325     ioFlStBlk = 52,
326     ioFlLgLen = 54,
327     ioFlPyLen = 58,
328     ioFlRStBlk = 62,
329     ioFlRLgLen = 64,
330     ioFlRPyLen = 68,
331     ioFlCrDat = 72,
332     ioFlMdDat = 76,
333     ioFlBkDat = 80,
334     ioFlXFndrInfo = 84,
335     ioFlParID = 100,
336     ioFlClpSiz = 104
337     };
338    
339     enum { // DInfo struct
340     frRect = 0,
341     frFlags = 8,
342     frLocation = 10,
343     frView = 14,
344     SIZEOF_DInfo = 16
345     };
346    
347     enum { // DXInfo struct
348     frScroll = 0,
349     frOpenChain = 4,
350     frScript = 8,
351     frXFlags = 9,
352     frComment = 10,
353     frPutAway = 12,
354     SIZEOF_DXInfo = 16
355     };
356    
357     enum { // HDirParam/DirInfo struct
358     ioDrUsrWds = 32,
359     ioDrDirID = 48,
360     ioDrNmFls = 52,
361     ioDrCrDat = 72,
362     ioDrMdDat = 76,
363     ioDrBkDat = 80,
364     ioDrFndrInfo = 84,
365     ioDrParID = 100
366     };
367    
368     enum { // WDParam struct
369     ioWDIndex = 26,
370     ioWDProcID = 28,
371     ioWDVRefNum = 32,
372     ioWDDirID = 48,
373     SIZEOF_WDParam = 52
374     };
375    
376     enum { // HVolumeParam struct
377     ioVolIndex = 28,
378     ioVCrDate = 30,
379     ioVLsMod = 34,
380     ioVAtrb = 38,
381     ioVNmFls = 40,
382     ioVBitMap = 42,
383     ioAllocPtr = 44,
384     ioVNmAlBlks = 46,
385     ioVAlBlkSiz = 48,
386     ioVClpSiz = 52,
387     ioAlBlSt = 56,
388     ioVNxtCNID = 58,
389     ioVFrBlk = 62,
390     ioVSigWord = 64,
391     ioVDrvInfo = 66,
392     ioVDRefNum = 68,
393     ioVFSID = 70,
394     ioVBkUp = 72,
395     ioVSeqNum = 76,
396     ioVWrCnt = 78,
397     ioVFilCnt = 82,
398     ioVDirCnt = 86,
399     ioVFndrInfo = 90
400     };
401    
402     enum { // CMovePBRec struct
403     ioNewName = 28,
404     ioNewDirID = 36
405     };
406    
407     enum { // FCBPBRec struct
408     ioFCBIndx = 28,
409     ioFCBFlNm = 32,
410     ioFCBFlags = 36,
411     ioFCBStBlk = 38,
412     ioFCBEOF = 40,
413     ioFCBPLen = 44,
414     ioFCBCrPs = 48,
415     ioFCBVRefNum = 52,
416     ioFCBClpSiz = 54,
417     ioFCBParID = 58
418     };
419    
420     // Volume control block
421     enum { // VCB struct
422     vcbFlags = 6,
423     vcbSigWord = 8,
424     vcbCrDate = 10,
425     vcbLsMod = 14,
426     vcbAtrb = 18,
427     vcbNmFls = 20,
428     vcbVBMSt = 22,
429     vcbAllocPtr = 24,
430     vcbNmAlBlks = 26,
431     vcbAlBlkSiz = 28,
432     vcbClpSiz = 32,
433     vcbAlBlSt = 36,
434     vcbNxtCNID = 38,
435     vcbFreeBks = 42,
436     vcbVN = 44,
437     vcbDrvNum = 72,
438     vcbDRefNum = 74,
439     vcbFSID = 76,
440     vcbVRefNum = 78,
441     vcbMAdr = 80,
442     vcbBufAdr = 84,
443     vcbMLen = 88,
444     vcbDirIndex = 90,
445     vcbDirBlk = 92,
446     vcbVolBkUp = 94,
447     vcbVSeqNum = 98,
448     vcbWrCnt = 100,
449     vcbXTClpSiz = 104,
450     vcbCTClpSiz = 108,
451     vcbNmRtDirs = 112,
452     vcbFilCnt = 114,
453     vcbDirCnt = 118,
454     vcbFndrInfo = 122,
455     vcbVCSize = 154,
456     vcbVBMCSiz = 156,
457     vcbCtlCSiz = 158,
458     vcbXTAlBlks = 160,
459     vcbCTAlBlks = 162,
460     vcbXTRef = 164,
461     vcbCTRef = 166,
462     vcbCtlBuf = 168,
463     vcbDirIDM = 172,
464     vcbOffsM = 176,
465     SIZEOF_VCB = 178
466     };
467    
468     // Working directory control block
469     enum { // WDCBRec struct
470     wdVCBPtr = 0,
471     wdDirID = 4,
472     wdCatHint = 8,
473     wdProcID = 12,
474     SIZEOF_WDCBRec = 16
475     };
476    
477     // File control block
478     enum { // FCBRec struct
479     fcbFlNm = 0,
480     fcbFlags = 4,
481     fcbTypByt = 5,
482     fcbSBlk = 6,
483     fcbEOF = 8,
484     fcbPLen = 12,
485     fcbCrPs = 16,
486     fcbVPtr = 20,
487     fcbBfAdr = 24,
488     fcbFlPos = 28,
489     fcbClmpSize = 30,
490     fcbBTCBPtr = 34,
491     fcbExtRec = 38,
492     fcbFType = 50,
493     fcbCatPos = 54,
494     fcbDirID = 58,
495     fcbCName = 62
496     };
497    
498     enum { // ParsePathRec struct
499     ppNamePtr = 0,
500     ppStartOffset = 4,
501     ppComponentLength = 6,
502     ppMoreName = 8,
503     ppFoundDelimiter = 9,
504     SIZEOF_ParsePathRec = 10
505     };
506    
507     enum { // HFSCIRec struct
508     compInterfMask = 0,
509     compInterfProc = 4,
510     log2PhyProc = 8,
511     stackTop = 12,
512     stackSize = 16,
513     stackPtr = 20,
514     idSector = 28,
515     SIZEOF_HFSCIRec = 40
516     };
517    
518     enum { // DICIRec struct
519     maxVolNameLength = 8,
520     blockSize = 10,
521     SIZEOF_DICIRec = 24
522     };
523    
524     enum { // FSDRec struct
525     fsdLink = 0,
526     fsdLength = 4,
527     fsdVersion = 6,
528     fileSystemFSID = 8,
529     fileSystemName = 10,
530     fileSystemSpec = 42,
531     fileSystemGlobalsPtr = 112,
532     fileSystemCommProc = 116,
533     fsdHFSCI = 132,
534     fsdDICI = 172,
535     SIZEOF_FSDRec = 196
536     };
537    
538     #endif