view dstep/coreservices/carboncore/Files.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 21, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.coreservices.carboncore.Files;

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.Finder;
import dstep.coreservices.carboncore.MacTypes;
import dstep.coreservices.carboncore.MixedMode;
import dstep.coreservices.carboncore.OSUtils;
import dstep.coreservices.carboncore.TextCommon;
import dstep.coreservices.carboncore.UTCUtils;
import dstep.corefoundation.CFBase;
import dstep.corefoundation.CFDictionary;
import dstep.corefoundation.CFRunLoop;
import dstep.corefoundation.CFURL;
import dstep.corefoundation.CFUUID;
import dstep.diskarbitration.DADisk;
import dstep.objc.bridge.TypeEncoding;
import dstep.internal.Types;
/*import dstep.sys.acl;
import dstep.sys.fcntl;
import dstep.sys.types;*/


struct __FSFileOperation;
struct __FSFileSecurity;
struct OpaqueFSIterator;
struct OpaqueFNSubscriptionRef;
struct OpaqueFSVolumeOperation;
struct _acl;

alias _acl* acl_t;
alias int pid_t;
alias HFSUniStr255* ConstHFSUniStr255Param;
alias short FSVolumeRefNum;
alias int FSIORefNum;
alias FSRef* FSRefPtr;
alias __FSFileSecurity* FSFileSecurityRef;
alias FSSpec* FSSpecPtr;
alias FSSpecPtr* FSSpecHandle;
alias FSSpecPtr FSSpecArrayPtr;
alias FSSpec* ConstFSSpecPtr;
alias void* ParmBlkPtr;
alias IOCompletionProcPtr IOCompletionUPP;
alias uint FSCatalogInfoBitmap;
alias FSCatalogInfo* FSCatalogInfoPtr;
alias FSRefParam* FSRefParamPtr;
alias FSRefForkIOParam* FSRefForkIOParamPtr;
alias OpaqueFSIterator* FSIterator;
alias uint FSIteratorFlags;
alias FSSearchParams* FSSearchParamsPtr;
alias FSCatalogBulkParam* FSCatalogBulkParamPtr;
alias ushort FSAllocationFlags;
alias FSForkIOParam* FSForkIOParamPtr;
alias FSForkInfo* FSForkInfoPtr;
alias FSForkCBInfoParam* FSForkCBInfoParamPtr;
alias FSRangeLockParam* FSRangeLockParamPtr;
alias uint FSVolumeInfoBitmap;
alias FSVolumeInfo* FSVolumeInfoPtr;
alias FSVolumeInfoParam* FSVolumeInfoParamPtr;
alias uint VolumeType;
alias VolMountInfoHeader* VolMountInfoPtr;
alias VolumeMountInfoHeader* VolumeMountInfoHeaderPtr;
alias AFPVolMountInfo* AFPVolMountInfoPtr;
alias AFPXVolMountInfo* AFPXVolMountInfoPtr;
alias uint FNMessage;
alias OpaqueFNSubscriptionRef* FNSubscriptionRef;
alias FNSubscriptionProcPtr FNSubscriptionUPP;
alias uint FSMountStatus;
alias uint FSEjectStatus;
alias uint FSUnmountStatus;
alias OpaqueFSVolumeOperation* FSVolumeOperation;
alias FSVolumeMountProcPtr FSVolumeMountUPP;
alias FSVolumeUnmountProcPtr FSVolumeUnmountUPP;
alias FSVolumeEjectProcPtr FSVolumeEjectUPP;
alias __FSFileOperation* FSFileOperationRef;
alias uint FSFileOperationStage;

extern (C)
{
	alias void function (ParmBlkPtr) IOCompletionProcPtr;
	alias void function (FSFileOperationRef, FSRef*, uint, int, CFDictionaryRef, void*) FSFileOperationStatusProcPtr;
	alias void function (uint, uint, void*, FNSubscriptionRef) FNSubscriptionProcPtr;
	alias void function (FSFileOperationRef, char*, uint, int, CFDictionaryRef, void*) FSPathFileOperationStatusProcPtr;
	alias void function (FSVolumeOperation, void*, int, short, int) FSVolumeUnmountProcPtr;
	alias void function (FSVolumeOperation, void*, int, short, int) FSVolumeEjectProcPtr;
	alias void function (FSVolumeOperation, void*, int, short) FSVolumeMountProcPtr;
}

extern (C)
{
	extern
	{
		const CFStringRef kFSOperationTotalBytesKey;
		const CFStringRef kFSOperationBytesCompleteKey;
		const CFStringRef kFSOperationBytesRemainingKey;
		const CFStringRef kFSOperationTotalObjectsKey;
		const CFStringRef kFSOperationObjectsCompleteKey;
		const CFStringRef kFSOperationObjectsRemainingKey;
		const CFStringRef kFSOperationTotalUserVisibleObjectsKey;
		const CFStringRef kFSOperationUserVisibleObjectsCompleteKey;
		const CFStringRef kFSOperationUserVisibleObjectsRemainingKey;
		const CFStringRef kFSOperationThroughputKey;
	}
}

// This is needed otherwise the enums will fail compiling with gdc
version (GNU)
{
	private
	{
		const __AppleShareMediaType = getOSType!("afpm");

	}
}

enum
{
	fsCurPerm = 0x00,
	fsRdPerm = 0x01,
	fsWrPerm = 0x02,
	fsRdWrPerm = 0x03,
	fsRdWrShPerm = 0x04
}

enum
{
	fsRdAccessPerm = 0x01,
	fsWrAccessPerm = 0x02,
	fsRdDenyPerm = 0x10,
	fsWrDenyPerm = 0x20
}

enum
{
	fsRtParID = 1,
	fsRtDirID = 2
}

enum
{
	fsAtMark = 0,
	fsFromStart = 1,
	fsFromLEOF = 2,
	fsFromMark = 3
}

enum
{
	kFSAllowConcurrentAsyncIOBit = 3,
	kFSAllowConcurrentAsyncIOMask = 0x0008,
	kFSPleaseCacheBit = 4,
	kFSPleaseCacheMask = 0x0010,
	kFSNoCacheBit = 5,
	kFSNoCacheMask = 0x0020,
	kFSRdVerifyBit = 6,
	kFSRdVerifyMask = 0x0040,
	kFSForceReadBit = 6,
	kFSForceReadMask = 0x0040,
	kFSNewLineBit = 7,
	kFSNewLineMask = 0x0080,
	kFSNewLineCharMask = 0xFF00
}

