diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/Aliases.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/Aliases.h')
| -rw-r--r-- | common/quicktime_win32/Aliases.h | 671 |
1 files changed, 671 insertions, 0 deletions
diff --git a/common/quicktime_win32/Aliases.h b/common/quicktime_win32/Aliases.h new file mode 100644 index 0000000..329ab0d --- /dev/null +++ b/common/quicktime_win32/Aliases.h @@ -0,0 +1,671 @@ +/* + File: Aliases.h + + Contains: Alias Manager Interfaces. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1989-2001 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __ALIASES__ +#define __ALIASES__ + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __FILES__ +#include <Files.h> +#endif + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +typedef UInt32 FSAliasInfoBitmap; +enum { + kFSAliasInfoNone = 0x00000000, /* no valid info*/ + kFSAliasInfoVolumeCreateDate = 0x00000001, /* volume creation date is valid*/ + kFSAliasInfoTargetCreateDate = 0x00000002, /* target creation date is valid*/ + kFSAliasInfoFinderInfo = 0x00000004, /* file type and creator are valid*/ + kFSAliasInfoIsDirectory = 0x00000008, /* isDirectory boolean is valid*/ + kFSAliasInfoIDs = 0x00000010, /* parentDirID and nodeID are valid*/ + kFSAliasInfoFSInfo = 0x00000020, /* filesystemID and signature are valid*/ + kFSAliasInfoVolumeFlags = 0x00000040 /* volumeIsBootVolume, volumeIsAutomounted, volumeIsEjectable and volumeHasPersistentFileIDs are valid*/ +}; + +enum { + rAliasType = FOUR_CHAR_CODE('alis') /* Aliases are stored as resources of this type */ +}; + +enum { + /* define alias resolution action rules mask */ + kARMMountVol = 0x00000001, /* mount the volume automatically */ + kARMNoUI = 0x00000002, /* no user interface allowed during resolution */ + kARMMultVols = 0x00000008, /* search on multiple volumes */ + kARMSearch = 0x00000100, /* search quickly */ + kARMSearchMore = 0x00000200, /* search further */ + kARMSearchRelFirst = 0x00000400, /* search target on a relative path first */ + kARMTryFileIDFirst = 0x00000800 /* search by file id before path */ +}; + +enum { + /* define alias record information types */ + asiZoneName = -3, /* get zone name */ + asiServerName = -2, /* get server name */ + asiVolumeName = -1, /* get volume name */ + asiAliasName = 0, /* get aliased file/folder/volume name */ + asiParentName = 1 /* get parent folder name */ +}; + +/* ResolveAliasFileWithMountFlags options */ +enum { + kResolveAliasFileNoUI = 0x00000001, /* no user interaction during resolution */ + kResolveAliasTryFileIDFirst = 0x00000002 /* search by file id before path */ +}; + +/* define the alias record that will be the blackbox for the caller */ +struct AliasRecord { + OSType userType; /* appl stored type like creator type */ + unsigned short aliasSize; /* alias record size in bytes, for appl usage */ +}; +typedef struct AliasRecord AliasRecord; +typedef AliasRecord * AliasPtr; +typedef AliasPtr * AliasHandle; +/* info block to pass to FSCopyAliasInfo */ +struct FSAliasInfo { + UTCDateTime volumeCreateDate; + UTCDateTime targetCreateDate; + OSType fileType; + OSType fileCreator; + UInt32 parentDirID; + UInt32 nodeID; + UInt16 filesystemID; + UInt16 signature; + Boolean volumeIsBootVolume; + Boolean volumeIsAutomounted; + Boolean volumeIsEjectable; + Boolean volumeHasPersistentFileIDs; + Boolean isDirectory; +}; +typedef struct FSAliasInfo FSAliasInfo; +typedef FSAliasInfo * FSAliasInfoPtr; +/* alias record information type */ +typedef short AliasInfoType; +/* + * NewAlias() + * + * Summary: + * create a new alias between fromFile and target, returns alias + * record handle + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NewAlias( + const FSSpec * fromFile, /* can be NULL */ + const FSSpec * target, + AliasHandle * alias) TWOWORDINLINE(0x7002, 0xA823); + + +/* + * NewAliasMinimal() + * + * Summary: + * create a minimal new alias for a target and return alias record + * handle + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NewAliasMinimal( + const FSSpec * target, + AliasHandle * alias) TWOWORDINLINE(0x7008, 0xA823); + + +/* + * NewAliasMinimalFromFullPath() + * + * Summary: + * create a minimal new alias from a target fullpath (optional zone + * and server name) and return alias record handle + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NewAliasMinimalFromFullPath( + short fullPathLength, + const void * fullPath, + ConstStr32Param zoneName, + ConstStr31Param serverName, + AliasHandle * alias) TWOWORDINLINE(0x7009, 0xA823); + + +/* + * ResolveAlias() + * + * Summary: + * given an alias handle and fromFile, resolve the alias, update the + * alias record and return aliased filename and wasChanged flag. + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +ResolveAlias( + const FSSpec * fromFile, /* can be NULL */ + AliasHandle alias, + FSSpec * target, + Boolean * wasChanged) TWOWORDINLINE(0x7003, 0xA823); + + +/* + * GetAliasInfo() + * + * Summary: + * given an alias handle and an index specifying requested alias + * information type, return the information from alias record as a + * string. + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetAliasInfo( + AliasHandle alias, + AliasInfoType index, + Str63 theString) TWOWORDINLINE(0x7007, 0xA823); + + + +/* + * IsAliasFile() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 8.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +IsAliasFile( + const FSSpec * fileFSSpec, + Boolean * aliasFileFlag, + Boolean * folderFlag) TWOWORDINLINE(0x702A, 0xA823); + + +/* + * ResolveAliasWithMountFlags() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 8.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +ResolveAliasWithMountFlags( + const FSSpec * fromFile, /* can be NULL */ + AliasHandle alias, + FSSpec * target, + Boolean * wasChanged, + unsigned long mountFlags) TWOWORDINLINE(0x702B, 0xA823); + + +/* + * ResolveAliasFile() + * + * Summary: + * Given a file spec, return target file spec if input file spec is + * an alias. It resolves the entire alias chain or one step of the + * chain. It returns info about whether the target is a folder or + * file; and whether the input file spec was an alias or not. + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +ResolveAliasFile( + FSSpec * theSpec, + Boolean resolveAliasChains, + Boolean * targetIsFolder, + Boolean * wasAliased) TWOWORDINLINE(0x700C, 0xA823); + + + +/* + * ResolveAliasFileWithMountFlags() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +ResolveAliasFileWithMountFlags( + FSSpec * theSpec, + Boolean resolveAliasChains, + Boolean * targetIsFolder, + Boolean * wasAliased, + unsigned long mountFlags) TWOWORDINLINE(0x7029, 0xA823); + + +/* + * FollowFinderAlias() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +FollowFinderAlias( + const FSSpec * fromFile, /* can be NULL */ + AliasHandle alias, + Boolean logon, + FSSpec * target, + Boolean * wasChanged) TWOWORDINLINE(0x700F, 0xA823); + + +/* + Low Level Routines +*/ +/* + * UpdateAlias() + * + * Summary: + * given a fromFile-target pair and an alias handle, update the + * alias record pointed to by alias handle to represent target as + * the new alias. + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +UpdateAlias( + const FSSpec * fromFile, /* can be NULL */ + const FSSpec * target, + AliasHandle alias, + Boolean * wasChanged) TWOWORDINLINE(0x7006, 0xA823); + + + +typedef CALLBACK_API( Boolean , AliasFilterProcPtr )(CInfoPBPtr cpbPtr, Boolean *quitFlag, Ptr myDataPtr); +typedef STACK_UPP_TYPE(AliasFilterProcPtr) AliasFilterUPP; +/* + * NewAliasFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( AliasFilterUPP ) +NewAliasFilterUPP(AliasFilterProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppAliasFilterProcInfo = 0x00000FD0 }; /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(AliasFilterUPP) NewAliasFilterUPP(AliasFilterProcPtr userRoutine) { return (AliasFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAliasFilterProcInfo, GetCurrentArchitecture()); } + #else + #define NewAliasFilterUPP(userRoutine) (AliasFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAliasFilterProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeAliasFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeAliasFilterUPP(AliasFilterUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeAliasFilterUPP(AliasFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeAliasFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeAliasFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeAliasFilterUPP( + CInfoPBPtr cpbPtr, + Boolean * quitFlag, + Ptr myDataPtr, + AliasFilterUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(Boolean) InvokeAliasFilterUPP(CInfoPBPtr cpbPtr, Boolean * quitFlag, Ptr myDataPtr, AliasFilterUPP userUPP) { return (Boolean)CALL_THREE_PARAMETER_UPP(userUPP, uppAliasFilterProcInfo, cpbPtr, quitFlag, myDataPtr); } + #else + #define InvokeAliasFilterUPP(cpbPtr, quitFlag, myDataPtr, userUPP) (Boolean)CALL_THREE_PARAMETER_UPP((userUPP), uppAliasFilterProcInfo, (cpbPtr), (quitFlag), (myDataPtr)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewAliasFilterProc(userRoutine) NewAliasFilterUPP(userRoutine) + #define CallAliasFilterProc(userRoutine, cpbPtr, quitFlag, myDataPtr) InvokeAliasFilterUPP(cpbPtr, quitFlag, myDataPtr, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +/* + * MatchAlias() + * + * Summary: + * Given an alias handle and fromFile, match the alias and return + * FSSpecs to the aliased file(s) and needsUpdate flag + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +MatchAlias( + const FSSpec * fromFile, /* can be NULL */ + unsigned long rulesMask, + AliasHandle alias, + short * aliasCount, + FSSpecArrayPtr aliasList, + Boolean * needsUpdate, + AliasFilterUPP aliasFilter, + void * yourDataPtr) TWOWORDINLINE(0x7005, 0xA823); + + + + +/* + * ResolveAliasFileWithMountFlagsNoUI() + * + * Summary: + * variation on ResolveAliasFile that does not prompt user with a + * dialog + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +ResolveAliasFileWithMountFlagsNoUI( + FSSpec * theSpec, + Boolean resolveAliasChains, + Boolean * targetIsFolder, + Boolean * wasAliased, + unsigned long mountFlags); + + +/* + * MatchAliasNoUI() + * + * Summary: + * variation on MatchAlias that does not prompt user with a dialog + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +MatchAliasNoUI( + const FSSpec * fromFile, /* can be NULL */ + unsigned long rulesMask, + AliasHandle alias, + short * aliasCount, + FSSpecArrayPtr aliasList, + Boolean * needsUpdate, + AliasFilterUPP aliasFilter, + void * yourDataPtr); + + +/* + * FSNewAliasUnicode() + * + * Summary: + * Creates an alias given a ref to the target's parent directory and + * the target's unicode name. If the target does not exist fnfErr + * will be returned but the alias will still be created. This + * allows the creation of aliases to targets that do not exist. + * + * Parameters: + * + * fromFile: + * The starting point for a relative search. + * + * targetParentRef: + * An FSRef to the parent directory of the target. + * + * targetNameLength: + * Number of Unicode characters in the target's name. + * + * targetName: + * A pointer to the Unicode name. + * + * inAlias: + * A Handle to the newly created alias record. + * + * isDirectory: + * On input, if target does not exist, a flag to indicate whether + * or not the target is a directory. On output, if the target did + * exist, an flag indicating if the target is a directory. Pass + * NULL in the non-existant case if unsure. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSErr ) +FSNewAliasUnicode( + const FSRef * fromFile, /* can be NULL */ + const FSRef * targetParentRef, + UniCharCount targetNameLength, + const UniChar * targetName, + AliasHandle * inAlias, + Boolean * isDirectory); /* can be NULL */ + + +/* + * FSNewAliasMinimalUnicode() + * + * Summary: + * Creates a minimal alias given a ref to the target's parent + * directory and the target's unicode name. If the target does not + * exist fnfErr will be returned but the alias will still be created. + * + * Parameters: + * + * targetParentRef: + * An FSRef to the parent directory of the target. + * + * targetNameLength: + * Number of Unicode characters in the target's name. + * + * targetName: + * A pointer to the Unicode name. + * + * inAlias: + * A Handle to the newly created alias record. + * + * isDirectory: + * On input, if target does not exist, a flag to indicate whether + * or not the + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSErr ) +FSNewAliasMinimalUnicode( + const FSRef * targetParentRef, + UniCharCount targetNameLength, + const UniChar * targetName, + AliasHandle * inAlias, + Boolean * isDirectory); /* can be NULL */ + + +/* + * FSMatchAlias() + * + * Summary: + * Given an alias handle and fromFile, match the alias and return + * FSRefs to the aliased file(s) and needsUpdate flag + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSErr ) +FSMatchAlias( + const FSRef * fromFile, /* can be NULL */ + unsigned long rulesMask, + AliasHandle inAlias, + short * aliasCount, + FSRef * aliasList, + Boolean * needsUpdate, + AliasFilterUPP aliasFilter, + void * yourDataPtr); + + +/* + * FSMatchAliasNoUI() + * + * Summary: + * variation on FSMatchAlias that does not prompt user with a dialog + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSErr ) +FSMatchAliasNoUI( + const FSRef * fromFile, /* can be NULL */ + unsigned long rulesMask, + AliasHandle inAlias, + short * aliasCount, + FSRef * aliasList, + Boolean * needsUpdate, + AliasFilterUPP aliasFilter, + void * yourDataPtr); + + +/* + * FSCopyAliasInfo() + * + * Discussion: + * This routine will return the requested information from the + * passed in aliasHandle. The information is gathered only from the + * alias record so it may not match what is on disk (no disk i/o is + * performed). The whichInfo paramter is an output parameter that + * signifies which fields in the info record contain valid data. + * + * Parameters: + * + * inAlias: + * A handle to the alias record to get the information from. + * + * targetName: + * The name of the target item. + * + * volumeName: + * The name of the volume the target resides on. + * + * pathString: + * POSIX path to target. + * + * whichInfo: + * An indication of which fields in the info block contain valid + * data. + * + * info: + * Returned information about the alias. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +FSCopyAliasInfo( + AliasHandle inAlias, + HFSUniStr255 * targetName, /* can be NULL */ + HFSUniStr255 * volumeName, /* can be NULL */ + CFStringRef * pathString, /* can be NULL */ + FSAliasInfoBitmap * whichInfo, /* can be NULL */ + FSAliasInfo * info); /* can be NULL */ + + + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __ALIASES__ */ + |