ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/include/extfs_defs.h
Revision: 1.1
Committed: 1999-10-19T17:41:42Z (24 years, 7 months ago) by cebix
Content type: text/plain
Branch: MAIN
CVS Tags: snapshot-21101999, snapshot-22121999, release-0_8-1, snapshot-02111999
Log Message:
- added external file system
- moved most init/deinit code to InitAll()/ExitAll() in main.cpp

File Contents

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