enum
{
	fsSBPartialName = 0x01,
	fsSBFullName = 0x02,
	fsSBFlAttrib = 0x04,
	fsSBFlFndrInfo = 0x08,
	fsSBFlLgLen = 0x20,
	fsSBFlPyLen = 0x40,
	fsSBFlRLgLen = 0x80,
	fsSBFlRPyLen = 0x0100,
	fsSBFlCrDat = 0x0200,
	fsSBFlMdDat = 0x0400,
	fsSBFlBkDat = 0x0800,
	fsSBFlXFndrInfo = 0x1000,
	fsSBFlParID = 0x2000,
	fsSBNegate = 0x4000,
	fsSBDrUsrWds = 0x08,
	fsSBDrNmFls = 0x10,
	fsSBDrCrDat = 0x0200,
	fsSBDrMdDat = 0x0400,
	fsSBDrBkDat = 0x0800,
	fsSBDrFndrInfo = 0x1000,
	fsSBDrParID = 0x2000,
	fsSBNodeID = 0x8000,
	fsSBAttributeModDate = 0x00010000,
	fsSBAccessDate = 0x00020000,
	fsSBPermissions = 0x00040000,
	fsSBSkipPackageContents = 0x00080000,
	fsSBSkipHiddenItems = 0x00100000,
	fsSBUserID = 0x00200000,
	fsSBGroupID = 0x00400000
}

enum
{
	fsSBPartialNameBit = 0,
	fsSBFullNameBit = 1,
	fsSBFlAttribBit = 2,
	fsSBFlFndrInfoBit = 3,
	fsSBFlLgLenBit = 5,
	fsSBFlPyLenBit = 6,
	fsSBFlRLgLenBit = 7,
	fsSBFlRPyLenBit = 8,
	fsSBFlCrDatBit = 9,
	fsSBFlMdDatBit = 10,
	fsSBFlBkDatBit = 11,
	fsSBFlXFndrInfoBit = 12,
	fsSBFlParIDBit = 13,
	fsSBNegateBit = 14,
	fsSBDrUsrWdsBit = 3,
	fsSBDrNmFlsBit = 4,
	fsSBDrCrDatBit = 9,
	fsSBDrMdDatBit = 10,
	fsSBDrBkDatBit = 11,
	fsSBDrFndrInfoBit = 12,
	fsSBDrParIDBit = 13,
	fsSBNodeIDBit = 15,
	fsSBAttributeModDateBit = 16,
	fsSBAccessDateBit = 17,
	fsSBPermissionsBit = 18,
	fsSBSkipPackageContentsBit = 19,
	fsSBSkipHiddenItemsBit = 20,
	fsSBUserIDBit = 21,
	fsSBGroupIDBit = 22
}

enum
{
	bLimitFCBs = 31,
	bLocalWList = 30,
	bNoMiniFndr = 29,
	bNoVNEdit = 28,
	bNoLclSync = 27,
	bTrshOffLine = 26,
	bNoSwitchTo = 25,
	bNoDeskItems = 20,
	bNoBootBlks = 19,
	bAccessCntl = 18,
	bNoSysDir = 17,
	bHasExtFSVol = 16,
	bHasOpenDeny = 15,
	bHasCopyFile = 14,
	bHasMoveRename = 13,
	bHasDesktopMgr = 12,
	bHasShortName = 11,
	bHasFolderLock = 10,
	bHasPersonalAccessPrivileges = 9,
	bHasUserGroupList = 8,
	bHasCatSearch = 7,
	bHasFileIDs = 6,
	bHasBTreeMgr = 5,
	bHasBlankAccessPrivileges = 4,
	bSupportsAsyncRequests = 3,
	bSupportsTrashVolumeCache = 2
}

enum
{
	bHasDirectIO = 1
}

enum
{
	bIsEjectable = 0,
	bSupportsHFSPlusAPIs = 1,
	bSupportsFSCatalogSearch = 2,
	bSupportsFSExchangeObjects = 3,
	bSupports2TBFiles = 4,
	bSupportsLongNames = 5,
	bSupportsMultiScriptNames = 6,
	bSupportsNamedForks = 7,
	bSupportsSubtreeIterators = 8,
	bL2PCanMapFileBlocks = 9,
	bParentModDateChanges = 10,
	bAncestorModDateChanges = 11,
	bSupportsSymbolicLinks = 13,
	bIsAutoMounted = 14,
	bAllowCDiDataHandler = 17,
	bSupportsExclusiveLocks = 18,
	bSupportsJournaling = 19,
	bNoVolumeSizes = 20,
	bIsOnInternalBus = 21,
	bIsCaseSensitive = 22,
	bIsCasePreserving = 23,
	bDoNotDisplay = 24,
	bIsRemovable = 25,
	bNoRootTimes = 26,
	bIsOnExternalBus = 27,
	bSupportsExtendedFileSecurity = 28
}

enum
{
	kWidePosOffsetBit = 8,
	kUseWidePositioning = (1 << kWidePosOffsetBit),
	kMaximumBlocksIn4GB = 0x007FFFFF
}

enum
{
	fsUnixPriv = 1
}

enum
{
	kNoUserAuthentication = 1,
	kPassword = 2,
	kEncryptPassword = 3,
	kTwoWayEncryptPassword = 6
}

enum
{
	knoUser = 0,
	kadministratorUser = 1
}

enum
{
	knoGroup = 0
}

enum
{
	kFSInvalidVolumeRefNum = 0
}

enum
{
	kFSCatInfoNone = 0x00000000,
	kFSCatInfoTextEncoding = 0x00000001,
	kFSCatInfoNodeFlags = 0x00000002,
	kFSCatInfoVolume = 0x00000004,
	kFSCatInfoParentDirID = 0x00000008,
	kFSCatInfoNodeID = 0x00000010,
	kFSCatInfoCreateDate = 0x00000020,
	kFSCatInfoContentMod = 0x00000040,
	kFSCatInfoAttrMod = 0x00000080,
	kFSCatInfoAccessDate = 0x00000100,
	kFSCatInfoBackupDate = 0x00000200,
	kFSCatInfoPermissions = 0x00000400,
	kFSCatInfoFinderInfo = 0x00000800,
	kFSCatInfoFinderXInfo = 0x00001000,
	kFSCatInfoValence = 0x00002000,
	kFSCatInfoDataSizes = 0x00004000,
	kFSCatInfoRsrcSizes = 0x00008000,
	kFSCatInfoSharingFlags = 0x00010000,
	kFSCatInfoUserPrivs = 0x00020000,
	kFSCatInfoUserAccess = 0x00080000,
	kFSCatInfoSetOwnership = 0x00100000,
	kFSCatInfoFSFileSecurityRef = 0x00400000,
	kFSCatInfoAllDates = 0x000003E0,
	kFSCatInfoGettableInfo = 0x0003FFFF,
	kFSCatInfoSettableInfo = 0x00001FE3,
	kFSCatInfoReserved = cast(c_long)0xFFFC0000
}

