| /* |
| * extfs_defs.h - MacOS types and structures for external file system |
| * |
| * Basilisk II (C) 1997-2008 Christian Bauer |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #ifndef EXTFS_DEFS_H |
| #define EXTFS_DEFS_H |
| |
| #include "macos_util.h" |
| |
| // Gestalt selectors |
| enum { |
| gestaltFSAttr = FOURCC('f','s',' ',' '), |
| gestaltFullExtFSDispatching = 0, |
| gestaltHasFSSpecCalls = 1, |
| gestaltHasFileSystemManager = 2, |
| gestaltFSMDoesDynamicLoad = 3, |
| gestaltFSSupports4GBVols = 4, |
| gestaltFSSupports2TBVols = 5, |
| gestaltHasExtendedDiskInit = 6, |
| gestaltDTMgrSupportsFSM = 7 |
| }; |
| |
| enum { |
| gestaltFSMVersion = FOURCC('f','s','m',' ') |
| }; |
| |
| // File attributes |
| enum { |
| faLocked = 0x01, |
| faRFOpen = 0x04, |
| faDFOpen = 0x08, |
| faIsDir = 0x10, |
| faOpen = 0x80 |
| }; |
| |
| // Volume attributes |
| enum { |
| vaBusy = 0x40, |
| vaHardLock = 0x80, |
| vaSoftLock = 0x8000 |
| }; |
| |
| // vMAttrib (GetVolParms) constants |
| enum { |
| kLimitFCBs = 1 << 31, |
| kLocalWList = 1 << 30, |
| kNoMiniFndr = 1 << 29, |
| kNoVNEdit = 1 << 28, |
| kNoLclSync = 1 << 27, |
| kTrshOffLine = 1 << 26, |
| kNoSwitchTo = 1 << 25, |
| kNoDeskItems = 1 << 20, |
| kNoBootBlks = 1 << 19, |
| kAccessCntl = 1 << 18, |
| kNoSysDir = 1 << 17, |
| kHasExtFSVol = 1 << 16, |
| kHasOpenDeny = 1 << 15, |
| kHasCopyFile = 1 << 14, |
| kHasMoveRename = 1 << 13, |
| kHasDesktopMgr = 1 << 12, |
| kHasShortName = 1 << 11, |
| kHasFolderLock = 1 << 10, |
| kHasPersonalAccessPrivileges = 1 << 9, |
| kHasUserGroupList = 1 << 8, |
| kHasCatSearch = 1 << 7, |
| kHasFileIDs = 1 << 6, |
| kHasBTreeMgr = 1 << 5, |
| kHasBlankAccessPrivileges = 1 << 4, |
| kSupportsAsyncRequests = 1 << 3 |
| }; |
| |
| enum { |
| fsUsrCNID = 16, |
| kHFSBit = 9, |
| kHFSMask = 0x0200, |
| kAsyncBit = 10, |
| kAsyncMask = 0x0400 |
| }; |
| |
| // HFSCIProc selectCode values |
| enum { |
| kFSMOpen = 0xA000, |
| kFSMClose = 0xA001, |
| kFSMRead = 0xA002, |
| kFSMWrite = 0xA003, |
| kFSMGetVolInfo = 0xA007, |
| kFSMCreate = 0xA008, |
| kFSMDelete = 0xA009, |
| kFSMOpenRF = 0xA00A, |
| kFSMRename = 0xA00B, |
| kFSMGetFileInfo = 0xA00C, |
| kFSMSetFileInfo = 0xA00D, |
| kFSMUnmountVol = 0xA00E, |
| kFSMMountVol = 0xA00F, |
| kFSMAllocate = 0xA010, |
| kFSMGetEOF = 0xA011, |
| kFSMSetEOF = 0xA012, |
| kFSMFlushVol = 0xA013, |
| kFSMGetVol = 0xA014, |
| kFSMSetVol = 0xA015, |
| kFSMEject = 0xA017, |
| kFSMGetFPos = 0xA018, |
| kFSMOffline = 0xA035, |
| kFSMSetFilLock = 0xA041, |
| kFSMRstFilLock = 0xA042, |
| kFSMSetFilType = 0xA043, |
| kFSMSetFPos = 0xA044, |
| kFSMFlushFile = 0xA045, |
| kFSMOpenWD = 0x0001, |
| kFSMCloseWD = 0x0002, |
| kFSMCatMove = 0x0005, |
| kFSMDirCreate = 0x0006, |
| kFSMGetWDInfo = 0x0007, |
| kFSMGetFCBInfo = 0x0008, |
| kFSMGetCatInfo = 0x0009, |
| kFSMSetCatInfo = 0x000A, |
| kFSMSetVolInfo = 0x000B, |
| kFSMLockRng = 0x0010, |
| kFSMUnlockRng = 0x0011, |
| kFSMXGetVolInfo = 0x0012, |
| kFSMCreateFileIDRef = 0x0014, |
| kFSMDeleteFileIDRef = 0x0015, |
| kFSMResolveFileIDRef = 0x0016, |
| kFSMExchangeFiles = 0x0017, |
| kFSMCatSearch = 0x0018, |
| kFSMOpenDF = 0x001A, |
| kFSMMakeFSSpec = 0x001B, |
| kFSMDTGetPath = 0x0020, |
| kFSMDTCloseDown = 0x0021, |
| kFSMDTAddIcon = 0x0022, |
| kFSMDTGetIcon = 0x0023, |
| kFSMDTGetIconInfo = 0x0024, |
| kFSMDTAddAPPL = 0x0025, |
| kFSMDTRemoveAPPL = 0x0026, |
| kFSMDTGetAPPL = 0x0027, |
| kFSMDTSetComment = 0x0028, |
| kFSMDTRemoveComment = 0x0029, |
| kFSMDTGetComment = 0x002A, |
| kFSMDTFlush = 0x002B, |
| kFSMDTReset = 0x002C, |
| kFSMDTGetInfo = 0x002D, |
| kFSMDTOpenInform = 0x002E, |
| kFSMDTDelete = 0x002F, |
| kFSMGetVolParms = 0x0030, |
| kFSMGetLogInInfo = 0x0031, |
| kFSMGetDirAccess = 0x0032, |
| kFSMSetDirAccess = 0x0033, |
| kFSMMapID = 0x0034, |
| kFSMMapName = 0x0035, |
| kFSMCopyFile = 0x0036, |
| kFSMMoveRename = 0x0037, |
| kFSMOpenDeny = 0x0038, |
| kFSMOpenRFDeny = 0x0039, |
| kFSMGetXCatInfo = 0x003A, |
| kFSMGetVolMountInfoSize = 0x003F, |
| kFSMGetVolMountInfo = 0x0040, |
| kFSMVolumeMount = 0x0041, |
| kFSMShare = 0x0042, |
| kFSMUnShare = 0x0043, |
| kFSMGetUGEntry = 0x0044, |
| kFSMGetForeignPrivs = 0x0060, |
| kFSMSetForeignPrivs = 0x0061 |
| }; |
| |
| // UTDetermineVol status values |
| enum { |
| dtmvError = 0, |
| dtmvFullPathname = 1, |
| dtmvVRefNum = 2, |
| dtmvWDRefNum = 3, |
| dtmvDriveNum = 4, |
| dtmvDefault = 5 |
| }; |
| |
| // Miscellaneous constants used by FSM |
| enum { |
| fsdVersion1 = 1, |
| fsmIgnoreFSID = 0xFFFE, |
| fsmGenericFSID = 0xFFFF |
| }; |
| |
| // compInterfMask bits common to all FSM components |
| enum { |
| fsmComponentEnableBit = 31, |
| fsmComponentEnableMask = (long)0x80000000, |
| fsmComponentBusyBit = 30, |
| fsmComponentBusyMask = 0x40000000 |
| }; |
| |
| // compInterfMask bits specific to HFS component |
| enum { |
| hfsCIDoesHFSBit = 23, |
| hfsCIDoesHFSMask = 0x00800000, |
| hfsCIDoesAppleShareBit = 22, |
| hfsCIDoesAppleShareMask = 0x00400000, |
| hfsCIDoesDeskTopBit = 21, |
| hfsCIDoesDeskTopMask = 0x00200000, |
| hfsCIDoesDynamicLoadBit = 20, |
| hfsCIDoesDynamicLoadMask = 0x00100000, |
| hfsCIResourceLoadedBit = 19, |
| hfsCIResourceLoadedMask = 0x00080000, |
| hfsCIHasHLL2PProcBit = 18, |
| hfsCIHasHLL2PProcMask = 0x00040000, |
| hfsCIWantsDTSupportBit = 17, |
| hfsCIWantsDTSupportMask = 0x00020000 |
| }; |
| |
| // FCBRec.fcbFlags bits |
| enum { |
| fcbWriteBit = 0, |
| fcbWriteMask = 0x01, |
| fcbResourceBit = 1, |
| fcbResourceMask = 0x02, |
| fcbWriteLockedBit = 2, |
| fcbWriteLockedMask = 0x04, |
| fcbSharedWriteBit = 4, |
| fcbSharedWriteMask = 0x10, |
| fcbFileLockedBit = 5, |
| fcbFileLockedMask = 0x20, |
| fcbOwnClumpBit = 6, |
| fcbOwnClumpMask = 0x40, |
| fcbModifiedBit = 7, |
| fcbModifiedMask = 0x80 |
| }; |
| |
| // InformFSM messages |
| enum { |
| fsmNopMessage = 0, |
| fsmDrvQElChangedMessage = 1, |
| fsmGetFSIconMessage = 2 |
| }; |
| |
| // Messages passed to the fileSystemCommProc |
| enum { |
| ffsNopMessage = 0, |
| ffsGetIconMessage = 1, |
| ffsIDDiskMessage = 2, |
| ffsLoadMessage = 3, |
| ffsUnloadMessage = 4, |
| ffsIDVolMountMessage = 5, |
| ffsInformMessage = 6, |
| ffsGetIconInfoMessage = 7 |
| }; |
| |
| // Error codes from FSM functions |
| enum { |
| fsmFFSNotFoundErr = -431, |
| fsmBusyFFSErr = -432, |
| fsmBadFFSNameErr = -433, |
| fsmBadFSDLenErr = -434, |
| fsmDuplicateFSIDErr = -435, |
| fsmBadFSDVersionErr = -436, |
| fsmNoAlternateStackErr = -437, |
| fsmUnknownFSMMessageErr = -438 |
| }; |
| |
| // paramBlock for ffsGetIconMessage and fsmGetFSIconMessage |
| enum { |
| kLargeIcon = 1 |
| }; |
| |
| enum { // FSMGetIconRec struct |
| iconBufferPtr = 2, |
| requestSize = 6, |
| actualSize = 10, |
| iconType = 14, |
| isEjectable = 15, |
| driveQElemPtr = 16, |
| fileSystemSpecPtr = 20 |
| }; |
| |
| enum { // VolumeMountInfoHeader struct |
| vmiLength = 0, |
| vmiMedia = 2, |
| vmiFlags = 6, |
| SIZEOF_VolumeMountInfoHeader = 8 |
| }; |
| |
| enum { // GetVolParmsInfoBuffer struct |
| vMVersion = 0, |
| vMAttrib = 2, |
| vMLocalHand = 6, |
| vMServerAdr = 10, |
| vMVolumeGrade = 14, |
| vMForeignPrivID = 18, |
| SIZEOF_GetVolParmsInfoBuffer = 20 |
| }; |
| |
| // Finder Flags |
| enum { |
| kIsOnDesk = 0x0001, |
| kColor = 0x000E, |
| kIsShared = 0x0040, |
| kHasBeenInited = 0x0100, |
| kHasCustomIcon = 0x0400, |
| kIsStationery = 0x0800, |
| kNameLocked = 0x1000, |
| kHasBundle = 0x2000, |
| kIsInvisible = 0x4000, |
| kIsAlias = 0x8000 |
| }; |
| |
| enum { // FInfo struct |
| fdType = 0, |
| fdCreator = 4, |
| fdFlags = 8, |
| fdLocation = 10, |
| fdFldr = 14, |
| SIZEOF_FInfo = 16 |
| }; |
| |
| enum { // FXInfo struct |
| fdIconID = 0, |
| fdUnused = 2, |
| fdScript = 8, |
| fdXFlags = 9, |
| fdComment = 10, |
| fdPutAway = 12, |
| SIZEOF_FXInfo = 16 |
| }; |
| |
| enum { // HFileParam/HFileInfo struct |
| ioFRefNum = 24, |
| ioFVersNum = 26, |
| ioFDirIndex = 28, |
| ioFlAttrib = 30, |
| ioACUser = 31, |
| ioFlFndrInfo = 32, |
| ioDirID = 48, |
| ioFlStBlk = 52, |
| ioFlLgLen = 54, |
| ioFlPyLen = 58, |
| ioFlRStBlk = 62, |
| ioFlRLgLen = 64, |
| ioFlRPyLen = 68, |
| ioFlCrDat = 72, |
| ioFlMdDat = 76, |
| ioFlBkDat = 80, |
| ioFlXFndrInfo = 84, |
| ioFlParID = 100, |
| ioFlClpSiz = 104 |
| }; |
| |
| enum { // DInfo struct |
| frRect = 0, |
| frFlags = 8, |
| frLocation = 10, |
| frView = 14, |
| SIZEOF_DInfo = 16 |
| }; |
| |
| enum { // DXInfo struct |
| frScroll = 0, |
| frOpenChain = 4, |
| frScript = 8, |
| frXFlags = 9, |
| frComment = 10, |
| frPutAway = 12, |
| SIZEOF_DXInfo = 16 |
| }; |
| |
| enum { // HDirParam/DirInfo struct |
| ioDrUsrWds = 32, |
| ioDrDirID = 48, |
| ioDrNmFls = 52, |
| ioDrCrDat = 72, |
| ioDrMdDat = 76, |
| ioDrBkDat = 80, |
| ioDrFndrInfo = 84, |
| ioDrParID = 100 |
| }; |
| |
| enum { // WDParam struct |
| ioWDIndex = 26, |
| ioWDProcID = 28, |
| ioWDVRefNum = 32, |
| ioWDDirID = 48, |
| SIZEOF_WDParam = 52 |
| }; |
| |
| enum { // HVolumeParam struct |
| ioVolIndex = 28, |
| ioVCrDate = 30, |
| ioVLsMod = 34, |
| ioVAtrb = 38, |
| ioVNmFls = 40, |
| ioVBitMap = 42, |
| ioAllocPtr = 44, |
| ioVNmAlBlks = 46, |
| ioVAlBlkSiz = 48, |
| ioVClpSiz = 52, |
| ioAlBlSt = 56, |
| ioVNxtCNID = 58, |
| ioVFrBlk = 62, |
| ioVSigWord = 64, |
| ioVDrvInfo = 66, |
| ioVDRefNum = 68, |
| ioVFSID = 70, |
| ioVBkUp = 72, |
| ioVSeqNum = 76, |
| ioVWrCnt = 78, |
| ioVFilCnt = 82, |
| ioVDirCnt = 86, |
| ioVFndrInfo = 90 |
| }; |
| |
| enum { // CMovePBRec struct |
| ioNewName = 28, |
| ioNewDirID = 36 |
| }; |
| |
| enum { // FCBPBRec struct |
| ioFCBIndx = 28, |
| ioFCBFlNm = 32, |
| ioFCBFlags = 36, |
| ioFCBStBlk = 38, |
| ioFCBEOF = 40, |
| ioFCBPLen = 44, |
| ioFCBCrPs = 48, |
| ioFCBVRefNum = 52, |
| ioFCBClpSiz = 54, |
| ioFCBParID = 58 |
| }; |
| |
| // Volume control block |
| enum { // VCB struct |
| vcbFlags = 6, |
| vcbSigWord = 8, |
| vcbCrDate = 10, |
| vcbLsMod = 14, |
| vcbAtrb = 18, |
| vcbNmFls = 20, |
| vcbVBMSt = 22, |
| vcbAllocPtr = 24, |
| vcbNmAlBlks = 26, |
| vcbAlBlkSiz = 28, |
| vcbClpSiz = 32, |
| vcbAlBlSt = 36, |
| vcbNxtCNID = 38, |
| vcbFreeBks = 42, |
| vcbVN = 44, |
| vcbDrvNum = 72, |
| vcbDRefNum = 74, |
| vcbFSID = 76, |
| vcbVRefNum = 78, |
| vcbMAdr = 80, |
| vcbBufAdr = 84, |
| vcbMLen = 88, |
| vcbDirIndex = 90, |
| vcbDirBlk = 92, |
| vcbVolBkUp = 94, |
| vcbVSeqNum = 98, |
| vcbWrCnt = 100, |
| vcbXTClpSiz = 104, |
| vcbCTClpSiz = 108, |
| vcbNmRtDirs = 112, |
| vcbFilCnt = 114, |
| vcbDirCnt = 118, |
| vcbFndrInfo = 122, |
| vcbVCSize = 154, |
| vcbVBMCSiz = 156, |
| vcbCtlCSiz = 158, |
| vcbXTAlBlks = 160, |
| vcbCTAlBlks = 162, |
| vcbXTRef = 164, |
| vcbCTRef = 166, |
| vcbCtlBuf = 168, |
| vcbDirIDM = 172, |
| vcbOffsM = 176, |
| SIZEOF_VCB = 178 |
| }; |
| |
| // Working directory control block |
| enum { // WDCBRec struct |
| wdVCBPtr = 0, |
| wdDirID = 4, |
| wdCatHint = 8, |
| wdProcID = 12, |
| SIZEOF_WDCBRec = 16 |
| }; |
| |
| // File control block |
| enum { // FCBRec struct |
| fcbFlNm = 0, |
| fcbFlags = 4, |
| fcbTypByt = 5, |
| fcbSBlk = 6, |
| fcbEOF = 8, |
| fcbPLen = 12, |
| fcbCrPs = 16, |
| fcbVPtr = 20, |
| fcbBfAdr = 24, |
| fcbFlPos = 28, |
| fcbClmpSize = 30, |
| fcbBTCBPtr = 34, |
| fcbExtRec = 38, |
| fcbFType = 50, |
| fcbCatPos = 54, |
| fcbDirID = 58, |
| fcbCName = 62 |
| }; |
| |
| enum { // ParsePathRec struct |
| ppNamePtr = 0, |
| ppStartOffset = 4, |
| ppComponentLength = 6, |
| ppMoreName = 8, |
| ppFoundDelimiter = 9, |
| SIZEOF_ParsePathRec = 10 |
| }; |
| |
| enum { // HFSCIRec struct |
| compInterfMask = 0, |
| compInterfProc = 4, |
| log2PhyProc = 8, |
| stackTop = 12, |
| stackSize = 16, |
| stackPtr = 20, |
| idSector = 28, |
| SIZEOF_HFSCIRec = 40 |
| }; |
| |
| enum { // DICIRec struct |
| maxVolNameLength = 8, |
| blockSize = 10, |
| SIZEOF_DICIRec = 24 |
| }; |
| |
| enum { // FSDRec struct |
| fsdLink = 0, |
| fsdLength = 4, |
| fsdVersion = 6, |
| fileSystemFSID = 8, |
| fileSystemName = 10, |
| fileSystemSpec = 42, |
| fileSystemGlobalsPtr = 112, |
| fileSystemCommProc = 116, |
| fsdHFSCI = 132, |
| fsdDICI = 172, |
| SIZEOF_FSDRec = 196 |
| }; |
| |
| #endif |