source-engine/common/quicktime_win32/Aliases.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

672 lines
20 KiB
C

/*
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__ */