enum
{
	kFSNodeLockedBit = 0,
	kFSNodeLockedMask = 0x0001,
	kFSNodeResOpenBit = 2,
	kFSNodeResOpenMask = 0x0004,
	kFSNodeDataOpenBit = 3,
	kFSNodeDataOpenMask = 0x0008,
	kFSNodeIsDirectoryBit = 4,
	kFSNodeIsDirectoryMask = 0x0010,
	kFSNodeCopyProtectBit = 6,
	kFSNodeCopyProtectMask = 0x0040,
	kFSNodeForkOpenBit = 7,
	kFSNodeForkOpenMask = 0x0080,
	kFSNodeHardLinkBit = 8,
	kFSNodeHardLinkMask = 0x00000100
}

enum
{
	kFSNodeInSharedBit = 2,
	kFSNodeInSharedMask = 0x0004,
	kFSNodeIsMountedBit = 3,
	kFSNodeIsMountedMask = 0x0008,
	kFSNodeIsSharePointBit = 5,
	kFSNodeIsSharePointMask = 0x0020
}

enum
{
	kFSIterateFlat = 0,
	kFSIterateSubtree = 1,
	kFSIterateDelete = 2,
	kFSIterateReserved = cast(c_long)0xFFFFFFFC
}

enum
{
	kFSAllocDefaultFlags = 0x0000,
	kFSAllocAllOrNothingMask = 0x0001,
	kFSAllocContiguousMask = 0x0002,
	kFSAllocNoRoundUpMask = 0x0004,
	kFSAllocReservedMask = 0xFFF8
}

enum
{
	kFSVolInfoNone = 0x0000,
	kFSVolInfoCreateDate = 0x0001,
	kFSVolInfoModDate = 0x0002,
	kFSVolInfoBackupDate = 0x0004,
	kFSVolInfoCheckedDate = 0x0008,
	kFSVolInfoFileCount = 0x0010,
	kFSVolInfoDirCount = 0x0020,
	kFSVolInfoSizes = 0x0040,
	kFSVolInfoBlocks = 0x0080,
	kFSVolInfoNextAlloc = 0x0100,
	kFSVolInfoRsrcClump = 0x0200,
	kFSVolInfoDataClump = 0x0400,
	kFSVolInfoNextID = 0x0800,
	kFSVolInfoFinderInfo = 0x1000,
	kFSVolInfoFlags = 0x2000,
	kFSVolInfoFSInfo = 0x4000,
	kFSVolInfoDriveInfo = 0x8000,
	kFSVolInfoGettableInfo = 0xFFFF,
	kFSVolInfoSettableInfo = 0x3004
}

enum
{
	kFSVolFlagDefaultVolumeBit = 5,
	kFSVolFlagDefaultVolumeMask = 0x0020,
	kFSVolFlagFilesOpenBit = 6,
	kFSVolFlagFilesOpenMask = 0x0040,
	kFSVolFlagHardwareLockedBit = 7,
	kFSVolFlagHardwareLockedMask = 0x0080,
	kFSVolFlagJournalingActiveBit = 14,
	kFSVolFlagJournalingActiveMask = 0x4000,
	kFSVolFlagSoftwareLockedBit = 15,
	kFSVolFlagSoftwareLockedMask = 0x8000
}

enum
{
	AppleShareMediaType = getOSType!("afpm")
}

enum
{
	volMountNoLoginMsgFlagBit = 0,
	volMountNoLoginMsgFlagMask = 0x0001,
	volMountExtendedFlagsBit = 7,
	volMountExtendedFlagsMask = 0x0080,
	volMountInteractBit = 15,
	volMountInteractMask = 0x8000,
	volMountChangedBit = 14,
	volMountChangedMask = 0x4000,
	volMountFSReservedMask = 0x00FF,
	volMountSysReservedMask = 0xFF00
}

enum
{
	kAFPExtendedFlagsAlternateAddressMask = 1
}

enum
{
	kAFPTagTypeIP = 0x01,
	kAFPTagTypeIPPort = 0x02,
	kAFPTagTypeDDP = 0x03,
	kAFPTagTypeDNS = 0x04
}

enum
{
	kAFPTagLengthIP = 0x06,
	kAFPTagLengthIPPort = 0x08,
	kAFPTagLengthDDP = 0x06
}

enum
{
	kLargeIconSize = 256,
	kLarge4BitIconSize = 512,
	kLarge8BitIconSize = 1024,
	kSmallIconSize = 64,
	kSmall4BitIconSize = 128,
	kSmall8BitIconSize = 256
}

enum
{
	kFSReplaceObjectDefaultOptions = 0,
	kFSReplaceObjectReplaceMetadata = 0x01,
	kFSReplaceObjectSaveOriginalAsABackup = 0x02,
	kFSReplaceObjectReplacePermissionInfo = 0x04,
	kFSReplaceObjectPreservePermissionInfo = 0x08,
	kFSReplaceObjectDoNotCheckObjectWriteAccess = 0x10
}

enum
{
	kFSPathMakeRefDefaultOptions = 0,
	kFSPathMakeRefDoNotFollowLeafSymlink = 0x01
}

enum
{
	kFNDirectoryModifiedMessage = 1
}

enum
{
	kFNNoImplicitAllSubscription = (1 << 0),
	kFNNotifyInBackground = (1 << 1)
}

enum
{
	kAsyncMountInProgress = 1,
	kAsyncMountComplete = 2,
	kAsyncUnmountInProgress = 3,
	kAsyncUnmountComplete = 4,
	kAsyncEjectInProgress = 5,
	kAsyncEjectComplete = 6
}

enum
{
	kFSMountServerMarkDoNotDisplay = (1 << 0),
	kFSMountServerMountOnMountDir = (1 << 2)
}

enum
{
	kFSMountServerMountWithoutNotification = (1 << 1)
}

enum
{
	kFSEjectVolumeForceEject = (1 << 0)
}

enum
{
	kFSUnmountVolumeForceUnmount = (1 << 0)
}

enum
{
	kFSFileOperationDefaultOptions = 0,
	kFSFileOperationOverwrite = 0x01,
	kFSFileOperationSkipSourcePermissionErrors = 0x02,
	kFSFileOperationDoNotMoveAcrossVolumes = 0x04,
	kFSFileOperationSkipPreflight = 0x08
}

enum
{
	kFSOperationStageUndefined = 0,
	kFSOperationStagePreflighting = 1,
	kFSOperationStageRunning = 2,
	kFSOperationStageComplete = 3
}

enum
{
	pleaseCacheBit = 4,
	pleaseCacheMask = 0x0010,
	noCacheBit = 5,
	noCacheMask = 0x0020,
	rdVerifyBit = 6,
	rdVerifyMask = 0x0040,
	rdVerify = 64,
	forceReadBit = 6,
	forceReadMask = 0x0040,
	newLineBit = 7,
	newLineMask = 0x0080,
	newLineCharMask = 0xFF00
}

