ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/include/extfs_defs.h
Revision: 1.8
Committed: 2008-01-01T09:40:35Z (16 years, 4 months ago) by gbeauche
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.7: +1 -1 lines
Log Message:
Happy New Year!

File Contents

# Content
1 /*
2 * extfs_defs.h - MacOS types and structures for external file system
3 *
4 * Basilisk II (C) 1997-2008 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 = FOURCC('f','s',' ',' '),
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 = FOURCC('f','s','m',' ')
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