enum
{
	kOwnerID2Name = 1,
	kGroupID2Name = 2,
	kOwnerName2ID = 3,
	kGroupName2ID = 4,
	kReturnNextUser = 1,
	kReturnNextGroup = 2,
	kReturnNextUG = 3
}

enum
{
	kVCBFlagsIdleFlushBit = 3,
	kVCBFlagsIdleFlushMask = 0x0008,
	kVCBFlagsHFSPlusAPIsBit = 4,
	kVCBFlagsHFSPlusAPIsMask = 0x0010,
	kVCBFlagsHardwareGoneBit = 5,
	kVCBFlagsHardwareGoneMask = 0x0020,
	kVCBFlagsVolumeDirtyBit = 15,
	kVCBFlagsVolumeDirtyMask = 0x8000
}

enum
{
	kioVAtrbDefaultVolumeBit = 5,
	kioVAtrbDefaultVolumeMask = 0x0020,
	kioVAtrbFilesOpenBit = 6,
	kioVAtrbFilesOpenMask = 0x0040,
	kioVAtrbHardwareLockedBit = 7,
	kioVAtrbHardwareLockedMask = 0x0080,
	kioVAtrbSoftwareLockedBit = 15,
	kioVAtrbSoftwareLockedMask = 0x8000
}

enum
{
	kioFlAttribLockedBit = 0,
	kioFlAttribLockedMask = 0x01,
	kioFlAttribResOpenBit = 2,
	kioFlAttribResOpenMask = 0x04,
	kioFlAttribDataOpenBit = 3,
	kioFlAttribDataOpenMask = 0x08,
	kioFlAttribDirBit = 4,
	kioFlAttribDirMask = 0x10,
	ioDirFlg = 4,
	ioDirMask = 0x10,
	kioFlAttribCopyProtBit = 6,
	kioFlAttribCopyProtMask = 0x40,
	kioFlAttribFileOpenBit = 7,
	kioFlAttribFileOpenMask = 0x80,
	kioFlAttribInSharedBit = 2,
	kioFlAttribInSharedMask = 0x04,
	kioFlAttribMountedBit = 3,
	kioFlAttribMountedMask = 0x08,
	kioFlAttribSharePointBit = 5,
	kioFlAttribSharePointMask = 0x20
}

enum
{
	kioFCBWriteBit = 8,
	kioFCBWriteMask = 0x0100,
	kioFCBResourceBit = 9,
	kioFCBResourceMask = 0x0200,
	kioFCBWriteLockedBit = 10,
	kioFCBWriteLockedMask = 0x0400,
	kioFCBLargeFileBit = 11,
	kioFCBLargeFileMask = 0x0800,
	kioFCBSharedWriteBit = 12,
	kioFCBSharedWriteMask = 0x1000,
	kioFCBFileLockedBit = 13,
	kioFCBFileLockedMask = 0x2000,
	kioFCBOwnClumpBit = 14,
	kioFCBOwnClumpMask = 0x4000,
	kioFCBModifiedBit = 15,
	kioFCBModifiedMask = 0x8000
}

enum
{
	kioACUserNoSeeFolderBit = 0,
	kioACUserNoSeeFolderMask = 0x01,
	kioACUserNoSeeFilesBit = 1,
	kioACUserNoSeeFilesMask = 0x02,
	kioACUserNoMakeChangesBit = 2,
	kioACUserNoMakeChangesMask = 0x04,
	kioACUserNotOwnerBit = 7,
	kioACUserNotOwnerMask = 0x80
}

enum
{
	kioACAccessOwnerBit = 31,
	kioACAccessOwnerMask = cast(c_long)0x80000000,
	kioACAccessBlankAccessBit = 28,
	kioACAccessBlankAccessMask = 0x10000000,
	kioACAccessUserWriteBit = 26,
	kioACAccessUserWriteMask = 0x04000000,
	kioACAccessUserReadBit = 25,
	kioACAccessUserReadMask = 0x02000000,
	kioACAccessUserSearchBit = 24,
	kioACAccessUserSearchMask = 0x01000000,
	kioACAccessEveryoneWriteBit = 18,
	kioACAccessEveryoneWriteMask = 0x00040000,
	kioACAccessEveryoneReadBit = 17,
	kioACAccessEveryoneReadMask = 0x00020000,
	kioACAccessEveryoneSearchBit = 16,
	kioACAccessEveryoneSearchMask = 0x00010000,
	kioACAccessGroupWriteBit = 10,
	kioACAccessGroupWriteMask = 0x00000400,
	kioACAccessGroupReadBit = 9,
	kioACAccessGroupReadMask = 0x00000200,
	kioACAccessGroupSearchBit = 8,
	kioACAccessGroupSearchMask = 0x00000100,
	kioACAccessOwnerWriteBit = 2,
	kioACAccessOwnerWriteMask = 0x00000004,
	kioACAccessOwnerReadBit = 1,
	kioACAccessOwnerReadMask = 0x00000002,
	kioACAccessOwnerSearchBit = 0,
	kioACAccessOwnerSearchMask = 0x00000001,
	kfullPrivileges = 0x00070007,
	kownerPrivileges = 0x00000007
}

struct HFSUniStr255
{
	ushort length;
	wchar* unicode;
}


struct FSRef
{
	ubyte[80] hidden;
}


struct CatPositionRec
{
	int initialize;
	short[6] priv;
}


struct FSSpec
{
	ubyte[70] hidden;
}


struct FSPermissionInfo
{
	uint userID;
	uint groupID;
	ubyte reserved1;
	ubyte userAccess;
	ushort mode;
	FSFileSecurityRef fileSec;
}


struct FSCatalogInfo
{
	ushort nodeFlags;
	short volume;
	uint parentDirID;
	uint nodeID;
	ubyte sharingFlags;
	ubyte userPrivileges;
	ubyte reserved1;
	ubyte reserved2;
	UTCDateTime createDate;
	UTCDateTime contentModDate;
	UTCDateTime attributeModDate;
	UTCDateTime accessDate;
	UTCDateTime backupDate;
	FSPermissionInfo permissions;
	char* finderInfo;
	char* extFinderInfo;
	ulong dataLogicalSize;
	ulong dataPhysicalSize;
	ulong rsrcLogicalSize;
	ulong rsrcPhysicalSize;
	uint valence;
	uint textEncodingHint;
}


struct FSRefParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	char* ioNamePtr;
	short ioVRefNum;
	short reserved1;
	ubyte reserved2;
	ubyte reserved3;
	FSRef* ref_;
	uint whichInfo;
	FSCatalogInfo* catInfo;
	uint nameLength;
	wchar* name;
	uint ioDirID;
	FSSpecPtr spec;
	FSRef* parentRef;
	FSRef* newRef;
	uint textEncodingHint;
	HFSUniStr255* outName;
}


struct FSRefForkIOParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	FSRef* parentRef;
	uint nameLength;
	wchar* name;
	uint whichInfo;
	FSCatalogInfo* catInfo;
	uint forkNameLength;
	wchar* forkName;
	byte permissions;
	ubyte reserved1;
	short forkRefNum;
	FSRef* newRef;
}


struct FSSearchParams
{
	int searchTime;
	uint searchBits;
	uint searchNameLength;
	wchar* searchName;
	FSCatalogInfo* searchInfo1;
	FSCatalogInfo* searchInfo2;
}


struct FSCatalogBulkParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	ubyte containerChanged;
	ubyte reserved;
	uint iteratorFlags;
	FSIterator iterator;
	FSRef* container;
	uint maximumItems;
	uint actualItems;
	uint whichInfo;
	FSCatalogInfo* catalogInfo;
	FSRef* refs;
	FSSpecPtr specs;
	HFSUniStr255* names;
	FSSearchParams* searchParams;
}


struct FSForkIOParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	void* reserved1;
	short reserved2;
	short forkRefNum;
	ubyte reserved3;
	byte permissions;
	FSRef* ref_;
	char* buffer;
	uint requestCount;
	uint actualCount;
	ushort positionMode;
	long positionOffset;
	ushort allocationFlags;
	ulong allocationAmount;
	uint forkNameLength;
	wchar* forkName;
	CatPositionRec forkIterator;
	HFSUniStr255* outForkName;
}


struct FSForkInfo
{
	byte flags;
	byte permissions;
	short volume;
	uint reserved2;
	uint nodeID;
	uint forkID;
	ulong currentPosition;
	ulong logicalEOF;
	ulong physicalEOF;
	ulong process;
}


struct FSForkCBInfoParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	short desiredRefNum;
	short volumeRefNum;
	short iterator;
	short actualRefNum;
	FSRef* ref_;
	FSForkInfo* forkInfo;
	HFSUniStr255* forkName;
}


struct FSRangeLockParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	short forkRefNum;
	ulong requestCount;
	ushort positionMode;
	long positionOffset;
	ulong rangeStart;
}


struct FSVolumeInfo
{
	UTCDateTime createDate;
	UTCDateTime modifyDate;
	UTCDateTime backupDate;
	UTCDateTime checkedDate;
	uint fileCount;
	uint folderCount;
	ulong totalBytes;
	ulong freeBytes;
	uint blockSize;
	uint totalBlocks;
	uint freeBlocks;
	uint nextAllocation;
	uint rsrcClumpSize;
	uint dataClumpSize;
	uint nextCatalogID;
	char* finderInfo;
	ushort flags;
	ushort filesystemID;
	ushort signature;
	ushort driveNumber;
	short driverRefNum;
}


struct FSVolumeInfoParam
{
	QElemPtr qLink;
	short qType;
	short ioTrap;
	char* ioCmdAddr;
	IOCompletionUPP ioCompletion;
	short ioResult;
	char* ioNamePtr;
	short ioVRefNum;
	uint volumeIndex;
	uint whichInfo;
	FSVolumeInfo* volumeInfo;
	HFSUniStr255* volumeName;
	FSRef* ref_;
}


struct GetVolParmsInfoBuffer
{
	short vMVersion;
	int vMAttrib;
	Handle vMLocalHand;
	int vMServerAdr;
	int vMVolumeGrade;
	short vMForeignPrivID;
	int vMExtendedAttributes;
	void* vMDeviceID;
	uint vMMaxNameLength;
}


struct VolMountInfoHeader
{
	short length;
	uint media;
}


struct VolumeMountInfoHeader
{
	short length;
	uint media;
	short flags;
}


struct AFPVolMountInfo
{
	short length;
	uint media;
	short flags;
	byte nbpInterval;
	byte nbpCount;
	short uamType;
	short zoneNameOffset;
	short serverNameOffset;
	short volNameOffset;
	short userNameOffset;
	short userPasswordOffset;
	short volPasswordOffset;
	char* AFPData;
}


struct AFPXVolMountInfo
{
	short length;
	uint media;
	short flags;
	byte nbpInterval;
	byte nbpCount;
	short uamType;
	short zoneNameOffset;
	short serverNameOffset;
	short volNameOffset;
	short userNameOffset;
	short userPasswordOffset;
	short volPasswordOffset;
	short extendedFlags;
	short uamNameOffset;
	short alternateAddressOffset;
	char* AFPData;
}


struct AFPTagData
{
	ubyte fLength;
	ubyte fType;
	char* fData;
}


struct AFPAlternateAddress
{
	ubyte fVersion;
	ubyte fAddressCount;
	char* fAddressList;
}


struct FSFileOperationClientContext
{
	int version_;
	void* info;
	CFAllocatorRetainCallBack retain;
	CFAllocatorReleaseCallBack release;
	CFAllocatorCopyDescriptionCallBack copyDescription;
}

extern (C)
{
	IOCompletionUPP NewIOCompletionUPP (IOCompletionProcPtr userRoutine);
	void DisposeIOCompletionUPP (IOCompletionUPP userUPP);
	void InvokeIOCompletionUPP (ParmBlkPtr paramBlock, IOCompletionUPP userUPP);
	short FSMakeFSRefUnicode (FSRef* parentRef, uint nameLength, wchar* name, uint textEncodingHint, FSRef* newRef);
	short PBMakeFSRefUnicodeSync (FSRefParam* paramBlock);
	void PBMakeFSRefUnicodeAsync (FSRefParam* paramBlock);
	short FSCompareFSRefs (FSRef* ref1, FSRef* ref2);
	short PBCompareFSRefsSync (FSRefParam* paramBlock);
	void PBCompareFSRefsAsync (FSRefParam* paramBlock);
	short FSCreateFileUnicode (FSRef* parentRef, uint nameLength, wchar* name, uint whichInfo, FSCatalogInfo* catalogInfo, FSRef* newRef, FSSpecPtr newSpec);
	short PBCreateFileUnicodeSync (FSRefParam* paramBlock);
	void PBCreateFileUnicodeAsync (FSRefParam* paramBlock);
	short FSCreateDirectoryUnicode (FSRef* parentRef, uint nameLength, wchar* name, uint whichInfo, FSCatalogInfo* catalogInfo, FSRef* newRef, FSSpecPtr newSpec, UInt32* newDirID);
	short PBCreateDirectoryUnicodeSync (FSRefParam* paramBlock);
	void PBCreateDirectoryUnicodeAsync (FSRefParam* paramBlock);
	short FSDeleteObject (FSRef* ref_);
	short PBDeleteObjectSync (FSRefParam* paramBlock);
	void PBDeleteObjectAsync (FSRefParam* paramBlock);
	short FSUnlinkObject (FSRef* ref_);
	short PBUnlinkObjectSync (FSRefParam* paramBlock);
	void PBUnlinkObjectAsync (FSRefParam* paramBlock);
	short FSMoveObject (FSRef* ref_, FSRef* destDirectory, FSRef* newRef);
	short PBMoveObjectSync (FSRefParam* paramBlock);
	void PBMoveObjectAsync (FSRefParam* paramBlock);
	short FSExchangeObjects (FSRef* ref_, FSRef* destRef);
	short PBExchangeObjectsSync (FSRefParam* paramBlock);
	void PBExchangeObjectsAsync (FSRefParam* paramBlock);
	int FSReplaceObject (FSRef* originalObject, FSRef* replacementObject, CFStringRef newName, CFStringRef temporaryName, FSRef* temporaryDirectory, uint flags, FSRef* resultObject);
	int FSPathReplaceObject (char* originalObjectPath, char* replacementObjectPath, CFStringRef newName, CFStringRef temporaryName, char* temporaryDirectoryPath, uint flags);
	int FSGetTemporaryDirectoryForReplaceObject (FSRef* originalObject, FSRef* temporaryDirectory, uint flags);
	int FSPathGetTemporaryDirectoryForReplaceObject (char* originalObjectPath, char* temporaryDirectoryPath, uint maxPathSize, uint flags);
	short FSRenameUnicode (FSRef* ref_, uint nameLength, wchar* name, uint textEncodingHint, FSRef* newRef);
	short PBRenameUnicodeSync (FSRefParam* paramBlock);
	void PBRenameUnicodeAsync (FSRefParam* paramBlock);
	short FSGetCatalogInfo (FSRef* ref_, uint whichInfo, FSCatalogInfo* catalogInfo, HFSUniStr255* outName, FSSpecPtr fsSpec, FSRef* parentRef);
	short PBGetCatalogInfoSync (FSRefParam* paramBlock);
	void PBGetCatalogInfoAsync (FSRefParam* paramBlock);
	short FSSetCatalogInfo (FSRef* ref_, uint whichInfo, FSCatalogInfo* catalogInfo);
	short PBSetCatalogInfoSync (FSRefParam* paramBlock);
	void PBSetCatalogInfoAsync (FSRefParam* paramBlock);
	short FSOpenIterator (FSRef* container, uint iteratorFlags, FSIterator* iterator);
	short PBOpenIteratorSync (FSCatalogBulkParam* paramBlock);
	void PBOpenIteratorAsync (FSCatalogBulkParam* paramBlock);
	short FSCloseIterator (FSIterator iterator);
	short PBCloseIteratorSync (FSCatalogBulkParam* paramBlock);
	void PBCloseIteratorAsync (FSCatalogBulkParam* paramBlock);
	short FSGetCatalogInfoBulk (FSIterator iterator, uint maximumObjects, ItemCount* actualObjects, char* containerChanged, uint whichInfo, FSCatalogInfo* catalogInfos, FSRef* refs, FSSpecPtr specs, HFSUniStr255* names);
	short PBGetCatalogInfoBulkSync (FSCatalogBulkParam* paramBlock);
	void PBGetCatalogInfoBulkAsync (FSCatalogBulkParam* paramBlock);
	short FSCatalogSearch (FSIterator iterator, FSSearchParams* searchCriteria, uint maximumObjects, ItemCount* actualObjects, char* containerChanged, uint whichInfo, FSCatalogInfo* catalogInfos, FSRef* refs, FSSpecPtr specs, HFSUniStr255* names);
	short PBCatalogSearchSync (FSCatalogBulkParam* paramBlock);
	void PBCatalogSearchAsync (FSCatalogBulkParam* paramBlock);
	int FSCreateFileAndOpenForkUnicode (FSRef* parentRef, uint nameLength, wchar* name, uint whichInfo, FSCatalogInfo* catalogInfo, uint forkNameLength, wchar* forkName, byte permissions, FSIORefNum* forkRefNum, FSRef* newRef);
	int PBCreateFileAndOpenForkUnicodeSync (FSRefForkIOParamPtr paramBlock);
	void PBCreateFileAndOpenForkUnicodeAsync (FSRefForkIOParamPtr paramBlock);
	short FSCreateFork (FSRef* ref_, uint forkNameLength, wchar* forkName);
	short PBCreateForkSync (FSForkIOParam* paramBlock);
	void PBCreateForkAsync (FSForkIOParam* paramBlock);
	short FSDeleteFork (FSRef* ref_, uint forkNameLength, wchar* forkName);
	short PBDeleteForkSync (FSForkIOParam* paramBlock);
	void PBDeleteForkAsync (FSForkIOParam* paramBlock);
	short FSIterateForks (FSRef* ref_, CatPositionRec* forkIterator, HFSUniStr255* forkName, SInt64* forkSize, UInt64* forkPhysicalSize);
	short PBIterateForksSync (FSForkIOParam* paramBlock);
	void PBIterateForksAsync (FSForkIOParam* paramBlock);
	short FSOpenFork (FSRef* ref_, uint forkNameLength, wchar* forkName, byte permissions, FSIORefNum* forkRefNum);
	short PBOpenForkSync (FSForkIOParam* paramBlock);
	void PBOpenForkAsync (FSForkIOParam* paramBlock);
	short FSReadFork (short forkRefNum, ushort positionMode, long positionOffset, uint requestCount, void* buffer, ByteCount* actualCount);
	short PBReadForkSync (FSForkIOParam* paramBlock);
	void PBReadForkAsync (FSForkIOParam* paramBlock);
	short FSWriteFork (short forkRefNum, ushort positionMode, long positionOffset, uint requestCount, void* buffer, ByteCount* actualCount);
	short PBWriteForkSync (FSForkIOParam* paramBlock);
	void PBWriteForkAsync (FSForkIOParam* paramBlock);
	short FSGetForkPosition (short forkRefNum, SInt64* position);
	short PBGetForkPositionSync (FSForkIOParam* paramBlock);
	void PBGetForkPositionAsync (FSForkIOParam* paramBlock);
	short FSSetForkPosition (short forkRefNum, ushort positionMode, long positionOffset);
	short PBSetForkPositionSync (FSForkIOParam* paramBlock);
	void PBSetForkPositionAsync (FSForkIOParam* paramBlock);
	short FSGetForkSize (short forkRefNum, SInt64* forkSize);
	short PBGetForkSizeSync (FSForkIOParam* paramBlock);
	void PBGetForkSizeAsync (FSForkIOParam* paramBlock);
	short FSSetForkSize (short forkRefNum, ushort positionMode, long positionOffset);
	short PBSetForkSizeSync (FSForkIOParam* paramBlock);
	void PBSetForkSizeAsync (FSForkIOParam* paramBlock);
	short FSAllocateFork (short forkRefNum, ushort flags, ushort positionMode, long positionOffset, ulong requestCount, UInt64* actualCount);
	short PBAllocateForkSync (FSForkIOParam* paramBlock);
	void PBAllocateForkAsync (FSForkIOParam* paramBlock);
	short FSFlushFork (short forkRefNum);
	short PBFlushForkSync (FSForkIOParam* paramBlock);
	void PBFlushForkAsync (FSForkIOParam* paramBlock);
	short FSCloseFork (short forkRefNum);
	short PBCloseForkSync (FSForkIOParam* paramBlock);
	void PBCloseForkAsync (FSForkIOParam* paramBlock);
	short FSGetForkCBInfo (short desiredRefNum, short volume, short* iterator, FSIORefNum* actualRefNum, FSForkInfo* forkInfo, FSRef* ref_, HFSUniStr255* outForkName);
	short PBGetForkCBInfoSync (FSForkCBInfoParam* paramBlock);
	void PBGetForkCBInfoAsync (FSForkCBInfoParam* paramBlock);
	int FSLockRange (short forkRefNum, ushort positionMode, long positionOffset, ulong requestCount, UInt64* rangeStart);
	int PBXLockRangeSync (FSRangeLockParamPtr paramBlock);
	int PBXLockRangeAsync (FSRangeLockParamPtr paramBlock);
	int FSUnlockRange (short forkRefNum, ushort positionMode, long positionOffset, ulong requestCount, UInt64* rangeStart);
	int PBXUnlockRangeSync (FSRangeLockParamPtr paramBlock);
	int PBXUnlockRangeAsync (FSRangeLockParamPtr paramBlock);
	short FSGetVolumeInfo (short volume, uint volumeIndex, FSVolumeRefNum* actualVolume, uint whichInfo, FSVolumeInfo* info, HFSUniStr255* volumeName, FSRef* rootDirectory);
	short PBGetVolumeInfoSync (FSVolumeInfoParam* paramBlock);
	void PBGetVolumeInfoAsync (FSVolumeInfoParam* paramBlock);
	short FSSetVolumeInfo (short volume, uint whichInfo, FSVolumeInfo* info);
	short PBSetVolumeInfoSync (FSVolumeInfoParam* paramBlock);
	void PBSetVolumeInfoAsync (FSVolumeInfoParam* paramBlock);
	short FSGetDataForkName (HFSUniStr255* dataForkName);
	short FSGetResourceForkName (HFSUniStr255* resourceForkName);
	int FSRefMakePath (FSRef* ref_, char* path, uint pathBufferSize);
	int FSPathMakeRef (char* path, FSRef* ref_, char* isDirectory);
	int FSPathMakeRefWithOptions (char* path, uint options, FSRef* ref_, char* isDirectory);
	ubyte FSIsFSRefValid (FSRef* ref_);
	int FNNotify (FSRef* ref_, uint message, uint flags);
	int FNNotifyByPath (char* path, uint message, uint flags);
	int FNNotifyAll (uint message, uint flags);
	FNSubscriptionUPP NewFNSubscriptionUPP (FNSubscriptionProcPtr userRoutine);
	void DisposeFNSubscriptionUPP (FNSubscriptionUPP userUPP);
	void InvokeFNSubscriptionUPP (uint message, uint flags, void* refcon, FNSubscriptionRef subscription, FNSubscriptionUPP userUPP);
	int FNSubscribe (FSRef* directoryRef, FNSubscriptionUPP callback, void* refcon, uint flags, FNSubscriptionRef* subscription);
	int FNSubscribeByPath (char* directoryPath, FNSubscriptionUPP callback, void* refcon, uint flags, FNSubscriptionRef* subscription);
	int FNUnsubscribe (FNSubscriptionRef subscription);
	int FNGetDirectoryForSubscription (FNSubscriptionRef subscription, FSRef* ref_);
	FSVolumeMountUPP NewFSVolumeMountUPP (FSVolumeMountProcPtr userRoutine);
	FSVolumeUnmountUPP NewFSVolumeUnmountUPP (FSVolumeUnmountProcPtr userRoutine);
	FSVolumeEjectUPP NewFSVolumeEjectUPP (FSVolumeEjectProcPtr userRoutine);
	void DisposeFSVolumeMountUPP (FSVolumeMountUPP userUPP);
	void DisposeFSVolumeUnmountUPP (FSVolumeUnmountUPP userUPP);
	void DisposeFSVolumeEjectUPP (FSVolumeEjectUPP userUPP);
	void InvokeFSVolumeMountUPP (FSVolumeOperation volumeOp, void* clientData, int err, short mountedVolumeRefNum, FSVolumeMountUPP userUPP);
	void InvokeFSVolumeUnmountUPP (FSVolumeOperation volumeOp, void* clientData, int err, short volumeRefNum, int dissenter, FSVolumeUnmountUPP userUPP);
	void InvokeFSVolumeEjectUPP (FSVolumeOperation volumeOp, void* clientData, int err, short volumeRefNum, int dissenter, FSVolumeEjectUPP userUPP);
	int FSCreateVolumeOperation (FSVolumeOperation* volumeOp);
	int FSDisposeVolumeOperation (FSVolumeOperation volumeOp);
	int FSMountLocalVolumeSync (CFStringRef diskID, CFURLRef mountDir, FSVolumeRefNum* mountedVolumeRefNum, uint flags);
	int FSMountLocalVolumeAsync (CFStringRef diskID, CFURLRef mountDir, FSVolumeOperation volumeOp, void* clientData, uint flags, FSVolumeMountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode);
	int FSMountServerVolumeSync (CFURLRef url, CFURLRef mountDir, CFStringRef user, CFStringRef password, FSVolumeRefNum* mountedVolumeRefNum, uint flags);
	int FSMountServerVolumeAsync (CFURLRef url, CFURLRef mountDir, CFStringRef user, CFStringRef password, FSVolumeOperation volumeOp, void* clientData, uint flags, FSVolumeMountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode);
	int FSGetAsyncMountStatus (FSVolumeOperation volumeOp, FSMountStatus* status, OSStatus* volumeOpStatus, FSVolumeRefNum* mountedVolumeRefNum, void** clientData);
	int FSUnmountVolumeSync (short vRefNum, uint flags, pid_t* dissenter);
	int FSUnmountVolumeAsync (short vRefNum, uint flags, FSVolumeOperation volumeOp, void* clientData, FSVolumeUnmountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode);
	int FSGetAsyncUnmountStatus (FSVolumeOperation volumeOp, FSUnmountStatus* status, OSStatus* volumeOpStatus, FSVolumeRefNum* volumeRefNum, pid_t* dissenter, void** clientData);
	int FSCancelVolumeOperation (FSVolumeOperation volumeOp);
	int FSEjectVolumeSync (short vRefNum, uint flags, pid_t* dissenter);
	int FSEjectVolumeAsync (short vRefNum, uint flags, FSVolumeOperation volumeOp, void* clientData, FSVolumeEjectUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode);
	int FSGetAsyncEjectStatus (FSVolumeOperation volumeOp, FSEjectStatus* status, OSStatus* volumeOpStatus, FSVolumeRefNum* volumeRefNum, pid_t* dissenter, void** clientData);
	int FSCopyDiskIDForVolume (short vRefNum, CFStringRef* diskID);
	int FSCopyURLForVolume (short vRefNum, CFURLRef* url);
	int FSGetVolumeForDiskID (CFStringRef diskID, FSVolumeRefNum* vRefNum);
	int FSCopyDADiskForVolume (short vRefNum, DADiskRef* disk);
	int FSGetVolumeForDADisk (DADiskRef disk, FSVolumeRefNum* vRefNum);
	int FSCopyObjectSync (FSRef* source, FSRef* destDir, CFStringRef destName, FSRef* target, uint options);
	int FSMoveObjectSync (FSRef* source, FSRef* destDir, CFStringRef destName, FSRef* target, uint options);
	int FSMoveObjectToTrashSync (FSRef* source, FSRef* target, uint options);
	int FSPathCopyObjectSync (char* sourcePath, char* destDirPath, CFStringRef destName, char** targetPath, uint options);
	int FSPathMoveObjectSync (char* sourcePath, char* destDirPath, CFStringRef destName, char** targetPath, uint options);
	int FSPathMoveObjectToTrashSync (char* sourcePath, char** targetPath, uint options);
	uint FSFileOperationGetTypeID ();
	FSFileOperationRef FSFileOperationCreate (CFAllocatorRef alloc);
	int FSFileOperationScheduleWithRunLoop (FSFileOperationRef fileOp, CFRunLoopRef runLoop, CFStringRef runLoopMode);
	int FSFileOperationUnscheduleFromRunLoop (FSFileOperationRef fileOp, CFRunLoopRef runLoop, CFStringRef runLoopMode);
	int FSCopyObjectAsync (FSFileOperationRef fileOp, FSRef* source, FSRef* destDir, CFStringRef destName, uint flags, FSFileOperationStatusProcPtr callback, double statusChangeInterval, FSFileOperationClientContext* clientContext);
	int FSMoveObjectAsync (FSFileOperationRef fileOp, FSRef* source, FSRef* destDir, CFStringRef destName, uint flags, FSFileOperationStatusProcPtr callback, double statusChangeInterval, FSFileOperationClientContext* clientContext);
	int FSMoveObjectToTrashAsync (FSFileOperationRef fileOp, FSRef* source, uint flags, FSFileOperationStatusProcPtr callback, double statusChangeInterval, FSFileOperationClientContext* clientContext);
	int FSPathCopyObjectAsync (FSFileOperationRef fileOp, char* sourcePath, char* destDirPath, CFStringRef destName, uint flags, FSPathFileOperationStatusProcPtr callback, double statusChangeInterval, FSFileOperationClientContext* clientContext);
	int FSPathMoveObjectAsync (FSFileOperationRef fileOp, char* sourcePath, char* destDirPath, CFStringRef destName, uint flags, FSPathFileOperationStatusProcPtr callback, double statusChangeInterval, FSFileOperationClientContext* clientContext);
	int FSPathMoveObjectToTrashAsync (FSFileOperationRef fileOp, char* sourcePath, uint flags, FSPathFileOperationStatusProcPtr callback, double statusChangeInterval, FSFileOperationClientContext* clientContext);
	int FSFileOperationCancel (FSFileOperationRef fileOp);
	int FSFileOperationCopyStatus (FSFileOperationRef fileOp, FSRef* currentItem, FSFileOperationStage* stage, OSStatus* error, CFDictionaryRef* statusDictionary, void** info);
	int FSPathFileOperationCopyStatus (FSFileOperationRef fileOp, char** currentItem, FSFileOperationStage* stage, OSStatus* error, CFDictionaryRef* statusDictionary, void** info);
	CFStringRef FSCreateStringFromHFSUniStr (CFAllocatorRef alloc, HFSUniStr255* uniStr);
	int FSGetHFSUniStrFromString (CFStringRef theString, HFSUniStr255* uniStr);
	uint FSFileSecurityGetTypeID ();
	FSFileSecurityRef FSFileSecurityCreate (CFAllocatorRef alloc);
	FSFileSecurityRef FSFileSecurityCreateWithFSPermissionInfo (CFAllocatorRef alloc, FSPermissionInfo* permissions);
	FSFileSecurityRef FSFileSecurityRefCreateCopy (CFAllocatorRef alloc, FSFileSecurityRef fileSec);
	int FSFileSecurityGetOwnerUUID (FSFileSecurityRef fileSec, CFUUIDBytes* owner);
	int FSFileSecuritySetOwnerUUID (FSFileSecurityRef fileSec, CFUUIDBytes* owner);
	int FSFileSecurityGetGroupUUID (FSFileSecurityRef fileSec, CFUUIDBytes* group);
	int FSFileSecuritySetGroupUUID (FSFileSecurityRef fileSec, CFUUIDBytes* group);
	int FSFileSecurityCopyAccessControlList (FSFileSecurityRef fileSec, acl_t* accessControlList);
	int FSFileSecuritySetAccessControlList (FSFileSecurityRef fileSec, acl_t accessControlList);
	int FSFileSecurityGetOwner (FSFileSecurityRef fileSec, UInt32* owner);
	int FSFileSecuritySetOwner (FSFileSecurityRef fileSec, uint owner);
	int FSFileSecurityGetGroup (FSFileSecurityRef fileSec, UInt32* group);
	int FSFileSecuritySetGroup (FSFileSecurityRef fileSec, uint group);
	int FSFileSecurityGetMode (FSFileSecurityRef fileSec, UInt16* mode);
	int FSFileSecuritySetMode (FSFileSecurityRef fileSec, ushort mode);
	int FSGetVolumeParms (short volume, GetVolParmsInfoBuffer* buffer, uint bufferSize);
	int FSGetVolumeMountInfoSize (short volume, ByteCount* size);
	int FSGetVolumeMountInfo (short volume, char* buffer, uint bufferSize, ByteCount* actualSize);
	int FSVolumeMount (char* buffer, FSVolumeRefNum* mountedVolume);
	int FSFlushVolume (short vRefNum);
	int PBFlushVolumeSync (FSRefParamPtr paramBlock);
	int PBFlushVolumeAsync (FSRefParamPtr paramBlock);
	int PBFSCopyFileSync (FSRefParamPtr paramBlock);
	int PBFSCopyFileAsync (FSRefParamPtr paramBlock);
	int FSResolveNodeID (short volume, uint nodeID, FSRefPtr newRef);
	int PBFSResolveNodeIDSync (FSRefParamPtr paramBlock);
	int PBFSResolveNodeIDAsync (FSRefParamPtr paramBlock);
}