[darwinbuild-changes] [582] trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Sep 29 15:46:12 PDT 2009
Revision: 582
http://trac.macosforge.org/projects/darwinbuild/changeset/582
Author: wsiegrist at apple.com
Date: 2009-09-29 15:46:10 -0700 (Tue, 29 Sep 2009)
Log Message:
-----------
Add src.macosforge.org patches to darwinbuild repo for better tracking
Added Paths:
-----------
trunk/patches/
trunk/patches/CarbonHeaders-18.1.ccdest.patch
trunk/patches/IOKitUser-502.nohidevent.patch
trunk/patches/PowerManagement-209.1.unused_symbols.patch
trunk/patches/SmartCardServices-34733.MacTypes.patch
trunk/patches/Tokend-35209.MacTypes.patch
trunk/patches/clamav-125.noupdate.patch
trunk/patches/launchd-258.22.CFNotification.patch
trunk/patches/ppp-412.xauthvendor.patch
trunk/patches/system_cmds-433.8.patch
Added: trunk/patches/CarbonHeaders-18.1.ccdest.patch
===================================================================
--- trunk/patches/CarbonHeaders-18.1.ccdest.patch (rev 0)
+++ trunk/patches/CarbonHeaders-18.1.ccdest.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,18940 @@
+diff -Nru ../CarbonHeaders-18.1.orig/Aliases.h ./Aliases.h
+--- ../CarbonHeaders-18.1.orig/Aliases.h 1969-12-31 16:00:00.000000000 -0800
++++ ./Aliases.h 2009-09-29 13:59:38.000000000 -0700
+@@ -0,0 +1,1233 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/Aliases.h
++
++ Contains: Alias Manager Interfaces.
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1989-2008 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 <CarbonCore/MacTypes.h>
++#endif
++
++#ifndef __FILES__
++#include <CarbonCore/Files.h>
++#endif
++
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++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 = '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 */
++};
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
++#define __AL_USE_OPAQUE_RECORD__ 1
++#else
++#define __AL_USE_OPAQUE_RECORD__ 0
++#endif
++/* define the alias record that will be the blackbox for the caller */
++#if __AL_USE_OPAQUE_RECORD__
++struct AliasRecord {
++ UInt8 hidden[6];
++};
++typedef struct AliasRecord AliasRecord;
++#else
++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;
++#endif /* __AL_USE_OPAQUE_RECORD__ */
++
++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;
++#if !__LP64__
++typedef CALLBACK_API( Boolean , AliasFilterProcPtr )(CInfoPBPtr cpbPtr, Boolean *quitFlag, Ptr myDataPtr);
++typedef STACK_UPP_TYPE(AliasFilterProcPtr) AliasFilterUPP;
++/*
++ * NewAliasFilterUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern AliasFilterUPP
++NewAliasFilterUPP(AliasFilterProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++/*
++ * DisposeAliasFilterUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposeAliasFilterUPP(AliasFilterUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++/*
++ * InvokeAliasFilterUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern Boolean
++InvokeAliasFilterUPP(
++ CInfoPBPtr cpbPtr,
++ Boolean * quitFlag,
++ Ptr myDataPtr,
++ AliasFilterUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++#if __MACH__
++ #ifdef __cplusplus
++ inline AliasFilterUPP NewAliasFilterUPP(AliasFilterProcPtr userRoutine) { return userRoutine; }
++ inline void DisposeAliasFilterUPP(AliasFilterUPP) { }
++ inline Boolean InvokeAliasFilterUPP(CInfoPBPtr cpbPtr, Boolean * quitFlag, Ptr myDataPtr, AliasFilterUPP userUPP) { return (*userUPP)(cpbPtr, quitFlag, myDataPtr); }
++ #else
++ #define NewAliasFilterUPP(userRoutine) ((AliasFilterUPP)userRoutine)
++ #define DisposeAliasFilterUPP(userUPP)
++ #define InvokeAliasFilterUPP(cpbPtr, quitFlag, myDataPtr, userUPP) (*userUPP)(cpbPtr, quitFlag, myDataPtr)
++ #endif
++#endif
++
++#endif /* !__LP64__ */
++
++typedef CALLBACK_API_C( Boolean , FSAliasFilterProcPtr )(const FSRef *ref, Boolean *quitFlag, Ptr myDataPtr);
++/*
++ * FSNewAlias()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSNewAlias(
++ const FSRef * fromFile, /* can be NULL */
++ const FSRef * target,
++ AliasHandle * inAlias) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FSNewAliasMinimal()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSNewAliasMinimal(
++ const FSRef * target,
++ AliasHandle * inAlias) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FSIsAliasFile()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSIsAliasFile(
++ const FSRef * fileRef,
++ Boolean * aliasFileFlag,
++ Boolean * folderFlag) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSResolveAliasWithMountFlags()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSResolveAliasWithMountFlags(
++ const FSRef * fromFile, /* can be NULL */
++ AliasHandle inAlias,
++ FSRef * target,
++ Boolean * wasChanged,
++ unsigned long mountFlags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSResolveAlias()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSResolveAlias(
++ const FSRef * fromFile, /* can be NULL */
++ AliasHandle alias,
++ FSRef * target,
++ Boolean * wasChanged) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSResolveAliasFileWithMountFlags()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSResolveAliasFileWithMountFlags(
++ FSRef * theRef,
++ Boolean resolveAliasChains,
++ Boolean * targetIsFolder,
++ Boolean * wasAliased,
++ unsigned long mountFlags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSResolveAliasFile()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSResolveAliasFile(
++ FSRef * theRef,
++ Boolean resolveAliasChains,
++ Boolean * targetIsFolder,
++ Boolean * wasAliased) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSFollowFinderAlias()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSFollowFinderAlias(
++ FSRef * fromFile, /* can be NULL */
++ AliasHandle alias,
++ Boolean logon,
++ FSRef * target,
++ Boolean * wasChanged) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FSUpdateAlias()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 9.1 and later
++ */
++extern OSErr
++FSUpdateAlias(
++ const FSRef * fromFile, /* can be NULL */
++ const FSRef * target,
++ AliasHandle alias,
++ Boolean * wasChanged) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * 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.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * 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, a flag indicating if the target is a directory. Pass
++ * NULL in the non-existant case if unsure.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++FSNewAliasUnicode(
++ const FSRef * fromFile, /* can be NULL */
++ const FSRef * targetParentRef,
++ UniCharCount targetNameLength,
++ const UniChar * targetName,
++ AliasHandle * inAlias,
++ Boolean * isDirectory) /* can be NULL */ AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * 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.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * 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 target is a directory. On output, if the target did
++ * exist, a flag indicating if the target is a directory. Pass
++ * NULL in the non-existant case if unsure.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++FSNewAliasMinimalUnicode(
++ const FSRef * targetParentRef,
++ UniCharCount targetNameLength,
++ const UniChar * targetName,
++ AliasHandle * inAlias,
++ Boolean * isDirectory) /* can be NULL */ AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSNewAliasFromPath()
++ *
++ * Summary:
++ * Creates an alias given a POSIX style utf-8 path to the target.
++ * If the target file does not exist but the path up to the leaf
++ * does then fnfErr will be returned but the alias will still be
++ * created.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * fromFilePath:
++ * The starting point for a relative search.
++ *
++ * targetPath:
++ * POSIX style UTF-8 path to target.
++ *
++ * flags:
++ * Options for future use. Pass in 0.
++ *
++ * 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, a flag indicating if the target is a directory. Pass
++ * NULL in the non-existant case if unsure.
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.5 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++FSNewAliasFromPath(
++ const char * fromFilePath, /* can be NULL */
++ const char * targetPath,
++ OptionBits flags,
++ AliasHandle * inAlias,
++ Boolean * isDirectory) /* can be NULL */ AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSMatchAliasBulk()
++ *
++ * Summary:
++ * Given an alias handle and fromFile, match the alias and return
++ * FSRefs to the aliased file(s) and needsUpdate flag
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++FSMatchAliasBulk(
++ const FSRef * fromFile, /* can be NULL */
++ unsigned long rulesMask,
++ AliasHandle inAlias,
++ short * aliasCount,
++ FSRef * aliasList,
++ Boolean * needsUpdate,
++ FSAliasFilterProcPtr aliasFilter, /* can be NULL */
++ void * yourDataPtr) /* can be NULL */ AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++
++/*
++ * 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.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * 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:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern 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 */ AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * GetAliasSize()
++ *
++ * Discussion:
++ * This routine will return the size of the alias record referenced
++ * by the AliasHandle alias. This will be smaller than the size
++ * returned by GetHandleSize if any custom data has been added (IM
++ * Files 4-13).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alias:
++ * A handle to the alias record to get the information from.
++ *
++ * Result:
++ * The size of the private section of the alias record.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern Size
++GetAliasSize(AliasHandle alias) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * GetAliasUserType()
++ *
++ * Discussion:
++ * This routine will return the usertype associated with the alias
++ * record referenced by the AliasHandle alias.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alias:
++ * A handle to the alias record to get the userType from.
++ *
++ * Result:
++ * The userType associated with the alias as an OSType
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSType
++GetAliasUserType(AliasHandle alias) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * SetAliasUserType()
++ *
++ * Discussion:
++ * This routine will set the userType associated with an alias
++ * record.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alias:
++ * A handle to the alias record to set the userType for.
++ *
++ * userType:
++ * The OSType to set the userType to.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++SetAliasUserType(
++ AliasHandle alias,
++ OSType userType) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * GetAliasSizeFromPtr()
++ *
++ * Discussion:
++ * This routine will return the size of the alias record referenced
++ * by a pointer to the AliasRecord.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alias:
++ * A pointer to the alias record to get the information from.
++ *
++ * Result:
++ * The size of the private section of the alias record.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern Size
++GetAliasSizeFromPtr(const AliasRecord * alias) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * GetAliasUserTypeFromPtr()
++ *
++ * Discussion:
++ * This routine will return the usertype associated withthe alias
++ * record pointed to by alias.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alias:
++ * A pointer to the alias record to get the userType from.
++ *
++ * Result:
++ * The userType associated with the alias as an OSType
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSType
++GetAliasUserTypeFromPtr(const AliasRecord * alias) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * SetAliasUserTypeWithPtr()
++ *
++ * Discussion:
++ * This routine will set the userType associated with an alias
++ * record.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alias:
++ * A pointer to the alias record to set the userType for.
++ *
++ * userType:
++ * The OSType to set the userType to.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern void
++SetAliasUserTypeWithPtr(
++ AliasPtr alias,
++ OSType userType) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/* Functions beyond this point are deprecated*/
++
++#if !__LP64__
++/*
++ * FSMatchAlias() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSMatchAliasBulk instead
++ *
++ * Summary:
++ * Given an alias handle and fromFile, match the alias and return
++ * FSRefs to the aliased file(s) and needsUpdate flag
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++FSMatchAlias(
++ const FSRef * fromFile, /* can be NULL */
++ unsigned long rulesMask,
++ AliasHandle inAlias,
++ short * aliasCount,
++ FSRef * aliasList,
++ Boolean * needsUpdate,
++ AliasFilterUPP aliasFilter,
++ void * yourDataPtr) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ * FSMatchAliasNoUI() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSMatchAliasBulk with the kARMNoUI flag instead
++ *
++ * Summary:
++ * variation on FSMatchAlias that does not prompt user with a dialog
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++FSMatchAliasNoUI(
++ const FSRef * fromFile, /* can be NULL */
++ unsigned long rulesMask,
++ AliasHandle inAlias,
++ short * aliasCount,
++ FSRef * aliasList,
++ Boolean * needsUpdate,
++ AliasFilterUPP aliasFilter,
++ void * yourDataPtr) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ * NewAlias() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSNewAlias
++ *
++ * Summary:
++ * create a new alias between fromFile and target, returns alias
++ * record handle
++ *
++ * Discussion:
++ * Create an alias betwen fromFile and target, and return it in an
++ * AliasHandle. This function is deprecated in Mac OS X 10.4;
++ * instead, you should use FSNewAliasUnicode() because NewAlias()
++ * has problems creating aliases to certain files, including those
++ * which are impossible to represent in an FSSpec.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++NewAlias(
++ const FSSpec * fromFile, /* can be NULL */
++ const FSSpec * target,
++ AliasHandle * alias) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * NewAliasMinimal() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSNewAliasMinimalUnicode
++ *
++ * Summary:
++ * create a minimal new alias for a target and return alias record
++ * handle
++ *
++ * Discussion:
++ * Create a minimal alias for a target, and return it in an
++ * AliasHandle. This function is deprecated in Mac OS X 10.4;
++ * instead, you should use FSNewAliasMinimalUnicode() because
++ * NewAliasMinimalAlias() has problems creating aliases to certain
++ * files, including those which are impossible to represent in an
++ * FSSpec.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++NewAliasMinimal(
++ const FSSpec * target,
++ AliasHandle * alias) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * NewAliasMinimalFromFullPath() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSNewAliasMinimalUnicode
++ *
++ * Summary:
++ * create a minimal new alias from a target fullpath (optional zone
++ * and server name) and return alias record handle
++ *
++ * Discussion:
++ * Create a minimal alias for a target fullpath, and return it in an
++ * AliasHandle. This function is deprecated in Mac OS X 10.4;
++ * instead, you should use FSNewAliasMinimalUnicode() because
++ * NewAliasMinimalFromFullPath() has problems creating aliases to
++ * certain files, including those which are impossible to represent
++ * in an FSSpec.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++NewAliasMinimalFromFullPath(
++ short fullPathLength,
++ const void * fullPath,
++ ConstStr32Param zoneName,
++ ConstStr31Param serverName,
++ AliasHandle * alias) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ResolveAlias() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSResolveAlias() or FSResolveAliasWithMountFlags() instead.
++ *
++ * Summary:
++ * given an alias handle and fromFile, resolve the alias, update the
++ * alias record and return aliased filename and wasChanged flag.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++ResolveAlias(
++ const FSSpec * fromFile, /* can be NULL */
++ AliasHandle alias,
++ FSSpec * target,
++ Boolean * wasChanged) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * GetAliasInfo() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSCopyAliasInfo instead.
++ *
++ * Summary:
++ * This call does not work on all aliases. Given an alias handle and
++ * an index specifying requested alias information type, return the
++ * information from alias record as a string. An empty string is
++ * returned when the index is greater than the number of levels
++ * between the target and root.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++GetAliasInfo(
++ AliasHandle alias,
++ AliasInfoType itemIndex,
++ Str63 theString) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++
++/*
++ * IsAliasFile() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSIsAliasFile() instead.
++ *
++ * Summary:
++ * Return true if the file pointed to by fileFSSpec is an alias file.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++IsAliasFile(
++ const FSSpec * fileFSSpec,
++ Boolean * aliasFileFlag,
++ Boolean * folderFlag) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ResolveAliasWithMountFlags() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSResolveAliasWithMountFlags() instead.
++ *
++ * Summary:
++ * Given an AliasHandle, return target file spec. 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.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++ResolveAliasWithMountFlags(
++ const FSSpec * fromFile, /* can be NULL */
++ AliasHandle alias,
++ FSSpec * target,
++ Boolean * wasChanged,
++ unsigned long mountFlags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ResolveAliasFile() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSResolveAliasFile
++ *
++ * 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.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++ResolveAliasFile(
++ FSSpec * theSpec,
++ Boolean resolveAliasChains,
++ Boolean * targetIsFolder,
++ Boolean * wasAliased) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* Deprecated: Use FSResolveAliasFileWithMountFlags instead*/
++/*
++ * ResolveAliasFileWithMountFlags() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++ResolveAliasFileWithMountFlags(
++ FSSpec * theSpec,
++ Boolean resolveAliasChains,
++ Boolean * targetIsFolder,
++ Boolean * wasAliased,
++ unsigned long mountFlags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* Deprecated: Use FSFollowFinderAlias instead*/
++/*
++ * FollowFinderAlias() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++FollowFinderAlias(
++ const FSSpec * fromFile, /* can be NULL */
++ AliasHandle alias,
++ Boolean logon,
++ FSSpec * target,
++ Boolean * wasChanged) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ Low Level Routines
++*/
++/*
++ * UpdateAlias() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * UseFSUpdateAlias
++ *
++ * 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.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++UpdateAlias(
++ const FSSpec * fromFile, /* can be NULL */
++ const FSSpec * target,
++ AliasHandle alias,
++ Boolean * wasChanged) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++/*
++ * MatchAlias() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSMatchAliasBulk instead
++ *
++ * Summary:
++ * Given an alias handle and fromFile, match the alias and return
++ * FSSpecs to the aliased file(s) and needsUpdate flag
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++MatchAlias(
++ const FSSpec * fromFile, /* can be NULL */
++ unsigned long rulesMask,
++ AliasHandle alias,
++ short * aliasCount,
++ FSSpecArrayPtr aliasList,
++ Boolean * needsUpdate,
++ AliasFilterUPP aliasFilter,
++ void * yourDataPtr) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++
++/*
++ * ResolveAliasFileWithMountFlagsNoUI() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSResolveAliasFileWithMountFlags passing in the
++ * kResolveAliasFileNoUI flag
++ *
++ * Summary:
++ * variation on ResolveAliasFile that does not prompt user with a
++ * dialog
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++ResolveAliasFileWithMountFlagsNoUI(
++ FSSpec * theSpec,
++ Boolean resolveAliasChains,
++ Boolean * targetIsFolder,
++ Boolean * wasAliased,
++ unsigned long mountFlags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * MatchAliasNoUI() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Use FSMatchAliasBulk with the kARMNoUI flag instead
++ *
++ * Summary:
++ * variation on MatchAlias that does not prompt user with a dialog
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++MatchAliasNoUI(
++ const FSSpec * fromFile, /* can be NULL */
++ unsigned long rulesMask,
++ AliasHandle alias,
++ short * aliasCount,
++ FSSpecArrayPtr aliasList,
++ Boolean * needsUpdate,
++ AliasFilterUPP aliasFilter,
++ void * yourDataPtr) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++
++#endif /* !__LP64__ */
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __ALIASES__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/ConditionalMacros.h ./ConditionalMacros.h
+--- ../CarbonHeaders-18.1.orig/ConditionalMacros.h 2009-09-29 13:46:25.000000000 -0700
++++ ./ConditionalMacros.h 2009-09-29 13:59:47.000000000 -0700
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1993-2008 by Apple Inc.. All rights reserved.
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+@@ -20,14 +20,15 @@
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+-
+ /*
+- File: ConditionalMacros.h
++ File: CarbonCore/ConditionalMacros.h
+
+ Contains: Set up for compiler independent conditionals
+
+- Version: CarbonCore-769~1
+-
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1993-2008 by Apple Computer, Inc., all rights reserved
++
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+@@ -135,7 +136,11 @@
+ #define TYPE_EXTENDED 0
+
+ #ifdef __ppc__
+- #define TYPE_LONGDOUBLE_IS_DOUBLE 1
++ #ifdef __LONG_DOUBLE_128__
++ #define TYPE_LONGDOUBLE_IS_DOUBLE 0
++ #else
++ #define TYPE_LONGDOUBLE_IS_DOUBLE 1
++ #endif
+ #else
+ #define TYPE_LONGDOUBLE_IS_DOUBLE 0
+ #endif
+@@ -152,7 +157,7 @@
+ #define FUNCTION_WIN32CC 0
+
+ #ifdef __MACOS_CLASSIC__
+- #ifndef TARGET_API_MAC_CARBON /* gcc cfm cross compiler assumes you're building Carbon code */
++ #ifndef TARGET_API_MAC_CARBON /* gcc cfm cross compiler assumes you're building Carbon code */
+ #define TARGET_API_MAC_CARBON 1
+ #endif
+ #endif
+diff -Nru ../CarbonHeaders-18.1.orig/DateTimeUtils.h ./DateTimeUtils.h
+--- ../CarbonHeaders-18.1.orig/DateTimeUtils.h 1969-12-31 16:00:00.000000000 -0800
++++ ./DateTimeUtils.h 2009-09-29 14:00:25.000000000 -0700
+@@ -0,0 +1,1016 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/DateTimeUtils.h
++
++ Contains: International Date and Time Interfaces (previously in TextUtils)
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1994-2008 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 __DATETIMEUTILS__
++#define __DATETIMEUTILS__
++
++#ifndef __CONDITIONALMACROS__
++#include <CarbonCore/ConditionalMacros.h>
++#endif
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++#ifndef __UTCUTILS__
++#include <CarbonCore/UTCUtils.h>
++#endif
++
++#ifndef __CFDATE__
++#include <CoreFoundation/CFDate.h>
++#endif
++
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++/*
++
++ Here are the current routine names and the translations to the older forms.
++ Please use the newer forms in all new code and migrate the older names out of existing
++ code as maintainance permits.
++
++ New Name Old Name(s)
++
++ DateString IUDatePString IUDateString
++ InitDateCache
++ LongDateString IULDateString
++ LongTimeString IULTimeString
++ StringToDate String2Date
++ StringToTime
++ TimeString IUTimeString IUTimePString
++ LongDateToSeconds LongDate2Secs
++ LongSecondsToDate LongSecs2Date
++ DateToSeconds Date2Secs
++ SecondsToDate Secs2Date
++
++
++ Carbon only supports the new names. The old names are undefined for Carbon targets.
++ This is true for C, Assembly and Pascal.
++
++ InterfaceLib always has exported the old names. For C macros have been defined to allow
++ the use of the new names. For Pascal and Assembly using the new names will result
++ in link errors.
++
++*/
++
++typedef SInt16 ToggleResults;
++enum {
++ /* Toggle results */
++ toggleUndefined = 0,
++ toggleOK = 1,
++ toggleBadField = 2,
++ toggleBadDelta = 3,
++ toggleBadChar = 4,
++ toggleUnknown = 5,
++ toggleBadNum = 6,
++ toggleOutOfRange = 7, /*synonym for toggleErr3*/
++ toggleErr3 = 7,
++ toggleErr4 = 8,
++ toggleErr5 = 9
++};
++
++enum {
++ /* Date equates */
++ smallDateBit = 31, /*Restrict valid date/time to range of Time global*/
++ togChar12HourBit = 30, /*If toggling hour by char, accept hours 1..12 only*/
++ togCharZCycleBit = 29, /*Modifier for togChar12HourBit: accept hours 0..11 only*/
++ togDelta12HourBit = 28, /*If toggling hour up/down, restrict to 12-hour range (am/pm)*/
++ genCdevRangeBit = 27, /*Restrict date/time to range used by genl CDEV*/
++ validDateFields = -1,
++ maxDateField = 10
++};
++
++enum {
++ eraMask = 0x0001,
++ yearMask = 0x0002,
++ monthMask = 0x0004,
++ dayMask = 0x0008,
++ hourMask = 0x0010,
++ minuteMask = 0x0020,
++ secondMask = 0x0040,
++ dayOfWeekMask = 0x0080,
++ dayOfYearMask = 0x0100,
++ weekOfYearMask = 0x0200,
++ pmMask = 0x0400,
++ dateStdMask = 0x007F /*default for ValidDate flags and ToggleDate TogglePB.togFlags*/
++};
++
++typedef SInt8 LongDateField;
++enum {
++ eraField = 0,
++ yearField = 1,
++ monthField = 2,
++ dayField = 3,
++ hourField = 4,
++ minuteField = 5,
++ secondField = 6,
++ dayOfWeekField = 7,
++ dayOfYearField = 8,
++ weekOfYearField = 9,
++ pmField = 10,
++ res1Field = 11,
++ res2Field = 12,
++ res3Field = 13
++};
++
++typedef SInt8 DateForm;
++enum {
++ shortDate = 0,
++ longDate = 1,
++ abbrevDate = 2
++};
++
++enum {
++ /* StringToDate status values */
++ fatalDateTime = 0x8000, /* StringToDate and String2Time mask to a fatal error */
++ longDateFound = 1, /* StringToDate mask to long date found */
++ leftOverChars = 2, /* StringToDate & Time mask to warn of left over characters */
++ sepNotIntlSep = 4, /* StringToDate & Time mask to warn of non-standard separators */
++ fieldOrderNotIntl = 8, /* StringToDate & Time mask to warn of non-standard field order */
++ extraneousStrings = 16, /* StringToDate & Time mask to warn of unparsable strings in text */
++ tooManySeps = 32, /* StringToDate & Time mask to warn of too many separators */
++ sepNotConsistent = 64, /* StringToDate & Time mask to warn of inconsistent separators */
++ tokenErr = 0x8100, /* StringToDate & Time mask for 'tokenizer err encountered' */
++ cantReadUtilities = 0x8200,
++ dateTimeNotFound = 0x8400,
++ dateTimeInvalid = 0x8800
++};
++
++typedef short StringToDateStatus;
++typedef StringToDateStatus String2DateStatus;
++struct DateCacheRecord {
++ short hidden[256]; /* only for temporary use */
++};
++typedef struct DateCacheRecord DateCacheRecord;
++typedef DateCacheRecord * DateCachePtr;
++struct DateTimeRec {
++ short year;
++ short month;
++ short day;
++ short hour;
++ short minute;
++ short second;
++ short dayOfWeek;
++};
++typedef struct DateTimeRec DateTimeRec;
++
++typedef SInt64 LongDateTime;
++#if TARGET_RT_BIG_ENDIAN
++union LongDateCvt {
++ SInt64 c;
++ struct {
++ UInt32 lHigh;
++ UInt32 lLow;
++ } hl;
++};
++typedef union LongDateCvt LongDateCvt;
++#else
++union LongDateCvt {
++ SInt64 c;
++ struct {
++ UInt32 lLow;
++ UInt32 lHigh;
++ } hl;
++};
++typedef union LongDateCvt LongDateCvt;
++#endif /* TARGET_RT_BIG_ENDIAN */
++
++union LongDateRec {
++ struct {
++ short era;
++ short year;
++ short month;
++ short day;
++ short hour;
++ short minute;
++ short second;
++ short dayOfWeek;
++ short dayOfYear;
++ short weekOfYear;
++ short pm;
++ short res1;
++ short res2;
++ short res3;
++ } ld;
++ short list[14]; /*Index by LongDateField!*/
++ struct {
++ short eraAlt;
++ DateTimeRec oldDate;
++ } od;
++};
++typedef union LongDateRec LongDateRec;
++
++typedef SInt8 DateDelta;
++struct TogglePB {
++ long togFlags; /*caller normally sets low word to dateStdMask=$7F*/
++ ResType amChars; /*from 'itl0', but uppercased*/
++ ResType pmChars; /*from 'itl0', but uppercased*/
++ long reserved[4];
++};
++typedef struct TogglePB TogglePB;
++/*
++ Conversion utilities between CF and Carbon time types.
++*/
++/*
++ * UCConvertUTCDateTimeToCFAbsoluteTime()
++ *
++ * Discussion:
++ * Use UCConvertUTCDateTimeToCFAbsoluteTime to convert from a
++ * UTCDDateTime to a CFAbsoluteTime. Remember that the epoch for
++ * UTCDateTime is January 1, 1904 while the epoch for CFAbsoluteTime
++ * is January 1, 2001.
++ *
++ * Parameters:
++ *
++ * iUTCDate:
++ * A pointer to a UTCDateTime struct that represents the time you
++ * wish to convert from.
++ *
++ * oCFTime:
++ * A pointer to a CFAbsoluteTime. On successful return, this will
++ * contain the converted time from the input time type.
++ *
++ * Result:
++ * A result code indicating whether or not conversion was successful.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++UCConvertUTCDateTimeToCFAbsoluteTime(
++ const UTCDateTime * iUTCDate,
++ CFAbsoluteTime * oCFTime) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * UCConvertSecondsToCFAbsoluteTime()
++ *
++ * Discussion:
++ * Use UCConvertSecondsToCFAbsoluteTime to convert from the normal
++ * seconds representation of time to a CFAbsoluteTime. Remember that
++ * the epoch for seconds is January 1, 1904 while the epoch for
++ * CFAbsoluteTime is January 1, 2001.
++ *
++ * Parameters:
++ *
++ * iSeconds:
++ * A UInt32 value that represents the time you wish to convert
++ * from.
++ *
++ * oCFTime:
++ * A pointer to a CFAbsoluteTime. On successful return, this will
++ * contain the converted time from the input time type.
++ *
++ * Result:
++ * A result code indicating whether or not conversion was successful.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++UCConvertSecondsToCFAbsoluteTime(
++ UInt32 iSeconds,
++ CFAbsoluteTime * oCFTime) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * UCConvertLongDateTimeToCFAbsoluteTime()
++ *
++ * Discussion:
++ * Use UCConvertLongDateTimeToCFAbsoluteTime to convert from a
++ * LongDateTime to a CFAbsoluteTime. Remember that the epoch for
++ * LongDateTime is January 1, 1904 while the epoch for
++ * CFAbsoluteTime is January 1, 2001.
++ *
++ * Parameters:
++ *
++ * iLongTime:
++ * A LongDateTime value that represents the time you wish to
++ * convert from.
++ *
++ * oCFTime:
++ * A pointer to a CFAbsoluteTime. On successful return, this will
++ * contain the converted time from the input time type.
++ *
++ * Result:
++ * A result code indicating whether or not conversion was successful.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++UCConvertLongDateTimeToCFAbsoluteTime(
++ LongDateTime iLongTime,
++ CFAbsoluteTime * oCFTime) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * UCConvertCFAbsoluteTimeToUTCDateTime()
++ *
++ * Discussion:
++ * Use UCConvertCFAbsoluteTimeToUTCDateTime to convert from a
++ * CFAbsoluteTime to a UTCDateTime. Remember that the epoch for
++ * UTCDateTime is January 1, 1904 while the epoch for CFAbsoluteTime
++ * is January 1, 2001.
++ *
++ * Parameters:
++ *
++ * iCFTime:
++ * A CFAbsoluteTime value that represents the time you wish to
++ * convert from.
++ *
++ * oUTCDate:
++ * A pointer to a UTCDateTime. On successful return, this will
++ * contain the converted time from the CFAbsoluteTime input.
++ *
++ * Result:
++ * A result code indicating whether or not conversion was successful.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++UCConvertCFAbsoluteTimeToUTCDateTime(
++ CFAbsoluteTime iCFTime,
++ UTCDateTime * oUTCDate) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * UCConvertCFAbsoluteTimeToSeconds()
++ *
++ * Discussion:
++ * Use UCConvertCFAbsoluteTimeToSeconds to convert from a
++ * CFAbsoluteTime to a UInt32 representation of seconds. Remember
++ * that the epoch for seconds is January 1, 1904 while the epoch for
++ * CFAbsoluteTime is January 1, 2001.
++ *
++ * Parameters:
++ *
++ * iCFTime:
++ * A CFAbsoluteTime value that represents the time you wish to
++ * convert from.
++ *
++ * oSeconds:
++ * A pointer to a UInt32. On successful return, this will contain
++ * the converted time from the CFAbsoluteTime input.
++ *
++ * Result:
++ * A result code indicating whether or not conversion was successful.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++UCConvertCFAbsoluteTimeToSeconds(
++ CFAbsoluteTime iCFTime,
++ UInt32 * oSeconds) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * UCConvertCFAbsoluteTimeToLongDateTime()
++ *
++ * Discussion:
++ * Use UCConvertCFAbsoluteTimeToLongDateTime to convert from a
++ * CFAbsoluteTime to a LongDateTime. Remember that the epoch for
++ * LongDateTime is January 1, 1904 while the epoch for
++ * CFAbsoluteTime is January 1, 2001.
++ *
++ * Parameters:
++ *
++ * iCFTime:
++ * A CFAbsoluteTime value that represents the time you wish to
++ * convert from.
++ *
++ * oLongDate:
++ * A pointer to a LongDateTime. On successful return, this will
++ * contain the converted time from the CFAbsoluteTime input.
++ *
++ * Result:
++ * A result code indicating whether or not conversion was successful.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++UCConvertCFAbsoluteTimeToLongDateTime(
++ CFAbsoluteTime iCFTime,
++ LongDateTime * oLongDate) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++#if !__LP64__
++/*
++ These routine are available in Carbon with their new name
++*/
++#if !__LP64__
++/*
++ * DateString() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFDateFormatterCreateStringWithDate instead
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFDateFormatterCreateStringWithDate instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++DateString(
++ SInt32 dateTime,
++ DateForm longFlag,
++ Str255 result,
++ Handle intlHandle) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * TimeString() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFDateFormatterCreateStringWithDate instead
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFDateFormatterCreateStringWithDate instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++TimeString(
++ SInt32 dateTime,
++ Boolean wantSeconds,
++ Str255 result,
++ Handle intlHandle) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * LongDateString() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFDateFormatterCreateStringWithDate instead
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFDateFormatterCreateStringWithDate instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++LongDateString(
++ const LongDateTime * dateTime,
++ DateForm longFlag,
++ Str255 result,
++ Handle intlHandle) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * LongTimeString() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFDateFormatterCreateStringWithDate instead
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFDateFormatterCreateStringWithDate instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++LongTimeString(
++ const LongDateTime * dateTime,
++ Boolean wantSeconds,
++ Str255 result,
++ Handle intlHandle) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++
++/*
++ These routine are available in Carbon and InterfaceLib with their new name
++*/
++/*
++ * InitDateCache() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * No longer needed on MacOS X.
++ *
++ * Discussion:
++ * This function is obsolate.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++InitDateCache(DateCachePtr theCache) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * StringToDate() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFDateFormatterCreateDateFromString instead
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFDateFormatterCreateDateFromString instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern StringToDateStatus
++StringToDate(
++ Ptr textPtr,
++ SInt32 textLen,
++ DateCachePtr theCache,
++ SInt32 * lengthUsed,
++ LongDateRec * dateTime) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * StringToTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFDateFormatterCreateDateFromString instead
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFDateFormatterCreateDateFromString instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern StringToDateStatus
++StringToTime(
++ Ptr textPtr,
++ SInt32 textLen,
++ DateCachePtr theCache,
++ SInt32 * lengthUsed,
++ LongDateRec * dateTime) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * LongDateToSeconds() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFCalendar instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use CFCalendar
++ * instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++LongDateToSeconds(
++ const LongDateRec * lDate,
++ LongDateTime * lSecs) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * LongSecondsToDate() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFCalendar instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use CFCalendar
++ * instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++LongSecondsToDate(
++ const LongDateTime * lSecs,
++ LongDateRec * lDate) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * ToggleDate() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFCalendar instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use CFCalendar
++ * instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern ToggleResults
++ToggleDate(
++ LongDateTime * lSecs,
++ LongDateField field,
++ DateDelta delta,
++ short ch,
++ const TogglePB * params) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * ValidDate() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFCalendar instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use CFCalendar
++ * instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern short
++ValidDate(
++ const LongDateRec * vDate,
++ long flags,
++ LongDateTime * newSecs) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * ReadDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFAbsoluteTimeGetCurrent instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFAbsoluteTimeGetCurrent instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++ReadDateTime(unsigned long * datetime) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * GetDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFAbsoluteTimeGetCurrent instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFAbsoluteTimeGetCurrent instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++GetDateTime(unsigned long * secs) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * SetDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * deprecated it without replacement
++ *
++ * Discussion:
++ * This function is no longer recommended. One has to be root on
++ * MacOSX to set. This is done through other means on OS X
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++SetDateTime(unsigned long datetime) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * SetTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * deprecated it without replacement
++ *
++ * Discussion:
++ * This function is no longer recommended. One has to be root on
++ * MacOSX to set. This is done through other means on OS X
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++SetTime(const DateTimeRec * d) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * GetTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFAbsoluteTimeGetCurrent instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFAbsoluteTimeGetCurrent instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++GetTime(DateTimeRec * d) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++#endif /* !__LP64__ */
++
++#if !__LP64__
++/*
++ * DateToSeconds() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFCalendar instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use CFCalendar
++ * instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++DateToSeconds(
++ const DateTimeRec * d,
++ unsigned long * secs) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++#endif /* !__LP64__ */
++
++#if !__LP64__
++/*
++ * SecondsToDate() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFCalendar instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use CFCalendar
++ * instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++SecondsToDate(
++ unsigned long secs,
++ DateTimeRec * d) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ These routine are available in InterfaceLib using their old name.
++ Macros allow using the new names in all source code.
++
++ @deprecated use CFDateFormatter instead.
++*/
++/*
++ * IUDateString() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: not available [32-bit only] but deprecated in 10.3
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * IUTimeString() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: not available [32-bit only] but deprecated in 10.3
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * IUDatePString() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: not available [32-bit only] but deprecated in 10.3
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * IUTimePString() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: not available [32-bit only] but deprecated in 10.3
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * IULDateString() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: not available [32-bit only] but deprecated in 10.3
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * IULTimeString() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: not available [32-bit only] but deprecated in 10.3
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++
++#endif /* !__LP64__ */
++
++#if CALL_NOT_IN_CARBON
++#define DateString(dateTime, longFlag, result, intlHandle) \
++ IUDatePString( dateTime, longFlag, result, intlHandle)
++#define TimeString(dateTime, wantSeconds, result, intlHandle) \
++ IUTimePString(dateTime, wantSeconds, result, intlHandle)
++#define LongDateString(dateTime, longFlag, result, intlHandle) \
++ IULDateString(dateTime, longFlag, result, intlHandle)
++#define LongTimeString(dateTime, wantSeconds, result, intlHandle) \
++ IULTimeString(dateTime, wantSeconds, result, intlHandle)
++#endif /* CALL_NOT_IN_CARBON */
++#if OLDROUTINENAMES
++#define String2Date(textPtr, textLen, theCache, lengthUsed, dateTime) \
++ StringToDate(textPtr, textLen, theCache, lengthUsed, dateTime)
++#define String2Time(textPtr, textLen, theCache, lengthUsed, dateTime) \
++ StringToTime(textPtr, textLen, theCache, lengthUsed, dateTime)
++#define LongDate2Secs(lDate, lSecs) LongDateToSeconds(lDate, lSecs)
++#define LongSecs2Date(lSecs, lDate) LongSecondsToDate(lSecs, lDate)
++#define Date2Secs(d, secs) DateToSeconds(d, secs)
++#define Secs2Date(secs, d) SecondsToDate(secs, d)
++#endif /* OLDROUTINENAMES */
++
++/*
++ * iudatestring()
++ *
++ * Availability:
++ * Mac OS X: not available
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * iudatepstring()
++ *
++ * Availability:
++ * Mac OS X: not available
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * iutimestring()
++ *
++ * Availability:
++ * Mac OS X: not available
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * iutimepstring()
++ *
++ * Availability:
++ * Mac OS X: not available
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * iuldatestring()
++ *
++ * Availability:
++ * Mac OS X: not available
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * iultimestring()
++ *
++ * Availability:
++ * Mac OS X: not available
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++#endif /* !__LP64__ */
++
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __DATETIMEUTILS__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/Files.h ./Files.h
+--- ../CarbonHeaders-18.1.orig/Files.h 1969-12-31 16:00:00.000000000 -0800
++++ ./Files.h 2009-09-29 14:00:41.000000000 -0700
+@@ -0,0 +1,10522 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/Files.h
++
++ Contains: File Manager Interfaces.
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1985-2008 Apple, Inc. All rights reserved
++
++ Bugs?: For bug reports, consult the following page on
++ the World Wide Web:
++
++ http://developer.apple.com/bugreporter/
++
++*/
++#ifndef __FILES__
++#define __FILES__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++#ifndef __MIXEDMODE__
++#include <CarbonCore/MixedMode.h>
++#endif
++
++#ifndef __OSUTILS__
++#include <CarbonCore/OSUtils.h>
++#endif
++
++#ifndef __TEXTCOMMON__
++#include <CarbonCore/TextCommon.h>
++#endif
++
++#ifndef __UTCUTILS__
++#include <CarbonCore/UTCUtils.h>
++#endif
++
++
++/* Finder constants were moved to Finder.\xC5 */
++#ifndef __FINDER__
++#include <CarbonCore/Finder.h>
++#endif
++
++
++#ifndef __CFURL__
++#include <CoreFoundation/CFURL.h>
++#endif
++
++#ifndef __CFRUNLOOP__
++#include <CoreFoundation/CFRunLoop.h>
++#endif
++
++#ifndef __CFUUID__
++#include <CoreFoundation/CFUUID.h>
++#endif
++
++
++#include <sys/types.h>
++#include <sys/fcntl.h>
++#include <sys/acl.h>
++#include <DiskArbitration/DADisk.h>
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++#ifndef _HFSUNISTR255_DEFINED_
++#define _HFSUNISTR255_DEFINED_
++/* HFSUniStr255 is the Unicode equivalent of Str255 */
++struct HFSUniStr255 {
++ UInt16 length; /* number of unicode characters */
++ UniChar unicode[255]; /* unicode characters */
++};
++typedef struct HFSUniStr255 HFSUniStr255;
++typedef const HFSUniStr255 * ConstHFSUniStr255Param;
++#endif
++#define kFSFileSecurityRemoveACL (acl_t) _FILESEC_REMOVE_ACL
++/*
++ File Permissions
++
++ Do not mix and match the following two sets of constants
++ see DTS Technote FL 37 "You Want Permission To Do What?!!"
++ <http://developer.apple.com/technotes/fl/fl_37.html>
++ for a detailed discussion of the two separate models
++ and how they are related.
++*/
++/* Permissions for File Manager routines which follow the original model */
++enum {
++ fsCurPerm = 0x00, /* open access permissions in ioPermssn */
++ fsRdPerm = 0x01,
++ fsWrPerm = 0x02,
++ fsRdWrPerm = 0x03,
++ fsRdWrShPerm = 0x04
++};
++
++/* Permissions for File Manager routines which follow the AFP model
++ that is, routines with "OpenDeny" in the name.
++
++ The most useful combinations of these are:
++ fsRdAccessPerm -> one writer, multiple readers: the readers
++ fsRdAccessPerm + fsWrAccessPerm + fsWrDenyPerm -> one writer, multiple readers: the writer
++ fsWrDenyPerm + fsRdAccessPerm -> multiple readers, no writers
++ fsRdAccessPerm + fsWrAccessPerm -> shared read/write access
++ fsRdAccessPerm + fsWrAccessPerm + fsRdDenyPerm + fsWrDenyPerm -> exclusive access
++*/
++enum {
++ fsRdAccessPerm = 0x01,
++ fsWrAccessPerm = 0x02,
++ fsRdDenyPerm = 0x10,
++ fsWrDenyPerm = 0x20
++};
++
++enum {
++ fsRtParID = 1,
++ fsRtDirID = 2
++};
++
++enum {
++ fsAtMark = 0, /* positioning modes in ioPosMode */
++ fsFromStart = 1,
++ fsFromLEOF = 2,
++ fsFromMark = 3
++};
++
++enum {
++ /* positionMode (ioPosMode) flags */
++ kFSAllowConcurrentAsyncIOBit = 3, /* allow concurrent execution of async calls */
++ kFSAllowConcurrentAsyncIOMask = 0x0008,
++ kFSPleaseCacheBit = 4, /* please cache this request */
++ kFSPleaseCacheMask = 0x0010,
++ kFSNoCacheBit = 5, /* please don't cache this request */
++ kFSNoCacheMask = 0x0020,
++ kFSRdVerifyBit = 6, /* read verify mode */
++ kFSRdVerifyMask = 0x0040,
++ kFSForceReadBit = 6,
++ kFSForceReadMask = 0x0040,
++ kFSNewLineBit = 7, /* newline mode */
++ kFSNewLineMask = 0x0080,
++ kFSNewLineCharMask = 0xFF00 /* newline character */
++};
++
++
++enum {
++ /* CatSearch Search bitmask Constants */
++ 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 {
++ /* CatSearch Search bit value Constants */
++ fsSBPartialNameBit = 0, /*ioFileName points to a substring*/
++ fsSBFullNameBit = 1, /*ioFileName points to a match string*/
++ fsSBFlAttribBit = 2, /*search includes file attributes*/
++ fsSBFlFndrInfoBit = 3, /*search includes finder info*/
++ fsSBFlLgLenBit = 5, /*search includes data logical length*/
++ fsSBFlPyLenBit = 6, /*search includes data physical length*/
++ fsSBFlRLgLenBit = 7, /*search includes resource logical length*/
++ fsSBFlRPyLenBit = 8, /*search includes resource physical length*/
++ fsSBFlCrDatBit = 9, /*search includes create date*/
++ fsSBFlMdDatBit = 10, /*search includes modification date*/
++ fsSBFlBkDatBit = 11, /*search includes backup date*/
++ fsSBFlXFndrInfoBit = 12, /*search includes extended finder info*/
++ fsSBFlParIDBit = 13, /*search includes file's parent ID*/
++ fsSBNegateBit = 14, /*return all non-matches*/
++ fsSBDrUsrWdsBit = 3, /*search includes directory finder info*/
++ fsSBDrNmFlsBit = 4, /*search includes directory valence*/
++ fsSBDrCrDatBit = 9, /*directory-named version of fsSBFlCrDatBit*/
++ fsSBDrMdDatBit = 10, /*directory-named version of fsSBFlMdDatBit*/
++ fsSBDrBkDatBit = 11, /*directory-named version of fsSBFlBkDatBit*/
++ fsSBDrFndrInfoBit = 12, /*directory-named version of fsSBFlXFndrInfoBit*/
++ fsSBDrParIDBit = 13, /*directory-named version of fsSBFlParIDBit*/
++ fsSBNodeIDBit = 15, /* search by range of nodeID */
++ fsSBAttributeModDateBit = 16, /* search by range of attributeModDate */
++ fsSBAccessDateBit = 17, /* search by range of accessDate [CatalogSearch only] */
++ fsSBPermissionsBit = 18, /* search by value/mask of permissions [CatalogSearch only] */
++ fsSBSkipPackageContentsBit = 19, /*do not return items inside of packages*/
++ fsSBSkipHiddenItemsBit = 20, /*do not return items with an invisible element in their path*/
++ fsSBUserIDBit = 21, /* search by userID in permissions field [CatalogSearch only] */
++ fsSBGroupIDBit = 22 /* search by groupID in permissions field [CatalogSearch only] */
++};
++
++enum {
++ /* vMAttrib (GetVolParms) bit position constants */
++ 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, /* asynchronous requests to this volume are handled correctly at any time*/
++ bSupportsTrashVolumeCache = 2
++};
++
++enum {
++ /* vMAttrib (GetVolParms) bit position constants */
++ bHasDirectIO = 1
++};
++
++enum {
++ /* vMExtendedAttributes (GetVolParms) bit position constants */
++ bIsEjectable = 0, /* volume is in an ejectable disk drive */
++ bSupportsHFSPlusAPIs = 1, /* volume supports HFS Plus APIs directly (not through compatibility layer) */
++ bSupportsFSCatalogSearch = 2, /* volume supports FSCatalogSearch */
++ bSupportsFSExchangeObjects = 3, /* volume supports FSExchangeObjects */
++ bSupports2TBFiles = 4, /* volume supports supports 2 terabyte files */
++ bSupportsLongNames = 5, /* volume supports file/directory/volume names longer than 31 characters */
++ bSupportsMultiScriptNames = 6, /* volume supports file/directory/volume names with characters from multiple script systems */
++ bSupportsNamedForks = 7, /* volume supports forks beyond the data and resource forks */
++ bSupportsSubtreeIterators = 8, /* volume supports recursive iterators not at the volume root */
++ bL2PCanMapFileBlocks = 9, /* volume supports Lg2Phys SPI correctly */
++ bParentModDateChanges = 10, /* Changing a file or folder causes its parent's mod date to change */
++ bAncestorModDateChanges = 11, /* Changing a file or folder causes all ancestor mod dates to change */
++ bSupportsSymbolicLinks = 13, /* volume supports the creation and use of symbolic links (Mac OS X only) */
++ bIsAutoMounted = 14, /* volume was mounted automatically (Mac OS X only) */
++ bAllowCDiDataHandler = 17, /* allow QuickTime's CDi data handler to examine this volume */
++ bSupportsExclusiveLocks = 18, /* volume supports exclusive opens for writing */
++ bSupportsJournaling = 19, /* volume supports journal (journal may not be active) */
++ bNoVolumeSizes = 20, /* volume is unable to report volume size or free space */
++ bIsOnInternalBus = 21, /* device is on an internal bus - see note below */
++ bIsCaseSensitive = 22, /* volume is case sensitive */
++ bIsCasePreserving = 23, /* volume is case preserving */
++ bDoNotDisplay = 24, /* volume should not be displayed in UI */
++ bIsRemovable = 25, /* device is removable according to IOKit */
++ bNoRootTimes = 26, /* volume does not set reliable times for its root directory */
++ bIsOnExternalBus = 27, /* device is on an external bus -- see note below */
++ bSupportsExtendedFileSecurity = 28 /* volume supports FSFileSecurity objects */
++};
++
++/* Note: A volume can return one of four states via the bIsInternal and bIsExternal bits. A volume known
++ to be on an internal bus will set bIsInternal and clear bIsExternal. A volume known to
++ be on an external bus will clear bIsInternal and set bIsExternal. A volume on a bus that
++ is indeterminate (could be either) will set both bits. A volume not on a local bus will, such
++ as a network volume, will leave both bits clear. */
++enum {
++ /* Large Volume Constants */
++ kWidePosOffsetBit = 8,
++ kUseWidePositioning = (1 << kWidePosOffsetBit),
++ kMaximumBlocksIn4GB = 0x007FFFFF
++};
++
++enum {
++ /* Foreign Privilege Model Identifiers */
++ fsUnixPriv = 1
++};
++
++enum {
++ /* Authentication Constants */
++ kNoUserAuthentication = 1,
++ kPassword = 2,
++ kEncryptPassword = 3,
++ kTwoWayEncryptPassword = 6
++};
++
++
++/* values of user IDs and group IDs */
++enum {
++ knoUser = 0,
++ kadministratorUser = 1
++};
++
++enum {
++ knoGroup = 0
++};
++
++
++typedef SInt16 FSVolumeRefNum;
++#if __LP64__
++typedef int FSIORefNum;
++#else
++typedef SInt16 FSIORefNum;
++#endif /* __LP64__ */
++
++enum {
++ kFSInvalidVolumeRefNum = 0
++};
++
++struct FSRef {
++ UInt8 hidden[80]; /* private to File Manager; \xA5\xA5 need symbolic constant */
++};
++typedef struct FSRef FSRef;
++typedef FSRef * FSRefPtr;
++typedef struct __FSFileSecurity* FSFileSecurityRef;
++/* Catalog position record */
++struct CatPositionRec {
++ SInt32 initialize;
++ SInt16 priv[6];
++};
++typedef struct CatPositionRec CatPositionRec;
++#if __LP64__
++struct FSSpec {
++ UInt8 hidden[70]; /* FSSpecs are invalid for 64 bit, but defined in case they appear in shared structs*/
++};
++typedef struct FSSpec FSSpec;
++#else
++struct FSSpec {
++ FSVolumeRefNum vRefNum;
++ SInt32 parID;
++ StrFileName name; /* a Str63 on MacOS*/
++};
++typedef struct FSSpec FSSpec;
++#endif /* __LP64__ */
++
++typedef FSSpec * FSSpecPtr;
++typedef FSSpecPtr * FSSpecHandle;
++/* pointer to array of FSSpecs */
++typedef FSSpecPtr FSSpecArrayPtr;
++/*
++ The only difference between "const FSSpec*" and "ConstFSSpecPtr" is
++ that as a parameter, ConstFSSpecPtr is allowed to be NULL
++*/
++typedef const FSSpec * ConstFSSpecPtr;
++typedef union ParamBlockRec ParamBlockRec;
++#if __LP64__
++typedef void * ParmBlkPtr;
++#else
++typedef ParamBlockRec * ParmBlkPtr;
++#endif /* __LP64__ */
++
++typedef CALLBACK_API( void , IOCompletionProcPtr )(ParmBlkPtr paramBlock);
++typedef STACK_UPP_TYPE(IOCompletionProcPtr) IOCompletionUPP;
++#if !__LP64__
++struct IOParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioRefNum; /*refNum for I/O operation*/
++ SInt8 ioVersNum; /*version number*/
++ SInt8 ioPermssn; /*Open: permissions (byte)*/
++ Ptr ioMisc; /*Rename: new name (GetEOF,SetEOF: logical end of file) (Open: optional ptr to buffer) (SetFileType: new type)*/
++ Ptr ioBuffer; /*data buffer Ptr*/
++ SInt32 ioReqCount; /*requested byte count; also = ioNewDirID*/
++ SInt32 ioActCount; /*actual byte count completed*/
++ SInt16 ioPosMode; /*initial file positioning*/
++ SInt32 ioPosOffset; /*file position offset*/
++};
++typedef struct IOParam IOParam;
++typedef IOParam * IOParamPtr;
++struct FileParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioFRefNum; /*reference number*/
++ SInt8 ioFVersNum; /*version number*/
++ SInt8 filler1;
++ SInt16 ioFDirIndex; /*GetFInfo directory index*/
++ SInt8 ioFlAttrib; /*GetFInfo: in-use bit=7, lock bit=0*/
++ SInt8 ioFlVersNum; /*file version number*/
++ FInfo ioFlFndrInfo; /*user info*/
++ UInt32 ioFlNum; /*GetFInfo: file number; TF- ioDirID*/
++ UInt16 ioFlStBlk; /*start file block (0 if none)*/
++ SInt32 ioFlLgLen; /*logical length (EOF)*/
++ SInt32 ioFlPyLen; /*physical length*/
++ UInt16 ioFlRStBlk; /*start block rsrc fork*/
++ SInt32 ioFlRLgLen; /*file logical length rsrc fork*/
++ SInt32 ioFlRPyLen; /*file physical length rsrc fork*/
++ UInt32 ioFlCrDat; /*file creation date& time (32 bits in secs)*/
++ UInt32 ioFlMdDat; /*last modified date and time*/
++};
++typedef struct FileParam FileParam;
++typedef FileParam * FileParamPtr;
++struct VolumeParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ UInt32 filler2;
++ SInt16 ioVolIndex; /*volume index number*/
++ UInt32 ioVCrDate; /*creation date and time*/
++ UInt32 ioVLsBkUp; /*last backup date and time*/
++ UInt16 ioVAtrb; /*volume attrib*/
++ UInt16 ioVNmFls; /*number of files in directory*/
++ UInt16 ioVDirSt; /*start block of file directory*/
++ SInt16 ioVBlLn; /*GetVolInfo: length of dir in blocks*/
++ UInt16 ioVNmAlBlks; /*for compatibilty ioVNmAlBlks * ioVAlBlkSiz <= 2 GB*/
++ UInt32 ioVAlBlkSiz; /*for compatibilty ioVAlBlkSiz is <= $0000FE00 (65,024)*/
++ UInt32 ioVClpSiz; /*GetVolInfo: bytes to allocate at a time*/
++ UInt16 ioAlBlSt; /*starting disk(512-byte) block in block map*/
++ UInt32 ioVNxtFNum; /*GetVolInfo: next free file number*/
++ UInt16 ioVFrBlk; /*GetVolInfo: # free alloc blks for this vol*/
++};
++typedef struct VolumeParam VolumeParam;
++typedef VolumeParam * VolumeParamPtr;
++struct CntrlParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioCRefNum; /*refNum for I/O operation*/
++ SInt16 csCode; /*word for control status code*/
++ SInt16 csParam[11]; /*operation-defined parameters*/
++};
++typedef struct CntrlParam CntrlParam;
++typedef CntrlParam * CntrlParamPtr;
++struct SlotDevParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioSRefNum;
++ SInt8 ioSVersNum;
++ SInt8 ioSPermssn;
++ Ptr ioSMix;
++ SInt16 ioSFlags;
++ SInt8 ioSlot;
++ SInt8 ioID;
++};
++typedef struct SlotDevParam SlotDevParam;
++typedef SlotDevParam * SlotDevParamPtr;
++struct MultiDevParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioMRefNum;
++ SInt8 ioMVersNum;
++ SInt8 ioMPermssn;
++ Ptr ioMMix;
++ SInt16 ioMFlags;
++ Ptr ioSEBlkPtr;
++};
++typedef struct MultiDevParam MultiDevParam;
++typedef MultiDevParam * MultiDevParamPtr;
++union ParamBlockRec {
++ IOParam ioParam;
++ FileParam fileParam;
++ VolumeParam volumeParam;
++ CntrlParam cntrlParam;
++ SlotDevParam slotDevParam;
++ MultiDevParam multiDevParam;
++};
++
++struct HFileInfo {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioFRefNum;
++ SInt8 ioFVersNum;
++ SInt8 filler1;
++ SInt16 ioFDirIndex;
++ SInt8 ioFlAttrib;
++ SInt8 ioACUser;
++ FInfo ioFlFndrInfo;
++ SInt32 ioDirID;
++ UInt16 ioFlStBlk;
++ SInt32 ioFlLgLen;
++ SInt32 ioFlPyLen;
++ UInt16 ioFlRStBlk;
++ SInt32 ioFlRLgLen;
++ SInt32 ioFlRPyLen;
++ UInt32 ioFlCrDat;
++ UInt32 ioFlMdDat;
++ UInt32 ioFlBkDat;
++ FXInfo ioFlXFndrInfo;
++ SInt32 ioFlParID;
++ SInt32 ioFlClpSiz;
++};
++typedef struct HFileInfo HFileInfo;
++struct DirInfo {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioFRefNum;
++ SInt8 ioFVersNum;
++ SInt8 filler1;
++ SInt16 ioFDirIndex;
++ SInt8 ioFlAttrib;
++ SInt8 ioACUser;
++ DInfo ioDrUsrWds;
++ SInt32 ioDrDirID;
++ UInt16 ioDrNmFls;
++ SInt16 filler3[9];
++ UInt32 ioDrCrDat;
++ UInt32 ioDrMdDat;
++ UInt32 ioDrBkDat;
++ DXInfo ioDrFndrInfo;
++ SInt32 ioDrParID;
++};
++typedef struct DirInfo DirInfo;
++union CInfoPBRec {
++ HFileInfo hFileInfo;
++ DirInfo dirInfo;
++};
++typedef union CInfoPBRec CInfoPBRec;
++typedef CInfoPBRec * CInfoPBPtr;
++struct XCInfoPBRec {
++ QElemPtr qLink;
++ SInt16 qType;
++ SInt16 ioTrap;
++ Ptr ioCmdAddr;
++ ProcPtr ioCompletion; /* --> A pointer to a completion routine */
++ volatile OSErr ioResult; /* --> The result code of the function */
++ StringPtr ioNamePtr; /* --> Pointer to pathname to object */
++ FSVolumeRefNum ioVRefNum; /* --> A volume specification */
++ SInt32 filler1;
++ StringPtr ioShortNamePtr; /* <-> A pointer to the short name string buffer - required! */
++ SInt16 filler2;
++ SInt16 ioPDType; /* <-- The ProDOS file type */
++ SInt32 ioPDAuxType; /* <-- The ProDOS aux type */
++ SInt32 filler3[2];
++ SInt32 ioDirID; /* --> A directory ID */
++};
++typedef struct XCInfoPBRec XCInfoPBRec;
++typedef XCInfoPBRec * XCInfoPBPtr;
++struct DTPBRec {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioDTRefNum; /* desktop refnum */
++ SInt16 ioIndex;
++ SInt32 ioTagInfo;
++ Ptr ioDTBuffer;
++ SInt32 ioDTReqCount;
++ SInt32 ioDTActCount;
++ SInt8 ioFiller1;
++ UInt8 ioIconType;
++ SInt16 ioFiller2;
++ SInt32 ioDirID;
++ OSType ioFileCreator;
++ OSType ioFileType;
++ SInt32 ioFiller3;
++ SInt32 ioDTLgLen;
++ SInt32 ioDTPyLen;
++ SInt16 ioFiller4[14];
++ SInt32 ioAPPLParID;
++};
++typedef struct DTPBRec DTPBRec;
++typedef DTPBRec * DTPBPtr;
++
++struct HIOParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioRefNum;
++ SInt8 ioVersNum;
++ SInt8 ioPermssn;
++ Ptr ioMisc;
++ Ptr ioBuffer;
++ SInt32 ioReqCount;
++ SInt32 ioActCount;
++ SInt16 ioPosMode;
++ SInt32 ioPosOffset;
++};
++typedef struct HIOParam HIOParam;
++typedef HIOParam * HIOParamPtr;
++struct HFileParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioFRefNum;
++ SInt8 ioFVersNum;
++ SInt8 filler1;
++ SInt16 ioFDirIndex;
++ SInt8 ioFlAttrib;
++ SInt8 ioFlVersNum;
++ FInfo ioFlFndrInfo;
++ SInt32 ioDirID;
++ UInt16 ioFlStBlk;
++ SInt32 ioFlLgLen;
++ SInt32 ioFlPyLen;
++ UInt16 ioFlRStBlk;
++ SInt32 ioFlRLgLen;
++ SInt32 ioFlRPyLen;
++ UInt32 ioFlCrDat;
++ UInt32 ioFlMdDat;
++};
++typedef struct HFileParam HFileParam;
++typedef HFileParam * HFileParamPtr;
++struct HVolumeParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt32 filler2;
++ SInt16 ioVolIndex;
++ UInt32 ioVCrDate;
++ UInt32 ioVLsMod;
++ SInt16 ioVAtrb;
++ UInt16 ioVNmFls;
++ UInt16 ioVBitMap;
++ UInt16 ioAllocPtr;
++ UInt16 ioVNmAlBlks;
++ UInt32 ioVAlBlkSiz;
++ UInt32 ioVClpSiz;
++ UInt16 ioAlBlSt;
++ UInt32 ioVNxtCNID;
++ UInt16 ioVFrBlk;
++ UInt16 ioVSigWord;
++ SInt16 ioVDrvInfo;
++ FSIORefNum ioVDRefNum;
++ SInt16 ioVFSID;
++ UInt32 ioVBkUp;
++ SInt16 ioVSeqNum;
++ UInt32 ioVWrCnt;
++ UInt32 ioVFilCnt;
++ UInt32 ioVDirCnt;
++ SInt32 ioVFndrInfo[8];
++};
++typedef struct HVolumeParam HVolumeParam;
++typedef HVolumeParam * HVolumeParamPtr;
++struct XIOParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioRefNum;
++ SInt8 ioVersNum;
++ SInt8 ioPermssn;
++ Ptr ioMisc;
++ Ptr ioBuffer;
++ SInt32 ioReqCount;
++ SInt32 ioActCount;
++ SInt16 ioPosMode; /* must have kUseWidePositioning bit set */
++ wide ioWPosOffset; /* wide positioning offset */
++};
++typedef struct XIOParam XIOParam;
++typedef XIOParam * XIOParamPtr;
++struct XVolumeParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ UInt32 ioXVersion; /* this XVolumeParam version (0) */
++ SInt16 ioVolIndex;
++ UInt32 ioVCrDate;
++ UInt32 ioVLsMod;
++ SInt16 ioVAtrb;
++ UInt16 ioVNmFls;
++ UInt16 ioVBitMap;
++ UInt16 ioAllocPtr;
++ UInt16 ioVNmAlBlks;
++ UInt32 ioVAlBlkSiz;
++ UInt32 ioVClpSiz;
++ UInt16 ioAlBlSt;
++ UInt32 ioVNxtCNID;
++ UInt16 ioVFrBlk;
++ UInt16 ioVSigWord;
++ SInt16 ioVDrvInfo;
++ SInt16 ioVDRefNum;
++ SInt16 ioVFSID;
++ UInt32 ioVBkUp;
++ SInt16 ioVSeqNum;
++ UInt32 ioVWrCnt;
++ UInt32 ioVFilCnt;
++ UInt32 ioVDirCnt;
++ SInt32 ioVFndrInfo[8];
++ UInt64 ioVTotalBytes; /* total number of bytes on volume */
++ UInt64 ioVFreeBytes; /* number of free bytes on volume */
++};
++typedef struct XVolumeParam XVolumeParam;
++typedef XVolumeParam * XVolumeParamPtr;
++struct AccessParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioRefNum; /* <- , ioRefNum ( use to be filler3 ) */
++ SInt16 ioDenyModes; /*access rights data*/
++ SInt16 filler4;
++ SInt8 filler5;
++ SInt8 ioACUser; /*access rights for directory only*/
++ SInt32 filler6;
++ SInt32 ioACOwnerID; /*owner ID*/
++ SInt32 ioACGroupID; /*group ID*/
++ SInt32 ioACAccess; /*access rights*/
++ SInt32 ioDirID;
++};
++typedef struct AccessParam AccessParam;
++typedef AccessParam * AccessParamPtr;
++struct ObjParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt16 filler7;
++ SInt16 ioObjType; /*function code*/
++ StringPtr ioObjNamePtr; /*ptr to returned creator/group name*/
++ SInt32 ioObjID; /*creator/group ID*/
++};
++typedef struct ObjParam ObjParam;
++typedef ObjParam * ObjParamPtr;
++struct CopyParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSVolumeRefNum ioDstVRefNum; /*destination vol identifier*/
++ SInt16 filler8;
++ StringPtr ioNewName; /*ptr to destination pathname*/
++ StringPtr ioCopyName; /*ptr to optional name*/
++ SInt32 ioNewDirID; /*destination directory ID*/
++ SInt32 filler14;
++ SInt32 filler15;
++ SInt32 ioDirID;
++};
++typedef struct CopyParam CopyParam;
++typedef CopyParam * CopyParamPtr;
++struct WDParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt16 ioWDCreated;
++ SInt16 ioWDIndex;
++ SInt32 ioWDProcID;
++ FSVolumeRefNum ioWDVRefNum;
++ SInt16 filler10;
++ SInt32 filler11;
++ SInt32 filler12;
++ SInt32 filler13;
++ SInt32 ioWDDirID;
++};
++typedef struct WDParam WDParam;
++typedef WDParam * WDParamPtr;
++struct FIDParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt32 filler14;
++ StringPtr ioDestNamePtr; /* dest file name */
++ SInt32 filler15;
++ SInt32 ioDestDirID; /* dest file's directory id */
++ SInt32 filler16;
++ SInt32 filler17;
++ SInt32 ioSrcDirID; /* source file's directory id */
++ SInt16 filler18;
++ SInt32 ioFileID; /* file ID */
++};
++typedef struct FIDParam FIDParam;
++typedef FIDParam * FIDParamPtr;
++struct ForeignPrivParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt32 ioFiller21;
++ SInt32 ioFiller22;
++ Ptr ioForeignPrivBuffer;
++ SInt32 ioForeignPrivActCount;
++ SInt32 ioForeignPrivReqCount;
++ SInt32 ioFiller23;
++ SInt32 ioForeignPrivDirID;
++ SInt32 ioForeignPrivInfo1;
++ SInt32 ioForeignPrivInfo2;
++ SInt32 ioForeignPrivInfo3;
++ SInt32 ioForeignPrivInfo4;
++};
++typedef struct ForeignPrivParam ForeignPrivParam;
++typedef ForeignPrivParam * ForeignPrivParamPtr;
++struct CSParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSSpecPtr ioMatchPtr; /* match array */
++ SInt32 ioReqMatchCount; /* maximum allowable matches */
++ SInt32 ioActMatchCount; /* actual match count */
++ SInt32 ioSearchBits; /* search criteria selector */
++ CInfoPBPtr ioSearchInfo1; /* search values and range lower bounds */
++ CInfoPBPtr ioSearchInfo2; /* search values and range upper bounds */
++ SInt32 ioSearchTime; /* length of time to run search */
++ CatPositionRec ioCatPosition; /* current position in the catalog */
++ Ptr ioOptBuffer; /* optional performance enhancement buffer */
++ SInt32 ioOptBufSize; /* size of buffer pointed to by ioOptBuffer */
++};
++typedef struct CSParam CSParam;
++typedef CSParam * CSParamPtr;
++union HParamBlockRec {
++ HIOParam ioParam;
++ HFileParam fileParam;
++ HVolumeParam volumeParam;
++ AccessParam accessParam;
++ ObjParam objParam;
++ CopyParam copyParam;
++ WDParam wdParam;
++ FIDParam fidParam;
++ CSParam csParam;
++ ForeignPrivParam foreignPrivParam;
++};
++typedef union HParamBlockRec HParamBlockRec;
++
++
++typedef HParamBlockRec * HParmBlkPtr;
++
++struct CMovePBRec {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt32 filler1;
++ StringPtr ioNewName;
++ SInt32 filler2;
++ SInt32 ioNewDirID;
++ SInt32 filler3[2];
++ SInt32 ioDirID;
++};
++typedef struct CMovePBRec CMovePBRec;
++typedef CMovePBRec * CMovePBPtr;
++struct WDPBRec {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ SInt16 filler1;
++ SInt16 ioWDIndex;
++ SInt32 ioWDProcID;
++ FSVolumeRefNum ioWDVRefNum;
++ SInt16 filler2[7];
++ SInt32 ioWDDirID;
++};
++typedef struct WDPBRec WDPBRec;
++typedef WDPBRec * WDPBPtr;
++struct FCBPBRec {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++ FSIORefNum ioRefNum;
++ SInt16 filler;
++ SInt16 ioFCBIndx;
++ SInt16 filler1;
++ SInt32 ioFCBFlNm;
++ SInt16 ioFCBFlags;
++ UInt16 ioFCBStBlk;
++ SInt32 ioFCBEOF;
++ SInt32 ioFCBPLen;
++ SInt32 ioFCBCrPs;
++ FSVolumeRefNum ioFCBVRefNum;
++ SInt32 ioFCBClpSiz;
++ SInt32 ioFCBParID;
++};
++typedef struct FCBPBRec FCBPBRec;
++typedef FCBPBRec * FCBPBPtr;
++struct VCB {
++ QElemPtr qLink;
++ SInt16 qType;
++ SInt16 vcbFlags;
++ UInt16 vcbSigWord;
++ UInt32 vcbCrDate;
++ UInt32 vcbLsMod;
++ SInt16 vcbAtrb;
++ UInt16 vcbNmFls;
++ SInt16 vcbVBMSt;
++ SInt16 vcbAllocPtr;
++ UInt16 vcbNmAlBlks;
++ SInt32 vcbAlBlkSiz;
++ SInt32 vcbClpSiz;
++ SInt16 vcbAlBlSt;
++ SInt32 vcbNxtCNID;
++ UInt16 vcbFreeBks;
++ Str27 vcbVN;
++ SInt16 vcbDrvNum;
++ FSIORefNum vcbDRefNum;
++ SInt16 vcbFSID;
++ FSVolumeRefNum vcbVRefNum;
++ Ptr vcbMAdr;
++ Ptr vcbBufAdr;
++ SInt16 vcbMLen;
++ SInt16 vcbDirIndex;
++ SInt16 vcbDirBlk;
++ UInt32 vcbVolBkUp;
++ UInt16 vcbVSeqNum;
++ SInt32 vcbWrCnt;
++ SInt32 vcbXTClpSiz;
++ SInt32 vcbCTClpSiz;
++ UInt16 vcbNmRtDirs;
++ SInt32 vcbFilCnt;
++ SInt32 vcbDirCnt;
++ SInt32 vcbFndrInfo[8];
++ UInt16 vcbVCSize;
++ UInt16 vcbVBMCSiz;
++ UInt16 vcbCtlCSiz;
++ UInt16 vcbXTAlBlks;
++ UInt16 vcbCTAlBlks;
++ SInt16 vcbXTRef;
++ SInt16 vcbCTRef;
++ Ptr vcbCtlBuf;
++ SInt32 vcbDirIDM;
++ SInt16 vcbOffsM;
++};
++typedef struct VCB VCB;
++typedef VCB * VCBPtr;
++struct DrvQEl {
++ QElemPtr qLink;
++ SInt16 qType;
++ SInt16 dQDrive;
++ SInt16 dQRefNum;
++ SInt16 dQFSID;
++ UInt16 dQDrvSz;
++ UInt16 dQDrvSz2;
++};
++typedef struct DrvQEl DrvQEl;
++typedef DrvQEl * DrvQElPtr;
++#endif /* !__LP64__ */
++
++
++/*
++ * FSPermissionInfo
++ *
++ * Discussion:
++ * This structure is used when kFSCatInfoPermissions is passed to
++ * the HFSPlus API. On return from GetCatalogInfo and
++ * GetCatalogInfoBulk, the userID, groupID, and mode fields are
++ * returned. When passed to SetCatalogInfo, only the mode field is
++ * set. See chmod(2) for details about the mode field. This is
++ * supported on Mac OS X only. NOTE: An FSFileSecurityRef retrieved
++ * via FSGetCatalogInfo is a copy and must be released using
++ * CFRelease() when no longer needed.
++ */
++struct FSPermissionInfo {
++ UInt32 userID;
++ UInt32 groupID;
++ UInt8 reserved1;
++ UInt8 userAccess;
++ UInt16 mode;
++ FSFileSecurityRef fileSec;
++};
++typedef struct FSPermissionInfo FSPermissionInfo;
++/* CatalogInfoBitmap describes which fields of the CatalogInfo you wish to get or set.*/
++
++typedef UInt32 FSCatalogInfoBitmap;
++enum {
++ kFSCatInfoNone = 0x00000000,
++ kFSCatInfoTextEncoding = 0x00000001,
++ kFSCatInfoNodeFlags = 0x00000002, /* Locked (bit 0) and directory (bit 4) only */
++ kFSCatInfoVolume = 0x00000004,
++ kFSCatInfoParentDirID = 0x00000008,
++ kFSCatInfoNodeID = 0x00000010,
++ kFSCatInfoCreateDate = 0x00000020,
++ kFSCatInfoContentMod = 0x00000040,
++ kFSCatInfoAttrMod = 0x00000080,
++ kFSCatInfoAccessDate = 0x00000100,
++ kFSCatInfoBackupDate = 0x00000200,
++ kFSCatInfoPermissions = 0x00000400,
++ kFSCatInfoFinderInfo = 0x00000800,
++ kFSCatInfoFinderXInfo = 0x00001000,
++ kFSCatInfoValence = 0x00002000, /* Folders only, zero for files */
++ kFSCatInfoDataSizes = 0x00004000, /* Data fork logical and physical size */
++ kFSCatInfoRsrcSizes = 0x00008000, /* Resource fork logical and physical size */
++ kFSCatInfoSharingFlags = 0x00010000, /* sharingFlags: kioFlAttribMountedBit, kioFlAttribSharePointBit */
++ kFSCatInfoUserPrivs = 0x00020000, /* userPrivileges */
++ kFSCatInfoUserAccess = 0x00080000, /* (OS X only) */
++ kFSCatInfoSetOwnership = 0x00100000, /* (OS X only) */
++ kFSCatInfoFSFileSecurityRef = 0x00400000, /* FSFileSecurity Object, will show up in the permissions field independent of kFSCatInfoPermissions. This is also not part of settable, gettable since it requires being released */
++ kFSCatInfoAllDates = 0x000003E0,
++ kFSCatInfoGettableInfo = 0x0003FFFF,
++ kFSCatInfoSettableInfo = 0x00001FE3, /* flags, dates, permissions, Finder info, text encoding */
++ kFSCatInfoReserved = (int)0xFFFC0000 /* bits that are currently reserved */
++};
++
++/* Constants for nodeFlags field of FSCatalogInfo */
++enum {
++ kFSNodeLockedBit = 0, /* Set if file or directory is locked */
++ kFSNodeLockedMask = 0x0001,
++ kFSNodeResOpenBit = 2, /* Set if the resource fork is open */
++ kFSNodeResOpenMask = 0x0004,
++ kFSNodeDataOpenBit = 3, /* Set if the data fork is open */
++ kFSNodeDataOpenMask = 0x0008,
++ kFSNodeIsDirectoryBit = 4, /* Set if the object is a directory */
++ kFSNodeIsDirectoryMask = 0x0010,
++ kFSNodeCopyProtectBit = 6,
++ kFSNodeCopyProtectMask = 0x0040,
++ kFSNodeForkOpenBit = 7, /* Set if the file or directory has any open fork */
++ kFSNodeForkOpenMask = 0x0080,
++ kFSNodeHardLinkBit = 8, /* Set if the file or directory has a link count > 1 */
++ kFSNodeHardLinkMask = 0x00000100
++};
++
++/* Constants for sharingFlags field of FSCatalogInfo */
++enum {
++ kFSNodeInSharedBit = 2, /* Set if a directory is within a share point */
++ kFSNodeInSharedMask = 0x0004,
++ kFSNodeIsMountedBit = 3, /* Set if a directory is a share point currently mounted by some user */
++ kFSNodeIsMountedMask = 0x0008,
++ kFSNodeIsSharePointBit = 5, /* Set if a directory is a share point (exported volume) */
++ kFSNodeIsSharePointMask = 0x0020
++};
++
++#ifdef __LP64__
++
++/*
++ * FSCatalogInfo
++ *
++ * Discussion:
++ * For each of the items in this structure, if the given bit is set
++ * in the whichInfo paramater to the FSGetCatalogInfo call then the
++ * field will be filled in on return. Some fields which are not
++ * asked for my be returned as well, but do not depend on this
++ * behaviour.
++ */
++struct FSCatalogInfo {
++
++ /*
++ * kFSCatInfoNodeFlags / flag bits set if the file is locked, open,
++ * is a directory, etc.
++ */
++ UInt16 nodeFlags; /* node flags */
++
++ /*
++ * kFSCatInfoVolume / the volume reference of the returned item
++ */
++ FSVolumeRefNum volume; /* object's volume ref */
++
++ /*
++ * kFSCatInfoParentDirID / the directory id of the parent of the
++ * returned item
++ */
++ UInt32 parentDirID; /* parent directory's ID */
++
++ /*
++ * kFSCatInfoNodeID / the file id of the returned item
++ */
++ UInt32 nodeID; /* file/directory ID */
++
++ /*
++ * kFSCatInfoSharingFlags / kioFlAttribMountedBit,
++ * kioFlAttribSharePointBit
++ */
++ UInt8 sharingFlags; /* kioFlAttribMountedBit and kioFlAttribSharePointBit */
++ UInt8 userPrivileges; /* user's effective AFP privileges (same as ioACUser) */
++ UInt8 reserved1;
++
++ /*
++ * Unused
++ */
++ UInt8 reserved2;
++
++ /*
++ * kFSCatInfoCreateDate / date and time of creation
++ */
++ UTCDateTime createDate; /* date and time of creation */
++
++ /*
++ * kFSCatInfoContentMod / date and time of last modification of the
++ * content of the returned item
++ */
++ UTCDateTime contentModDate; /* date and time of last fork modification */
++
++ /*
++ * kFSCatInfoAttrMod / date and time of the last modification of the
++ * attributes of the returned item
++ */
++ UTCDateTime attributeModDate; /* date and time of last attribute modification */
++
++ /*
++ * kFSCatInfoAccessDate / date and time of the last access to the
++ * returned item
++ */
++ UTCDateTime accessDate; /* date and time of last access (for Mac OS X) */
++
++ /*
++ * kFSCatInfoBackupDate / date and time of the last backup for the
++ * returned item
++ */
++ UTCDateTime backupDate; /* date and time of last backup */
++
++ /*
++ * kFSCatInfoPermissions / Mac OS X only, file system permissions of
++ * the returned item. Coerce to a FSPermissionInfo to use.
++ */
++ FSPermissionInfo permissions; /* permissions (for Mac OS X), as FSPermissionInfo */
++
++ /*
++ * kFSCatInfoFinderInfo / file type, creator, flags, location.
++ * Coerce to a File/FolderInfo to use.
++ */
++ UInt8 finderInfo[16]; /* Finder information part 1, as FileInfo or FolderInfo */
++
++ /*
++ * kFSCatInfoFinderXInfo / icon, script, et al. Coerce to a
++ * ExtendedFile/FolderInfo to use.
++ */
++ UInt8 extFinderInfo[16]; /* Finder information part 2, as ExtendedFileInfo or ExtendedFolderInfo */
++
++
++ /*
++ * kFSCatInfoDataSizes / the logical size of the data fork of the
++ * returned item if a file
++ */
++ UInt64 dataLogicalSize; /* files only */
++
++ /*
++ * kFSCatInfoDataSizes / the physical size of the data fork of the
++ * returned item if a file
++ */
++ UInt64 dataPhysicalSize; /* files only */
++
++ /*
++ * kFSCatInfoRsrcSizes / the logical size of the resource fork of the
++ * returned item if a file
++ */
++ UInt64 rsrcLogicalSize; /* files only */
++
++ /*
++ * kFSCatInfoRsrcSizes / the physical size of the resource fork of
++ * the returned item if a file
++ */
++ UInt64 rsrcPhysicalSize; /* files only */
++
++
++ /*
++ * kFSCatInfoValence / folders only, zero for files.
++ */
++ UInt32 valence; /* folders only */
++
++ /*
++ * kFSCatInfoTextEncoding / the text encoding hint for the returned
++ * item
++ */
++ TextEncoding textEncodingHint;
++};
++typedef struct FSCatalogInfo FSCatalogInfo;
++#else
++struct FSCatalogInfo {
++ UInt16 nodeFlags; /* node flags */
++ FSVolumeRefNum volume; /* object's volume ref */
++ UInt32 parentDirID; /* parent directory's ID */
++ UInt32 nodeID; /* file/directory ID */
++ UInt8 sharingFlags; /* kioFlAttribMountedBit and kioFlAttribSharePointBit */
++ UInt8 userPrivileges; /* user's effective AFP privileges (same as ioACUser) */
++ UInt8 reserved1;
++ UInt8 reserved2;
++ UTCDateTime createDate; /* date and time of creation */
++ UTCDateTime contentModDate; /* date and time of last fork modification */
++ UTCDateTime attributeModDate; /* date and time of last attribute modification */
++ UTCDateTime accessDate; /* date and time of last access (for Mac OS X) */
++ UTCDateTime backupDate; /* date and time of last backup */
++ UInt32 permissions[4]; /* permissions (for Mac OS X), as FSPermissionInfo */
++ UInt8 finderInfo[16]; /* Finder information part 1, as FileInfo or FolderInfo */
++ UInt8 extFinderInfo[16]; /* Finder information part 2, as ExtendedFileInfo or ExtendedFolderInfo */
++
++ UInt64 dataLogicalSize; /* files only */
++ UInt64 dataPhysicalSize; /* files only */
++ UInt64 rsrcLogicalSize; /* files only */
++ UInt64 rsrcPhysicalSize; /* files only */
++
++ UInt32 valence; /* folders only */
++ TextEncoding textEncodingHint;
++};
++typedef struct FSCatalogInfo FSCatalogInfo;
++#endif /* defined(__LP64__) */
++
++typedef FSCatalogInfo * FSCatalogInfoPtr;
++struct FSRefParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ ConstStringPtr ioNamePtr; /*ptr to Vol:FileName string*/
++ FSVolumeRefNum ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
++
++ SInt16 reserved1; /* was ioRefNum */
++ UInt8 reserved2; /* was ioVersNum */
++ UInt8 reserved3; /* was ioPermssn */
++
++ const FSRef * ref; /* Input ref; the target of the call */
++ FSCatalogInfoBitmap whichInfo;
++ FSCatalogInfo * catInfo;
++ UniCharCount nameLength; /* input name length for create/rename */
++ const UniChar * name; /* input name for create/rename */
++ UInt32 ioDirID;
++ FSSpecPtr spec;
++ FSRef * parentRef; /* ref of directory to move another ref to */
++ FSRef * newRef; /* Output ref */
++ TextEncoding textEncodingHint; /* for Rename, MakeFSRefUnicode */
++ HFSUniStr255 * outName; /* Output name for GetCatalogInfo */
++};
++typedef struct FSRefParam FSRefParam;
++typedef FSRefParam * FSRefParamPtr;
++/* for use with PBCreateFileAndOpenFork*/
++struct FSRefForkIOParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ const FSRef * parentRef; /* ref of directory to move another ref to */
++ UniCharCount nameLength; /* input name length for create/rename */
++ const UniChar * name; /* input name for create/rename */
++ FSCatalogInfoBitmap whichInfo;
++ const FSCatalogInfo * catInfo;
++ UniCharCount forkNameLength; /* input; length of fork name */
++ const UniChar * forkName; /* input; name of fork (NULL indicates data fork) */
++ SInt8 permissions; /* desired access to the fork */
++ UInt8 reserved1;
++ FSIORefNum forkRefNum; /* Output refNum of newly opened fork */
++ FSRef * newRef; /* Output ref */
++};
++typedef struct FSRefForkIOParam FSRefForkIOParam;
++typedef FSRefForkIOParam * FSRefForkIOParamPtr;
++typedef struct OpaqueFSIterator* FSIterator;
++enum {
++ kFSIterateFlat = 0, /* Immediate children of container only */
++ kFSIterateSubtree = 1, /* Entire subtree rooted at container */
++ kFSIterateDelete = 2,
++ kFSIterateReserved = (int)0xFFFFFFFC
++};
++
++typedef OptionBits FSIteratorFlags;
++struct FSSearchParams {
++ Duration searchTime; /* a Time Manager duration */
++ OptionBits searchBits; /* which fields to search on */
++ UniCharCount searchNameLength;
++ const UniChar * searchName;
++ FSCatalogInfo * searchInfo1; /* values and lower bounds */
++ FSCatalogInfo * searchInfo2; /* masks and upper bounds */
++};
++typedef struct FSSearchParams FSSearchParams;
++typedef FSSearchParams * FSSearchParamsPtr;
++struct FSCatalogBulkParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ Boolean containerChanged; /* true if container changed since last iteration */
++ UInt8 reserved; /* make following fields 4-byte aligned */
++
++ FSIteratorFlags iteratorFlags;
++ FSIterator iterator;
++ const FSRef * container; /* directory/volume to iterate */
++ ItemCount maximumItems;
++ ItemCount actualItems;
++ FSCatalogInfoBitmap whichInfo;
++ FSCatalogInfo * catalogInfo; /* returns an array */
++ FSRef * refs; /* returns an array */
++ FSSpecPtr specs; /* returns an array */
++ HFSUniStr255 * names; /* returns an array */
++ const FSSearchParams * searchParams;
++};
++typedef struct FSCatalogBulkParam FSCatalogBulkParam;
++typedef FSCatalogBulkParam * FSCatalogBulkParamPtr;
++typedef UInt16 FSAllocationFlags;
++enum {
++ kFSAllocDefaultFlags = 0x0000, /* as much as possible, not contiguous */
++ kFSAllocAllOrNothingMask = 0x0001, /* allocate all of the space, or nothing */
++ kFSAllocContiguousMask = 0x0002, /* new space must be one contiguous piece */
++ kFSAllocNoRoundUpMask = 0x0004, /* don't round up allocation to clump size */
++ kFSAllocReservedMask = 0xFFF8 /* these bits are reserved and must not be set */
++};
++
++struct FSForkIOParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ void * reserved1; /* was ioNamePtr */
++ SInt16 reserved2; /* was ioVRefNum */
++ FSIORefNum forkRefNum; /* same as ioRefNum */
++ UInt8 reserved3; /* was ioVersNum */
++ SInt8 permissions; /* desired access to the fork */
++ const FSRef * ref; /* which object to open */
++
++
++ Ptr buffer; /*data buffer Ptr*/
++ UInt32 requestCount; /*requested byte count*/
++ UInt32 actualCount; /*actual byte count completed*/
++ UInt16 positionMode; /*initial file positioning*/
++ SInt64 positionOffset; /*file position offset*/
++
++ FSAllocationFlags allocationFlags;
++ UInt64 allocationAmount;
++
++ UniCharCount forkNameLength; /* input; length of fork name */
++ const UniChar * forkName; /* input; name of fork */
++
++ CatPositionRec forkIterator;
++ HFSUniStr255 * outForkName; /* output; name of fork */
++};
++typedef struct FSForkIOParam FSForkIOParam;
++typedef FSForkIOParam * FSForkIOParamPtr;
++typedef UInt8 FSForkInfoFlags;
++struct FSForkInfo {
++ FSForkInfoFlags flags; /* copy of FCB flags */
++ SInt8 permissions;
++ FSVolumeRefNum volume;
++ UInt32 reserved2;
++ UInt32 nodeID; /* file or directory ID */
++ UInt32 forkID; /* fork ID */
++ UInt64 currentPosition;
++ UInt64 logicalEOF;
++ UInt64 physicalEOF;
++ UInt64 process; /* should be ProcessSerialNumber */
++};
++typedef struct FSForkInfo FSForkInfo;
++typedef FSForkInfo * FSForkInfoPtr;
++struct FSForkCBInfoParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ FSIORefNum desiredRefNum; /* 0 to iterate, non-0 for specific refnum */
++ FSVolumeRefNum volumeRefNum; /* volume to match, or 0 for all volumes */
++ FSIORefNum iterator; /* 0 to start iteration */
++ FSVolumeRefNum actualRefNum; /* actual refnum found */
++
++ FSRef * ref;
++ FSForkInfo * forkInfo;
++ HFSUniStr255 * forkName;
++};
++typedef struct FSForkCBInfoParam FSForkCBInfoParam;
++typedef FSForkCBInfoParam * FSForkCBInfoParamPtr;
++/* Parameter block for use with 64 bit range lock calls.*/
++struct FSRangeLockParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ FSIORefNum forkRefNum; /* fork to operate on */
++ UInt64 requestCount; /*requested byte count*/
++ UInt16 positionMode; /*initial file positioning*/
++ SInt64 positionOffset; /*file position offset*/
++ UInt64 rangeStart; /* byte number of first byte (un)locked */
++
++};
++typedef struct FSRangeLockParam FSRangeLockParam;
++typedef FSRangeLockParam * FSRangeLockParamPtr;
++typedef UInt32 FSVolumeInfoBitmap;
++enum {
++ kFSVolInfoNone = 0x0000,
++ kFSVolInfoCreateDate = 0x0001,
++ kFSVolInfoModDate = 0x0002,
++ kFSVolInfoBackupDate = 0x0004,
++ kFSVolInfoCheckedDate = 0x0008,
++ kFSVolInfoFileCount = 0x0010,
++ kFSVolInfoDirCount = 0x0020,
++ kFSVolInfoSizes = 0x0040, /* totalBytes and freeBytes */
++ kFSVolInfoBlocks = 0x0080, /* blockSize, totalBlocks, freeBlocks */
++ kFSVolInfoNextAlloc = 0x0100,
++ kFSVolInfoRsrcClump = 0x0200,
++ kFSVolInfoDataClump = 0x0400,
++ kFSVolInfoNextID = 0x0800,
++ kFSVolInfoFinderInfo = 0x1000,
++ kFSVolInfoFlags = 0x2000,
++ kFSVolInfoFSInfo = 0x4000, /* filesystemID, signature */
++ kFSVolInfoDriveInfo = 0x8000, /* driveNumber, driverRefNum */
++ kFSVolInfoGettableInfo = 0xFFFF, /* This seems like it is here just for completeness */
++ kFSVolInfoSettableInfo = 0x3004 /* backup date, Finder info, flags */
++};
++
++/* FSVolumeInfo.flags bits. These are the same as for ioVAtrb, but with nicer names. */
++enum {
++ kFSVolFlagDefaultVolumeBit = 5, /* Set if the volume is the default volume */
++ kFSVolFlagDefaultVolumeMask = 0x0020,
++ kFSVolFlagFilesOpenBit = 6, /* Set if there are open files or iterators */
++ kFSVolFlagFilesOpenMask = 0x0040,
++ kFSVolFlagHardwareLockedBit = 7, /* Set if volume is locked by a hardware setting */
++ kFSVolFlagHardwareLockedMask = 0x0080,
++ kFSVolFlagJournalingActiveBit = 14, /* Set if journaling is active on volume */
++ kFSVolFlagJournalingActiveMask = 0x4000,
++ kFSVolFlagSoftwareLockedBit = 15, /* Set if volume is locked by software */
++ kFSVolFlagSoftwareLockedMask = 0x8000
++};
++
++
++struct FSVolumeInfo {
++ /* Dates -- zero means "never" or "unknown" */
++ UTCDateTime createDate;
++ UTCDateTime modifyDate;
++ UTCDateTime backupDate;
++ UTCDateTime checkedDate;
++
++ /* File/Folder counts -- return zero if unknown */
++ UInt32 fileCount; /* total files on volume */
++ UInt32 folderCount; /* total folders on volume */
++ /* Note: no root directory counts */
++
++ UInt64 totalBytes; /* total number of bytes on volume */
++ UInt64 freeBytes; /* number of free bytes on volume */
++
++ /* HFS and HFS Plus specific. Set fields to zero if not appropriate */
++ UInt32 blockSize; /* size (in bytes) of allocation blocks */
++ UInt32 totalBlocks; /* number of allocation blocks in volume */
++ UInt32 freeBlocks; /* number of unused allocation blocks */
++ UInt32 nextAllocation; /* start of next allocation search */
++ UInt32 rsrcClumpSize; /* default resource fork clump size */
++ UInt32 dataClumpSize; /* default data fork clump size */
++ UInt32 nextCatalogID; /* next unused catalog node ID \xA5\xA5\xA5 OYG \xA5\xA5\xA5 need to make HFSVolumes.h work Should be HFSCatalogNodeID*/
++ UInt8 finderInfo[32]; /* information used by Finder */
++
++ /* Identifying information */
++ UInt16 flags; /* ioVAtrb */
++ UInt16 filesystemID; /* ioVFSID */
++ UInt16 signature; /* ioVSigWord, unique within an FSID */
++ UInt16 driveNumber; /* ioVDrvInfo */
++ FSIORefNum driverRefNum; /* ioVDRefNum */
++};
++typedef struct FSVolumeInfo FSVolumeInfo;
++typedef FSVolumeInfo * FSVolumeInfoPtr;
++struct FSVolumeInfoParam {
++ QElemPtr qLink; /*queue link in header*/
++ SInt16 qType; /*type byte for safety check*/
++ SInt16 ioTrap; /*FS: the Trap*/
++ Ptr ioCmdAddr; /*FS: address to dispatch to*/
++ IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
++ volatile OSErr ioResult; /*result code*/
++ StringPtr ioNamePtr; /* unused */
++ FSVolumeRefNum ioVRefNum; /* volume refnum */
++
++ UInt32 volumeIndex; /* index, or 0 to use ioVRefNum */
++ FSVolumeInfoBitmap whichInfo; /* which volumeInfo fields to get/set */
++ FSVolumeInfo * volumeInfo; /* information about the volume */
++ HFSUniStr255 * volumeName; /* output; pointer to volume name */
++ FSRef * ref; /* volume's FSRef */
++};
++typedef struct FSVolumeInfoParam FSVolumeInfoParam;
++typedef FSVolumeInfoParam * FSVolumeInfoParamPtr;
++struct GetVolParmsInfoBuffer {
++ SInt16 vMVersion; /*version number*/
++ SInt32 vMAttrib; /*bit vector of attributes (see vMAttrib constants)*/
++ Handle vMLocalHand; /*handle to private data*/
++ SInt32 vMServerAdr; /*AppleTalk server address or zero*/
++ /* vMVersion 1 GetVolParmsInfoBuffer ends here */
++ SInt32 vMVolumeGrade; /*approx. speed rating or zero if unrated*/
++ SInt16 vMForeignPrivID; /*foreign privilege model supported or zero if none*/
++ /* vMVersion 2 GetVolParmsInfoBuffer ends here */
++ SInt32 vMExtendedAttributes; /*extended attribute bits (see vMExtendedAttributes constants)*/
++ /* vMVersion 3 GetVolParmsInfoBuffer ends here */
++ void * vMDeviceID; /* device id name for interoperability with IOKit */
++ /* vMVersion 4 GetVolParmsInfoBuffer ends here */
++ UniCharCount vMMaxNameLength;
++ /* vMVersion 5 GetVolParmsInfoBuffer ends here */
++};
++typedef struct GetVolParmsInfoBuffer GetVolParmsInfoBuffer;
++/*
++ The following are structures to be filled out with the _PBGetVolMountInfo call
++ and passed back into the _PBVolumeMount call for external file system mounts.
++*/
++/* the "signature" of the file system */
++
++typedef OSType VolumeType;
++enum {
++ /* the signature for AppleShare */
++ AppleShareMediaType = 'afpm'
++};
++
++/*
++ VolMount stuff was once in FSM.\xC5
++*/
++struct VolMountInfoHeader {
++ SInt16 length; /* length of location data (including self) */
++ VolumeType media; /* type of media. Variable length data follows */
++};
++typedef struct VolMountInfoHeader VolMountInfoHeader;
++typedef VolMountInfoHeader * VolMountInfoPtr;
++/* The new volume mount info record. The old one is included for compatibility.
++ the new record allows access by foriegn filesystems writers to the flags
++ portion of the record. This portion is now public.
++*/
++struct VolumeMountInfoHeader {
++ SInt16 length; /* length of location data (including self) */
++ VolumeType media; /* type of media (must be registered with Apple) */
++ SInt16 flags; /* volume mount flags. Variable length data follows */
++};
++typedef struct VolumeMountInfoHeader VolumeMountInfoHeader;
++typedef VolumeMountInfoHeader * VolumeMountInfoHeaderPtr;
++/* volume mount flags */
++enum {
++ volMountNoLoginMsgFlagBit = 0, /* Input to VolumeMount: If set, the file system */
++ volMountNoLoginMsgFlagMask = 0x0001, /* should suppresss any log-in message/greeting dialog */
++ volMountExtendedFlagsBit = 7, /* Input to VolumeMount: If set, the mount info is a */
++ volMountExtendedFlagsMask = 0x0080, /* AFPXVolMountInfo record for 3.7 AppleShare Client */
++ volMountInteractBit = 15, /* Input to VolumeMount: If set, it's OK for the file system */
++ volMountInteractMask = 0x8000, /* to perform user interaction to mount the volume */
++ volMountChangedBit = 14, /* Output from VoumeMount: If set, the volume was mounted, but */
++ volMountChangedMask = 0x4000, /* the volume mounting information record needs to be updated. */
++ volMountFSReservedMask = 0x00FF, /* bits 0-7 are defined by each file system for its own use */
++ volMountSysReservedMask = 0xFF00 /* bits 8-15 are reserved for Apple system use */
++};
++
++
++
++struct AFPVolMountInfo {
++ SInt16 length; /* length of location data (including self) */
++ VolumeType media; /* type of media */
++ SInt16 flags; /* bits for no messages, no reconnect */
++ SInt8 nbpInterval; /* NBP Interval parameter (IM2, p.322) */
++ SInt8 nbpCount; /* NBP Interval parameter (IM2, p.322) */
++ SInt16 uamType; /* User Authentication Method */
++ SInt16 zoneNameOffset; /* short positive offset from start of struct to Zone Name */
++ SInt16 serverNameOffset; /* offset to pascal Server Name string */
++ SInt16 volNameOffset; /* offset to pascal Volume Name string */
++ SInt16 userNameOffset; /* offset to pascal User Name string */
++ SInt16 userPasswordOffset; /* offset to pascal User Password string */
++ SInt16 volPasswordOffset; /* offset to pascal Volume Password string */
++ char AFPData[144]; /* variable length data may follow */
++};
++typedef struct AFPVolMountInfo AFPVolMountInfo;
++typedef AFPVolMountInfo * AFPVolMountInfoPtr;
++
++
++/* AFPXVolMountInfo is the new AFP volume mount info record, requires the 3.7 AppleShare Client */
++struct AFPXVolMountInfo {
++ SInt16 length; /* length of location data (including self) */
++ VolumeType media; /* type of media */
++ SInt16 flags; /* bits for no messages, no reconnect */
++ SInt8 nbpInterval; /* NBP Interval parameter (IM2, p.322) */
++ SInt8 nbpCount; /* NBP Interval parameter (IM2, p.322) */
++ SInt16 uamType; /* User Authentication Method type */
++ SInt16 zoneNameOffset; /* short positive offset from start of struct to Zone Name */
++ SInt16 serverNameOffset; /* offset to pascal Server Name string */
++ SInt16 volNameOffset; /* offset to pascal Volume Name string */
++ SInt16 userNameOffset; /* offset to pascal User Name string */
++ SInt16 userPasswordOffset; /* offset to pascal User Password string */
++ SInt16 volPasswordOffset; /* offset to pascal Volume Password string */
++ SInt16 extendedFlags; /* extended flags word */
++ SInt16 uamNameOffset; /* offset to a pascal UAM name string */
++ SInt16 alternateAddressOffset; /* offset to Alternate Addresses in tagged format */
++ char AFPData[176]; /* variable length data may follow */
++};
++typedef struct AFPXVolMountInfo AFPXVolMountInfo;
++typedef AFPXVolMountInfo * AFPXVolMountInfoPtr;
++enum {
++ kAFPExtendedFlagsAlternateAddressMask = 1 /* bit in AFPXVolMountInfo.extendedFlags that means alternateAddressOffset is used*/
++};
++
++
++enum {
++ /* constants for use in AFPTagData.fType field*/
++ kAFPTagTypeIP = 0x01, /* 4 byte IP address (MSB first) */
++ kAFPTagTypeIPPort = 0x02, /* 4 byte IP address, 2 byte port (MSB first) */
++ kAFPTagTypeDDP = 0x03, /* Net,Node,Socket Sent by the server, currently unused by the client */
++ kAFPTagTypeDNS = 0x04 /* DNS name in address:port format (total length variable up to 254 chars of dns name) */
++};
++
++
++enum {
++ /* constants for use in AFPTagData.fLength field*/
++ kAFPTagLengthIP = 0x06,
++ kAFPTagLengthIPPort = 0x08,
++ kAFPTagLengthDDP = 0x06
++};
++
++struct AFPTagData {
++ UInt8 fLength; /* length of this data tag including the fLength field */
++ UInt8 fType;
++ UInt8 fData[1]; /* variable length data */
++};
++typedef struct AFPTagData AFPTagData;
++struct AFPAlternateAddress {
++ /* \xA5\xA5\xA5\xCANOTE: fVersion was missing in 3.2 Universal Interfaces*/
++ UInt8 fVersion; /* version of the structure (currently 0x00)*/
++ UInt8 fAddressCount;
++ UInt8 fAddressList[1]; /* actually variable length packed set of AFPTagData */
++};
++typedef struct AFPAlternateAddress AFPAlternateAddress;
++enum {
++ kLargeIconSize = 256,
++ kLarge4BitIconSize = 512,
++ kLarge8BitIconSize = 1024,
++ kSmallIconSize = 64,
++ kSmall4BitIconSize = 128,
++ kSmall8BitIconSize = 256
++};
++
++/*
++ * NewIOCompletionUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern IOCompletionUPP
++NewIOCompletionUPP(IOCompletionProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++/*
++ * DisposeIOCompletionUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposeIOCompletionUPP(IOCompletionUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++/*
++ * InvokeIOCompletionUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++InvokeIOCompletionUPP(
++ ParmBlkPtr paramBlock,
++ IOCompletionUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++#if __MACH__
++ #ifdef __cplusplus
++ inline IOCompletionUPP NewIOCompletionUPP(IOCompletionProcPtr userRoutine) { return userRoutine; }
++ inline void DisposeIOCompletionUPP(IOCompletionUPP) { }
++ inline void InvokeIOCompletionUPP(ParmBlkPtr paramBlock, IOCompletionUPP userUPP) { (*userUPP)(paramBlock); }
++ #else
++ #define NewIOCompletionUPP(userRoutine) ((IOCompletionUPP)userRoutine)
++ #define DisposeIOCompletionUPP(userUPP)
++ #define InvokeIOCompletionUPP(paramBlock, userUPP) (*userUPP)(paramBlock)
++ #endif
++#endif
++
++
++/*
++ MakeFSRefUnicode
++ Create an FSRef for an existing object specified by
++ Parent FSRef and Unicode name.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref A pointer to the parent directory FSRef
++ -> name A pointer to Unicode name
++ -> nameLength The length of the Unicode Name
++ -> textEncodingHint A suggested text encoding to use for the name
++ <- newRef A pointer to an FSRef
++*/
++/*
++ * FSMakeFSRefUnicode()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSMakeFSRefUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, TextEncoding textEncodingHint, FSRef *newRef) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBMakeFSRefUnicodeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBMakeFSRefUnicodeSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBMakeFSRefUnicodeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBMakeFSRefUnicodeAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ CompareFSRefs
++ Test whether two FSRefs refer to the same file or directory.
++ If they do, noErr is returned. Otherwise, an appropriate error
++ (such as errFSRefsDifferent) is returned.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref A pointer to the first FSRef
++ -> parentRef A pointer to the second FSRef
++*/
++/*
++ * FSCompareFSRefs()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCompareFSRefs(const FSRef *ref1, const FSRef *ref2) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCompareFSRefsSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCompareFSRefsSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCompareFSRefsAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCompareFSRefsAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ CreateFileUnicode
++ Creates a new file. The input filename is in Unicode.
++ You can optionally set catalog info for the file.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The directory where the file is to be created
++ -> whichInfo Which catalog info fields to set
++ -> catInfo The values for catalog info fields to set; may be NULL
++ -> nameLength Number of Unicode characters in the file's name
++ -> name A pointer to the Unicode name
++ <- spec A pointer to the FSSpec for the new directory; may be NULL. Ignored on 64 bit.
++ <- newRef A pointer to the FSRef for the new file; may be NULL
++*/
++/*
++ * FSCreateFileUnicode()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCreateFileUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo, FSRef *newRef, FSSpecPtr newSpec) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCreateFileUnicodeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCreateFileUnicodeSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCreateFileUnicodeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCreateFileUnicodeAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ CreateDirectoryUnicode
++ Creates a new directory. The input directory name is in Unicode.
++ You can optionally set catalog info for the directory.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The parent directory where the directory is to be created
++ -> whichInfo Which catalog info fields to set
++ -> catInfo The values for catalog info fields to set; may be NULL
++ -> nameLength Number of Unicode characters in the directory's name
++ -> name A pointer to the Unicode name
++ <- ioDirID The DirID of the new directory
++ <- newSpec A pointer to the FSSpec for the new directory; may be NULL. Ignored on 64 bit.
++ <- newRef A pointer to the FSRef for the new directory; may be NULL
++*/
++/*
++ * FSCreateDirectoryUnicode()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCreateDirectoryUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo, FSRef *newRef, FSSpecPtr newSpec, UInt32 *newDirID) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCreateDirectoryUnicodeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCreateDirectoryUnicodeSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCreateDirectoryUnicodeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCreateDirectoryUnicodeAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ DeleteObject
++ Deletes an existing file or directory.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory to be deleted
++*/
++/*
++ * FSDeleteObject()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSDeleteObject(const FSRef * ref) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBDeleteObjectSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBDeleteObjectSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBDeleteObjectAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBDeleteObjectAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ UnlinkObject
++ Unlinks an existing file or deletes an existing directory. This call will succeed on an open file, unlike
++ DeleteObject. This call will unlink an archive directory link (where DeleteObject will treat the ADL as a directory).
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory to be deleted
++*/
++/*
++ * FSUnlinkObject()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSErr FSUnlinkObject(const FSRef * ref) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * PBUnlinkObjectSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSErr PBUnlinkObjectSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * PBUnlinkObjectAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern void PBUnlinkObjectAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ MoveObject
++ Move an existing file or directory into a different directory.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory to be moved
++ -> parentRef The file or directory will be moved into this directory
++ <- newRef A new FSRef for the file or directory in its new location;
++ optional, may be NULL
++ NOTE: Moving an object may change its FSRef. If you want to continue to
++ refer to the object, you should pass a non-NULL pointer in newRef and use
++ that returned FSRef to access the object after the move. The FSRef passed
++ in "ref" may or may not be usable to access the object after it is moved.
++ "newRef" may point to the same storage as "parentRef" or "ref".
++*/
++/*
++ * FSMoveObject()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSMoveObject(const FSRef *ref, const FSRef *destDirectory, FSRef *newRef) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBMoveObjectSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBMoveObjectSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBMoveObjectAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBMoveObjectAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ ExchangeObjects
++ swap the contents of two files.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The first file
++ -> parentRef The second file
++*/
++/*
++ * FSExchangeObjects()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSExchangeObjects(const FSRef *ref, const FSRef *destRef) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBExchangeObjectsSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBExchangeObjectsSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBExchangeObjectsAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBExchangeObjectsAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ FSReplaceObject and FSPathReplaceObject
++
++ You can use the FSReplaceObject and FSPathReplaceObject functions to replace
++ one object, the original object, with another, the replacement object.
++ FSReplaceObject and FSPathReplaceObject are provided to assist in properly
++ preserving metadata during safe save operations. These functions allow files
++ to replace files, directories to replace directories, directories to replace
++ files and files to replace directories (so a package can replace a file, or
++ a file can replace a package). Both objects must reside on the same volume.
++
++ If FSReplaceObject or FSPathReplaceObject are successful, the result object
++ will exist at the location of the original object. Nothing will exist at the
++ location of the replacement object. By default FSReplaceObject and FSPathReplaceObject
++ will test the object for write access, and fail if write access is not available.
++ Write access in this context is ACL_WRITE_DATA for files and ACL_ADD_FILE for directories.
++ This check can be bypassed by passing the kFSReplaceObjectDoNotCheckObjectWriteAccess flag.
++
++ FSReplaceObject and FSPathReplaceObject may need to create a temporary object
++ when one of the input objects is a directory, or when the
++ kFSReplaceObjectSaveOriginalAsABackup option is specified. The temporary object
++ is required since the rename system call does not handle non-empty directory
++ replacement or file <-> directory replacement. The file replacing file case
++ does not use a temporary object (unless the kFSReplaceObjectSaveOriginalAsABackup
++ option is specified). If no temporary name is provided and a temporary object
++ is required, then the functions will return an error. Providing a temporary
++ name will also allow an application to recover the original object should a
++ catastrophic failure (such as a power outage) occur during a replacement
++ involving a directory. The temporary object will be created with the temporary
++ name either in the temporary directory specified by the temporaryDirectory
++ parameter, or in the preferred temporary directory (the preferred temporary
++ directory can be obtained with the FSGetTemporaryDirectoryForReplaceObject
++ or FSPathGetTemporaryDirectoryForReplaceObject functions).
++
++ If the kFSReplaceObjectSaveOriginalAsABackup option is specified, the original
++ object will be saved in one of two locations: If the temporaryName parameter
++ is provided, the original object will be saved with that temporary name in
++ the temporary directory. If the temporaryName parameter is not provided and
++ the newName parameter is provided, the original object will be saved with
++ its original name in the temporary directory.
++
++ The result object will have the data (or directory contents) from the
++ replacement object, but will have the original object's creation date and
++ backup date. By default, the result object will have extended attributes
++ merged from the original object and the replacement object, using the extended
++ attributes of the replacement object if the original object has extended
++ attributes with the same name. If the kFSReplaceObjectReplaceMetadata option
++ flag is passed, then the extended attributes of the original object will be
++ completely overwritten by the extended attributes of the replacement object.
++
++ The kFSReplaceObjectReplaceMetadata also controls how the label, type, creator,
++ hidden extension bit, strong binding, custom icon and custom badge are handled.
++ For the custom icon, custom badge, label (where a value of 0 is considered not
++ present), and strong binding the replacement object's attributes will be
++ used if present, otherwise the original object's attributes will be retained. For
++ the extension hidden bit, type, and creator the original object's attribute is
++ preserved. Setting the kFSReplaceObjectReplaceMetadata flag will use the replacement
++ object's attributes for all cases. Type and creator are only handled in the
++ file to file case. Strong bindings are not applicable to plain directories.
++
++ The default handling of ACL and mode info depends on the types of objects
++ involved. If the original object and replacement object are of the same type
++ (both files or both directories) then the default behavior is to use the ACL
++ and mode of the original object. Setting the kFSReplaceObjectReplacePermissionInfo
++ flag will use the ACL and mode from the replacementObject.
++
++ If the objects are different types, then the ACL and mode will be based off
++ the original object and will translated as follows:
++
++ Mode:
++ file r -> dir rx
++ file w -> dir wx
++ file x -> dir nothing
++
++ dir r -> file r
++ dir w -> file w
++ dir x -> file nothing
++
++ ACLs:
++
++ ACL_SEARCH will be added to any allow ACE in the file to directory case.
++ ACL_EXECUTE will be removed from any ACE in the file to directory case.
++
++ ACL_SEARCH and ACL_DELETE_CHILD will be removed from any ACE in the directory to file case.
++
++ File Directory
++ ACL_READ_DATA <-> ACL_LIST_DIRECTORY
++ ACL_WRITE_DATA <-> ACL_ADD_FILE
++ ACL_APPEND_DATA <-> ACL_ADD_SUBDIRECTORY
++
++ ACL_DELETE , ACL_READ_ATTRIBUTES, ACL_WRITE_ATTRIBUTES, ACL_READ_EXTATTRIBUTES,
++ ACL_WRITE_EXTATTRIBUTES, ACL_READ_SECURITY, ACL_WRITE_SECURITY and ACL_CHANGE_OWNER
++ are the same for both types and will be left alone.
++
++ This translation behavior can be avoided by passing in either
++ kFSReplaceObjectPreservePermissionInfo to use the original object ACL and
++ mode info unchanged (except where the bits have different meanings for files
++ and directories) or kFSReplaceObjectReplacePermissionInfo to use the ACL and
++ mode info of the replacement object (except where the bits have different
++ meanings for files and directories). Setting both of these flags is an
++ error -- the call will fail with a paramErr. The permissions are only set on
++ the top-level object -- the permissions inside a directory are unaffected.
++
++ FSReplaceObject may not be atomic -- it may issue multiple system calls to
++ accurately replace and preserve the metadata of a file system object.
++
++ FSReplaceObject may fail if the source or destination files are open or
++ the source or destination objects are directories which contain open files.
++*/
++
++/*
++ * FSReplaceObjectOptions
++ *
++ * Discussion:
++ * Options that can be passed to the FSReplaceObject and
++ * FSPathReplaceObject functions. These are mask values that can be
++ * ORed together to set more than one option.
++ */
++enum {
++
++ /*
++ * Use the default behavior (see the discussion of the
++ * FSReplaceObject function)
++ */
++ kFSReplaceObjectDefaultOptions = 0,
++
++ /*
++ * The result object will only have the metadata from the replacement
++ * object. The result object will have no metadata from the original
++ * object.
++ */
++ kFSReplaceObjectReplaceMetadata = 0x01,
++
++ /*
++ * The original object will be saved with the temporary name in the
++ * temporaryDirectory, or will be saved with the original name (if no
++ * temporaryName is provided and a newName is provided) in the
++ * temporaryDirectory.
++ */
++ kFSReplaceObjectSaveOriginalAsABackup = 0x02,
++
++ /*
++ * ACL and mode info will come from the replacement object.
++ */
++ kFSReplaceObjectReplacePermissionInfo = 0x04,
++
++ /*
++ * ACL and mode info will come from the original object
++ */
++ kFSReplaceObjectPreservePermissionInfo = 0x08,
++
++ /*
++ * FSReplaceObject does not actually require write permission to
++ * perform the replace operation, since no actual writing is done to
++ * the original object. By default ReplaceObject will test the
++ * object for write permissions and fail if they are not present
++ * (tested using accessx_np). Write permission in this context is
++ * defined as ACL_WRITE_DATA for files and ACL_ADD_FILE for
++ * directories. Pass this flag to skip this check (which will allow
++ * the replace to operate on "read only" objects).
++ */
++ kFSReplaceObjectDoNotCheckObjectWriteAccess = 0x10
++};
++
++/*
++ * FSReplaceObject()
++ *
++ * Discussion:
++ * This function will replace the object specified by originalObject
++ * with the object specified by replacementObject. The result object
++ * will be in the same parent directory as the original object.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * originalObject:
++ * The original object to be replaced.
++ *
++ * replacementObject:
++ * The object which will replace the original object.
++ *
++ * newName:
++ * The new name for the result object. Pass NULL to use the
++ * original object's name.
++ *
++ * temporaryName:
++ * The name of a temporary object should the operation require a
++ * temporary object. The temporary object will be created in the
++ * preferred temporary directory or in the directory specified by
++ * the temporaryDirectory parameter.
++ *
++ * temporaryDirectory:
++ * The directory where the temporary object (if needed) will be
++ * created. The temporary directory must be on the same volume as
++ * the original object. If NULL is passed, then the preferred
++ * temporary directory is used (as per
++ * FSGetTemporaryDirectoryForReplaceObject).
++ *
++ * flags:
++ * A set of options to specify non-default behavior.
++ *
++ * resultObject:
++ * A new FSRef for the result object.
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSReplaceObject(const FSRef *originalObject, const FSRef *replacementObject, CFStringRef newName, CFStringRef temporaryName, const FSRef *temporaryDirectory, OptionBits flags, FSRef *resultObject) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSPathReplaceObject()
++ *
++ * Discussion:
++ * This function will replace the object specified by
++ * originalObjectPath with the object specified by
++ * replacementObjectPath. The result object will be in the same
++ * parent directory as the original object.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * originalObjectPath:
++ * The path to the original object to be replaced.
++ *
++ * replacementObjectPath:
++ * The path to the object which will replace the original object.
++ *
++ * newName:
++ * The new name for the result object. Pass NULL to use the
++ * original object's name.
++ *
++ * temporaryName:
++ * The name of a temporary object should the operation require a
++ * temporary object. The temporary object will be created in the
++ * preferred temporary directory or in the directory specified by
++ * the temporaryDirectory parameter.
++ *
++ * temporaryDirectoryPath:
++ * The path to the directory where the temporary object (if
++ * needed) will be created. The temporary directory must be on the
++ * same volume as the original object. If NULL is passed, then the
++ * preferred temporary directory is used (as per
++ * FSPathGetTemporaryDirectoryForReplaceObject).
++ *
++ * flags:
++ * A set of options to specify non-default behavior.
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathReplaceObject(const char *originalObjectPath, const char *replacementObjectPath, CFStringRef newName, CFStringRef temporaryName, const char *temporaryDirectoryPath, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSGetTemporaryDirectoryForReplaceObject()
++ *
++ * Discussion:
++ * This function will return the preferred directory for use as the
++ * temporaryDirectory by FSReplaceObject. It will return an
++ * appropriate temporary location or the parent directory of the
++ * original object.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * originalObject:
++ * The original object to be replaced.
++ *
++ * temporaryDirectory:
++ * The preferred temporary directory.
++ *
++ * flags:
++ * A set of options to specify non-default behavior. Currently no
++ * flags are defined - pass in 0
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetTemporaryDirectoryForReplaceObject(const FSRef *originalObject, FSRef *temporaryDirectory, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSPathGetTemporaryDirectoryForReplaceObject()
++ *
++ * Discussion:
++ * This function will return the preferred directory for use as the
++ * temporaryDirectory by FSPathReplaceObject. It will return an
++ * appropriate temporary location or the parent directory of the
++ * original object.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * originalObjectPath:
++ * The path to the original object to be replaced.
++ *
++ * temporaryDirectoryPath:
++ * The path to the preferred temporary directory.
++ *
++ * maxPathSize:
++ * The size of the buffer pointed to by the temporaryDirectoryPath
++ * parameter.
++ *
++ * flags:
++ * A set of options to specify non-default behavior. Currently no
++ * flags are defined - pass in 0
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathGetTemporaryDirectoryForReplaceObject(const char *originalObjectPath, char *temporaryDirectoryPath, UInt32 maxPathSize, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ RenameUnicode
++ Change the name of an existing file or directory. The new name is in
++ Unicode.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory to be moved
++ -> nameLength Number of Unicode characters in the new name
++ -> name A pointer to the new Unicode name
++ -> textEncodingHint A suggested text encoding to use for the name
++ <- newRef A new FSRef for the file or directory; may be NULL
++ NOTE: Renaming an object may change its FSRef. If you want to continue to
++ refer to the object, you should pass a non-NULL pointer in newRef and use
++ that returned FSRef to access the object after the rename. The FSRef passed
++ in "ref" may or may not be usable to access the object after it is renamed.
++ "newRef" may point to the same storage as "ref".
++*/
++/*
++ * FSRenameUnicode()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSRenameUnicode(const FSRef *ref, UniCharCount nameLength, const UniChar *name, TextEncoding textEncodingHint, FSRef *newRef) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBRenameUnicodeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBRenameUnicodeSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBRenameUnicodeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBRenameUnicodeAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ GetCatalogInfo
++ Returns various information about a given file or directory.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory whose information is to be returned
++ -> whichInfo Which catalog info fields to get
++ <- catInfo The returned values of catalog info fields; may be NULL
++ <- spec A pointer to the FSSpec for the object; may be NULL. Ignored for 64 bit.
++ <- parentRef A pointer to the FSRef for the object's parent directory; may be NULL
++ <- outName The Unicode name is returned here. This pointer may be NULL.
++ Note: All of the outputs are optional; if you don't want that particular output, just
++ set its pointer to NULL. This is the call to use to map from an FSRef to an FSSpec.
++*/
++/*
++ * FSGetCatalogInfo()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetCatalogInfo(const FSRef *ref, FSCatalogInfoBitmap whichInfo, FSCatalogInfo *catalogInfo, HFSUniStr255 *outName, FSSpecPtr fsSpec, FSRef *parentRef) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetCatalogInfoSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBGetCatalogInfoSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetCatalogInfoAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBGetCatalogInfoAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSSetCatalogInfo()
++ *
++ * Summary:
++ * Set catalog information about a given file or directory.
++ *
++ * Discussion:
++ * Set the catalog information for the file or directory represented
++ * by ref.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Parameters:
++ *
++ * ref:
++ * A pointer to an FSRef specifying the file or directory whose
++ * information is to be changed
++ *
++ * whichInfo:
++ * A bitmap specifying which catalog information fields may be
++ * set. The settable fields are given by the constant
++ * kFSCatInfoSettableInfo; no other bits may be set in whichInfo.
++ * The one exception to this is that processes running as eid 0 or
++ * euid 0 can change the user ID and group ID of a file or
++ * directory by setting kFSCatInfoSetOwnership in whichInfo and
++ * setting the permissions field of catalogInfo.
++ *
++ * catalogInfo:
++ * A pointer to the structure containing the new catalog
++ * information. Only some of the catalog information fields may be
++ * set.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSSetCatalogInfo(const FSRef *ref, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetCatalogInfoSync()
++ *
++ * Summary:
++ * Set catalog information about a given file or directory.
++ *
++ * Discussion:
++ * Set the catalog information for the file or directory represented
++ * by ref. See the description in FSSetCatalogInfo for which items
++ * may be set.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBSetCatalogInfoSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetCatalogInfoAsync()
++ *
++ * Summary:
++ * Set catalog information about a given file or directory.
++ *
++ * Discussion:
++ * Set the catalog information for the file or directory represented
++ * by ref. See the description in FSSetCatalogInfo for which items
++ * may be set.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBSetCatalogInfoAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ OpenIterator
++ Creates an FSIterator to iterate over a directory or subtree. The
++ iterator can then be passed to GetCatalogInfoBulk or CatalogSearch.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ <- iterator The returned FSIterator
++ -> iteratorFlags Controls whether the iterator iterates over subtrees
++ or just the immediate children of the container.
++ -> container An FSRef for the directory to iterate (or root of
++ the subtree to iterate).
++*/
++/*
++ * FSOpenIterator()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSOpenIterator(const FSRef *container, FSIteratorFlags iteratorFlags, FSIterator *iterator) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBOpenIteratorSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBOpenIteratorSync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBOpenIteratorAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBOpenIteratorAsync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ CloseIterator
++ Invalidates and disposes an FSIterator.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> iterator The returned FSIterator
++*/
++/*
++ * FSCloseIterator()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCloseIterator(FSIterator iterator) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCloseIteratorSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCloseIteratorSync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCloseIteratorAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCloseIteratorAsync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ GetCatalogInfoBulk
++ Iterates over catalog objects and returns information about them.
++ For now, iterator must have been created with kFSIterateFlat option.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> iterator The iterator
++ -> maximumItems The maximum number of items to return
++ <- actualItems The actual number of items returned
++ <- containerChanged Set to true if the container's contents changed
++ -> whichInfo The catalog information fields to return for each item
++ <- catalogInfo An array of catalog information; one for each returned item
++ <- refs An array of FSRefs; one for each returned item
++ <- specs An array of FSSpecs; one for each returned item. Ignored on 64 bit.
++ <- names An array of filenames; one for each returned item
++ Note: The catalogInfo, refs, specs, names, and containerChanged are all optional outputs;
++ if you don't want that particular output, set its pointer to NULL.
++*/
++/*
++ * FSGetCatalogInfoBulk()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetCatalogInfoBulk(FSIterator iterator, ItemCount maximumObjects, ItemCount *actualObjects, Boolean *containerChanged, FSCatalogInfoBitmap whichInfo, FSCatalogInfo *catalogInfos, FSRef *refs, FSSpecPtr specs, HFSUniStr255 *names) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetCatalogInfoBulkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBGetCatalogInfoBulkSync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetCatalogInfoBulkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBGetCatalogInfoBulkAsync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ CatalogSearch
++ Iterates over catalog objects, searching for objects that match given
++ search criteria. Returns various information about matching objects.
++ For now, iterator must have been created with kFSIterateSubtree option
++ and the container must have been the root directory of a volume.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> iterator The iterator
++ -> maximumItems The maximum number of items to return
++ <- actualItems The actual number of items returned
++ <- containerChanged Set to true if the container's contents changed
++ -> whichInfo The catalog information fields to return for each item
++ <- catalogInfo An array of catalog information; one for each returned item
++ <- refs An array of FSRefs; one for each returned item
++ <- specs An array of FSSpecs; one for each returned item. Ignored on 64 bit.
++ <- names An array of filenames; one for each returned item
++ -> searchParams The criteria that controls the matching, including timeout, a bitmap
++ controlling the fields to compare, and the (Unicode) name to compare.
++ Note: The catalogInfo, refs, specs, and names are all optional outputs; if you don't want
++ that particular output, set its pointer to NULL.
++*/
++/*
++ * FSCatalogSearch()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCatalogSearch(FSIterator iterator, const FSSearchParams *searchCriteria, ItemCount maximumObjects, ItemCount *actualObjects, Boolean *containerChanged, FSCatalogInfoBitmap whichInfo, FSCatalogInfo *catalogInfos, FSRef *refs, FSSpecPtr specs, HFSUniStr255 *names) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCatalogSearchSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCatalogSearchSync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCatalogSearchAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCatalogSearchAsync(FSCatalogBulkParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ CreateFileAndOpenForkUnicode
++ Creates a new file and opens the specified fork. The input filename is in Unicode.
++ You can optionally set catalog info for the file.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> parentRef The directory where the file is to be created
++ -> whichInfo Which catalog info fields to set
++ -> catalogInfo The values for catalog info fields to set; may be NULL
++ -> nameLength Number of Unicode characters in the file's name
++ -> name A pointer to the Unicode name
++ -> forkNameLength The length of the fork name (in Unicode characters).
++ -> forkName The name of the fork to open (in Unicode). Passing NULL will open the data fork.
++ -> permissions The access (read and/or write) you want
++ <- forkRefNum The reference number for accessing the open fork
++ <- newRef A pointer to the FSRef for the new file; may be NULL
++*/
++/*
++ * FSCreateFileAndOpenForkUnicode()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCreateFileAndOpenForkUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo, UniCharCount forkNameLength, const UniChar *forkName, SInt8 permissions, FSIORefNum *forkRefNum, FSRef *newRef) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * PBCreateFileAndOpenForkUnicodeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBCreateFileAndOpenForkUnicodeSync(FSRefForkIOParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * PBCreateFileAndOpenForkUnicodeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern void PBCreateFileAndOpenForkUnicodeAsync(FSRefForkIOParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ CreateFork
++ Create a named fork for a file or directory.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory
++ -> forkNameLength The length of the fork name (in Unicode characters)
++ -> forkName The name of the fork to open (in Unicode)
++*/
++/*
++ * FSCreateFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCreateFork(const FSRef *ref, UniCharCount forkNameLength, const UniChar *forkName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCreateForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCreateForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCreateForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCreateForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ DeleteFork
++ Delete a named fork of a file or directory.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory
++ -> forkNameLength The length of the fork name (in Unicode characters)
++ -> forkName The name of the fork to open (in Unicode)
++*/
++/*
++ * FSDeleteFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSDeleteFork(const FSRef *ref, UniCharCount forkNameLength, const UniChar *forkName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBDeleteForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBDeleteForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBDeleteForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBDeleteForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ IterateForks
++ Return the names and sizes of the forks of a file or directory.
++ One fork is returned per call.
++ -> ioCompletion A pointer to a completion routine.
++ <- ioResult The result code of the function.
++ -> ref The file or directory containing the forks.
++ <- positionOffset The length of the fork, in bytes.
++ <- allocationAmount The space allocated to the fork (physical length).
++ <- outForkName The name of the fork in Unicode.
++ <> forkIterator Maintains state between calls for a given FSRef.
++ Before the first call, set the initialize field to zero.
++*/
++/*
++ * FSIterateForks()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSIterateForks(const FSRef *ref, CatPositionRec *forkIterator, HFSUniStr255 *forkName, SInt64 *forkSize, UInt64 *forkPhysicalSize) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBIterateForksSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBIterateForksSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBIterateForksAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBIterateForksAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ OpenFork
++ Open a fork for reading and/or writing. Allows the opened fork
++ to grow beyond 2GB in size. All volumes should support data and
++ resource forks. Other named forks may be supported by some
++ volumes.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The file or directory containing the fork to open
++ -> forkNameLength The length of the fork name (in Unicode characters)
++ -> forkName The name of the fork to open (in Unicode)
++ -> permissions The access (read and/or write) you want
++ <- forkRefNum The reference number for accessing the open fork
++*/
++/*
++ * FSOpenFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSOpenFork(const FSRef *ref, UniCharCount forkNameLength, const UniChar *forkName, SInt8 permissions, FSIORefNum *forkRefNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBOpenForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBOpenForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBOpenForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBOpenForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ ReadFork
++ Read data from a fork opened via OpenFork. The first byte to read is
++ indicated by a combination of positionMode and positionOffset.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork to read from
++ <- buffer Pointer to buffer where data will be returned
++ -> requestCount The number of bytes to read
++ <- actualCount The number of bytes actually read
++ -> positionMode The base location for start of read
++ -> positionOffset The offset from base location for start of read
++*/
++/*
++ * FSReadFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSReadFork(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, ByteCount requestCount, void *buffer, ByteCount *actualCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBReadForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBReadForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBReadForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBReadForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ WriteFork
++ Write data to a fork opened via OpenFork. The first byte to write is
++ indicated by a combination of positionMode and positionOffset.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork to write to
++ -> buffer Pointer to data to write
++ -> requestCount The number of bytes to write
++ <- actualCount The number of bytes actually written
++ -> positionMode The base location for start of write
++ -> positionOffset The offset from base location for start of write
++*/
++/*
++ * FSWriteFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSWriteFork(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, ByteCount requestCount, const void *buffer, ByteCount *actualCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBWriteForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBWriteForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBWriteForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBWriteForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ GetForkPosition
++ Get the current (default) position of a fork that was
++ opened via OpenFork.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork
++ <- positionOffset The current position of the fork
++*/
++/*
++ * FSGetForkPosition()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetForkPosition(FSIORefNum forkRefNum, SInt64 *position) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetForkPositionSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBGetForkPositionSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetForkPositionAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBGetForkPositionAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ SetForkPosition
++ Set the current (default) position of a fork that was
++ opened via OpenFork.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork
++ -> positionMode The base location for the new position
++ -> positionOffset The offset of the new position from the base
++*/
++/*
++ * FSSetForkPosition()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSSetForkPosition(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetForkPositionSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBSetForkPositionSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetForkPositionAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBSetForkPositionAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ GetForkSize
++ Get the current logical size (end-of-file) of an open fork.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork
++ <- positionOffset The logical size of the fork, in bytes
++*/
++/*
++ * FSGetForkSize()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetForkSize(FSIORefNum forkRefNum, SInt64 *forkSize) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetForkSizeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBGetForkSizeSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetForkSizeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBGetForkSizeAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ SetForkSize
++ Set the logical size (end-of-file) of an open fork. This
++ may cause space to be allocated or deallocated.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork
++ -> positionMode The base location for the new size
++ -> positionOffset The offset of the new size from the base
++*/
++/*
++ * FSSetForkSize()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSSetForkSize(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetForkSizeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBSetForkSizeSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetForkSizeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBSetForkSizeAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ AllocateFork
++ Allocate space to an open fork. Typically, the space to be
++ allocated is beyond the current size of the fork, to reserve
++ space so the file will be able to grow later. Some volume
++ formats are unable to allocate space beyond the logical size
++ of the fork.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork
++ -> positionMode The base location for start of allocation
++ -> positionOffset The offset of the start of allocation
++ -> allocationFlags Zero or more of the following flags:
++ kFSAllocContiguousMask
++ Any newly allocated space must be one contiguous piece.
++ kFSAllocAllOrNothingMask
++ All of the request space must be available, or the call
++ will fail. (If not set, the call may succeed even though
++ some of the requested space wasn't allocated.)
++ kFSAllocNoRoundUpMask
++ Do not allocate additional space. (If not set, a volume
++ may allocate additional space in order to reduce fragmentation.)
++ <> allocationAmount The number of bytes to allocate
++ On output, the number of bytes actually added
++*/
++/*
++ * FSAllocateFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSAllocateFork(FSIORefNum forkRefNum, FSAllocationFlags flags, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount, UInt64 *actualCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBAllocateForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBAllocateForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBAllocateForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBAllocateForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ FlushFork
++ Flush a fork. Any data written to this fork refnum is flushed to the device.
++ The volume's control structures are also flushed to the device.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork to flush
++*/
++/*
++ * FSFlushFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSFlushFork(FSIORefNum forkRefNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBFlushForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBFlushForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBFlushForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBFlushForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ CloseFork
++ Flush and close a fork. Any data written to this fork refnum is flushed
++ to the device. The volume's control structures are also flushed to the device.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork to close
++*/
++/*
++ * FSCloseFork()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSCloseFork(FSIORefNum forkRefNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCloseForkSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBCloseForkSync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBCloseForkAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBCloseForkAsync(FSForkIOParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ GetForkCBInfo
++ Return information about an open fork.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ <> desiredRefNum If non-zero on input, then get information for this refnum;
++ unchanged on output. If zero on input, iterate over all open
++ forks (possibly limited to a single volume); on output, contains
++ the fork's refnum.
++ -> volumeRefNum Used when desiredRefNum is zero on input. Set to 0 to iterate over all
++ volumes, or set to a FSVolumeRefNum to limit iteration to that volume.
++ <> iterator Used when desiredRefNum is zero on input. Set to 0 before iterating.
++ Pass the iterator returned by the previous call to continue iterating.
++ <- actualRefNum The refnum of the open fork.
++ <- ref The FSRef for the file or directory that contains the fork.
++ <- forkInfo Various information about the open fork.
++ <- outForkName The name of the fork
++ Note: the foundRefNum, ref, forkInfo, and fork name outputs are all optional; if you don't want
++ a particular output, then set its pointer to NULL. If forkName is NULL, then forkNameLength
++ will be undefined.
++ Note: Returning the forkInfo generally does not require a disk access. Returning the
++ ref or forkName may cause disk access for some volume formats.
++*/
++/*
++ * FSGetForkCBInfo()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetForkCBInfo(FSIORefNum desiredRefNum, FSVolumeRefNum volume, short *iterator, FSIORefNum *actualRefNum, FSForkInfo *forkInfo, FSRef *ref, HFSUniStr255 *outForkName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetForkCBInfoSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBGetForkCBInfoSync(FSForkCBInfoParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetForkCBInfoAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBGetForkCBInfoAsync(FSForkCBInfoParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ PBXLockRange
++ Lock a range of bytes of the file fork specified by forkRefNum.
++ This is only supported on some volume formats.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork to read from
++ -> requestCount The number of bytes to lock
++ -> positionMode The base location for start of the range
++ -> positionOffset The offset from base location for start of the range
++ <- rangeStart Number of the first byte locked
++*/
++/*
++ * FSLockRange()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSLockRange(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount, UInt64 *rangeStart) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * PBXLockRangeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBXLockRangeSync(FSRangeLockParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * PBXLockRangeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBXLockRangeAsync(FSRangeLockParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ PBXUnlockRange
++ Unlock a range of bytes of the file fork specified by forkRefNum.
++ This is only supported on some volume formats.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> forkRefNum The reference number of the fork to read from
++ -> requestCount The number of bytes to lock
++ -> positionMode The base location for start of the range
++ -> positionOffset The offset from base location for start of the range
++ <- rangeStart Number of the first byte unlocked
++*/
++/*
++ * FSUnlockRange()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSUnlockRange(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount, UInt64 *rangeStart) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * PBXUnlockRangeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBXUnlockRangeSync(FSRangeLockParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * PBXUnlockRangeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBXUnlockRangeAsync(FSRangeLockParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ GetVolumeInfo
++ Returns various information about a given volume, or indexing over all volumes.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ <> ioVRefNum On input, the volume reference number or drive number whose
++ information is to be returned (if volumeIndex is 0); same
++ as "volume" input to FSGetVolumeInfo.
++ On output, the actual volume reference number; same as
++ "actualVolume" output of FSGetVolumeInfo.
++ -> volumeIndex The index of the desired volume, or 0 to use ioVRefNum
++ -> whichInfo Which volInfo info fields to get
++ <- volumeInfo The returned values of Volume info fields; may be NULL
++ <- name The Unicode name is returned here. This pointer may be NULL.
++ Note: All of the outputs are optional; if you don't want that particular output, just
++ set its pointer to NULL.
++*/
++/*
++ * FSGetVolumeInfo()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetVolumeInfo(FSVolumeRefNum volume, ItemCount volumeIndex, FSVolumeRefNum *actualVolume, FSVolumeInfoBitmap whichInfo, FSVolumeInfo *info, HFSUniStr255 *volumeName, FSRef *rootDirectory) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetVolumeInfoSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBGetVolumeInfoSync(FSVolumeInfoParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBGetVolumeInfoAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBGetVolumeInfoAsync(FSVolumeInfoParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ SetVolumeInfo
++ Set information about a given volume.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ioVRefNum The volume whose information is to be changed
++ -> whichInfo Which catalog info fields to set
++ -> volumeInfo The new values of volume info fields
++ Note: Only some of the volume info fields may be set. The settable fields
++ are given by the constant kFSVolInfoSettableInfo; no other bits may be set in
++ whichInfo.
++*/
++/*
++ * FSSetVolumeInfo()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSSetVolumeInfo(FSVolumeRefNum volume, FSVolumeInfoBitmap whichInfo, const FSVolumeInfo *info) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetVolumeInfoSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBSetVolumeInfoSync(FSVolumeInfoParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PBSetVolumeInfoAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBSetVolumeInfoAsync(FSVolumeInfoParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ FSGetDataForkName
++ Returns the constant for the name of the data fork (the empty string)
++*/
++/*
++ * FSGetDataForkName()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetDataForkName(HFSUniStr255 * dataForkName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ FSGetResourceForkName
++ Returns the constant for the name of the resource fork
++ (currently "RESOURCE_FORK").
++*/
++/*
++ * FSGetResourceForkName()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSGetResourceForkName(HFSUniStr255 * resourceForkName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FSRefMakePath()
++ *
++ * Summary:
++ * converts an FSRef to a POSIX path
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Parameters:
++ *
++ * ref:
++ * the file/dir to get the POSIX path for
++ *
++ * path:
++ * a pointer to a buffer which FSRefMakePath will fill with a UTF8
++ * encoded C string representing the path the the specified FSRef
++ *
++ * pathBufferSize:
++ * the size of the path buffer in bytes. This size should include
++ * the NULL terminator for the returned path string.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSRefMakePath(const FSRef *ref, UInt8 *path, UInt32 pathBufferSize) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FSPathMakeRef()
++ *
++ * Summary:
++ * converts a POSIX path to an FSRef
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Parameters:
++ *
++ * path:
++ * a pointer to a UTF8 encoded C String that is a POSIX path
++ *
++ * ref:
++ * a pointer to an FSRef to fill in
++ *
++ * isDirectory:
++ * an optional pointer to a Boolean that will be filled in with
++ * whether the specified path is a directory (vs. a file)
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathMakeRef(const UInt8 *path, FSRef *ref, Boolean *isDirectory) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * FSPathMakeRefOptions
++ *
++ * Discussion:
++ * Options that can be passed to the FSPathMakeRefWithOptions call.
++ */
++enum {
++ kFSPathMakeRefDefaultOptions = 0,
++ kFSPathMakeRefDoNotFollowLeafSymlink = 0x01
++};
++
++/*
++ * FSPathMakeRefWithOptions()
++ *
++ * Summary:
++ * converts a POSIX path to an FSRef allowing for options other than
++ * the default
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * path:
++ * a pointer to a UTF8 encoded C String that is a POSIX path
++ *
++ * options:
++ * a set of FSPathMakeRef options
++ *
++ * ref:
++ * a pointer to an FSRef to fill in
++ *
++ * isDirectory:
++ * an optional pointer to a Boolean that will be filled in with
++ * whether the specified path is a directory (vs. a file)
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathMakeRefWithOptions(const UInt8 *path, OptionBits options, FSRef *ref, Boolean *isDirectory) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++
++/*
++ * FSIsFSRefValid()
++ *
++ * Summary:
++ * Returns true if ref refers to an existing valid file system
++ * object, false otherwise.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * ref:
++ * FSRef to test
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
++ * Non-Carbon CFM: not available
++ */
++extern Boolean FSIsFSRefValid(const FSRef * ref) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++
++/*
++ * FNMessage
++ *
++ * Discussion:
++ * Messages broadcast about a directory. If system clients (such as
++ * the Finder) are interested in changes to a directory, they will
++ * receive notifications when application code broadcasts change
++ * messages about that directory.
++ */
++typedef UInt32 FNMessage;
++enum {
++ kFNDirectoryModifiedMessage = 1
++};
++
++/*
++ * FNNotify()
++ *
++ * Summary:
++ * Broadcasts notification of changes to the specified directory.
++ *
++ * Discussion:
++ * FNNotify is used to notify system clients (such as the Finder) of
++ * modifications to the contents of a directory, specifically
++ * addition or removal of files or folders from the directory. The
++ * Finder and other system clients will refresh their views of the
++ * specified directory when they receive the change notification.
++ * FNNotify is not meant to notify the Finder of changes to a
++ * specific file (for example, changes to a file's type or creator);
++ * for that purpose, use a kAESync AppleEvent sent to the Finder.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Parameters:
++ *
++ * ref:
++ * The directory for which to broadcast the notification
++ *
++ * message:
++ * An indication of what happened to the target directory
++ *
++ * flags:
++ * Options about delivery of the notification (specify kNilOptions
++ * for default behaviour)
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNNotify(const FSRef *ref, FNMessage message, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FNNotifyByPath()
++ *
++ * Summary:
++ * Broadcasts notification of changes to the specified directory.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Parameters:
++ *
++ * path:
++ * Path to the directory for which to broadcast the notification
++ *
++ * message:
++ * An indication of what happened to the target directory
++ *
++ * flags:
++ * Options about delivery of the notification (specify kNilOptions
++ * for default behaviour)
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNNotifyByPath(const UInt8 *path, FNMessage message, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * FNNotifyAll()
++ *
++ * Discussion:
++ * Broadcasts notification of changes to the filesystem (should only
++ * be used by installers or programs which make lots of changes and
++ * only send one broadcast).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Parameters:
++ *
++ * message:
++ * An indication of what happened
++ *
++ * flags:
++ * Options about delivery of the notification (specify kNilOptions
++ * for default behaviour)
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNNotifyAll(FNMessage message, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++
++/*
++ * FNSubscriptionRef
++ *
++ * Discussion:
++ * A token associated with a notification subscription. The
++ * subscriber gets one back when they subscribe to notifications for
++ * a particular directory, and they supply it when the unsubscribe.
++ * It is also delivered along with the notifications for that
++ * subscription.
++ */
++typedef struct OpaqueFNSubscriptionRef* FNSubscriptionRef;
++
++/*
++ * Discussion:
++ * Options that can be specified at subscription time.
++ */
++enum {
++
++ /*
++ * Specify this option if you do not want to receive notifications on
++ * this subscription when FNNotifyAll is called; by default any
++ * subscription is also implicitly a subscription to wildcard
++ * notifications
++ */
++ kFNNoImplicitAllSubscription = (1 << 0),
++
++ /*
++ * Specify this option if you want to receive notifications on this
++ * subscription when your application is in background. By default
++ * notifications will be coalesced and and delivered when your
++ * application becomes foreground.
++ */
++ kFNNotifyInBackground = (1 << 1)
++};
++
++
++/*
++ * FNSubscriptionProcPtr
++ *
++ * Discussion:
++ * Callback delivered for directory notifications.
++ *
++ * Parameters:
++ *
++ * message:
++ * An indication of what happened
++ *
++ * flags:
++ * Options about delivery of the notification (typically
++ * kNilOptions)
++ *
++ * refcon:
++ * User reference supplied with subscription
++ *
++ * subscription:
++ * Subscription corresponding to this notification
++ */
++typedef CALLBACK_API_C( void , FNSubscriptionProcPtr )(FNMessage message, OptionBits flags, void *refcon, FNSubscriptionRef subscription);
++typedef STACK_UPP_TYPE(FNSubscriptionProcPtr) FNSubscriptionUPP;
++/*
++ * NewFNSubscriptionUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern FNSubscriptionUPP
++NewFNSubscriptionUPP(FNSubscriptionProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++/*
++ * DisposeFNSubscriptionUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposeFNSubscriptionUPP(FNSubscriptionUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++/*
++ * InvokeFNSubscriptionUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++InvokeFNSubscriptionUPP(
++ FNMessage message,
++ OptionBits flags,
++ void * refcon,
++ FNSubscriptionRef subscription,
++ FNSubscriptionUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++#if __MACH__
++ #ifdef __cplusplus
++ inline FNSubscriptionUPP NewFNSubscriptionUPP(FNSubscriptionProcPtr userRoutine) { return userRoutine; }
++ inline void DisposeFNSubscriptionUPP(FNSubscriptionUPP) { }
++ inline void InvokeFNSubscriptionUPP(FNMessage message, OptionBits flags, void * refcon, FNSubscriptionRef subscription, FNSubscriptionUPP userUPP) { (*userUPP)(message, flags, refcon, subscription); }
++ #else
++ #define NewFNSubscriptionUPP(userRoutine) ((FNSubscriptionUPP)userRoutine)
++ #define DisposeFNSubscriptionUPP(userUPP)
++ #define InvokeFNSubscriptionUPP(message, flags, refcon, subscription, userUPP) (*userUPP)(message, flags, refcon, subscription)
++ #endif
++#endif
++
++/*
++ * FNSubscribe()
++ *
++ * Summary:
++ * Subscribe to change notifications for the specified directory.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.1
++ *
++ * Parameters:
++ *
++ * directoryRef:
++ * Directory for which the caller wants notifications
++ *
++ * callback:
++ * Function to call back when a notification arrives
++ *
++ * refcon:
++ * User state carried with the subscription
++ *
++ * flags:
++ * Options for future use (specify kNilOptions, or one of the
++ * FNSubscriptionOptions)
++ *
++ * subscription:
++ * Subscription token for subsequent query or unsubscription
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNSubscribe(const FSRef *directoryRef, FNSubscriptionUPP callback, void *refcon, OptionBits flags, FNSubscriptionRef *subscription) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++
++/*
++ * FNSubscribeByPath()
++ *
++ * Summary:
++ * Subscribe to change notifications for the specified directory.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.1
++ *
++ * Parameters:
++ *
++ * directoryPath:
++ * Directory for which the caller wants notifications
++ *
++ * callback:
++ * Function to call back when a notification arrives
++ *
++ * refcon:
++ * User state carried with the subscription
++ *
++ * flags:
++ * Options for future use (specify kNilOptions, or one of the
++ * FNSubscriptionOptions)
++ *
++ * subscription:
++ * Subscription token for subsequent query or unsubscription
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNSubscribeByPath(const UInt8 *directoryPath, FNSubscriptionUPP callback, void *refcon, OptionBits flags, FNSubscriptionRef *subscription) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++
++/*
++ * FNUnsubscribe()
++ *
++ * Summary:
++ * Release a subscription which is no longer needed.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.1
++ *
++ * Parameters:
++ *
++ * subscription:
++ * Subscription previously returned from FNSubscribe or
++ * FNSubscribeForPath
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNUnsubscribe(FNSubscriptionRef subscription) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++
++/*
++ * FNGetDirectoryForSubscription()
++ *
++ * Summary:
++ * Fetch the directory for which this subscription was originally
++ * entered. There is no path variant because paths are fragile, and
++ * the path may have changed. If the caller does not care about
++ * this subtlety, she can call FSRefMakePath to get a path from the
++ * returned ref.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.1
++ *
++ * Parameters:
++ *
++ * subscription:
++ * Subscription previously returned from FNSubscribe or
++ * FNSubscribeForPath
++ *
++ * ref:
++ * Directory for which this subscription was created
++ *
++ * Availability:
++ * Mac OS X: in version 10.1 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FNGetDirectoryForSubscription(FNSubscriptionRef subscription, FSRef *ref) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
++
++
++
++/* Async Volume Operation Status return values*/
++enum {
++ kAsyncMountInProgress = 1,
++ kAsyncMountComplete = 2,
++ kAsyncUnmountInProgress = 3,
++ kAsyncUnmountComplete = 4,
++ kAsyncEjectInProgress = 5,
++ kAsyncEjectComplete = 6
++};
++
++
++typedef UInt32 FSMountStatus;
++typedef UInt32 FSEjectStatus;
++typedef UInt32 FSUnmountStatus;
++typedef struct OpaqueFSVolumeOperation* FSVolumeOperation;
++typedef CALLBACK_API_C( void , FSVolumeMountProcPtr )(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum mountedVolumeRefNum);
++typedef CALLBACK_API_C( void , FSVolumeUnmountProcPtr )(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter);
++typedef CALLBACK_API_C( void , FSVolumeEjectProcPtr )(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter);
++typedef STACK_UPP_TYPE(FSVolumeMountProcPtr) FSVolumeMountUPP;
++typedef STACK_UPP_TYPE(FSVolumeUnmountProcPtr) FSVolumeUnmountUPP;
++typedef STACK_UPP_TYPE(FSVolumeEjectProcPtr) FSVolumeEjectUPP;
++/*
++ * NewFSVolumeMountUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern FSVolumeMountUPP
++NewFSVolumeMountUPP(FSVolumeMountProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * NewFSVolumeUnmountUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern FSVolumeUnmountUPP
++NewFSVolumeUnmountUPP(FSVolumeUnmountProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * NewFSVolumeEjectUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern FSVolumeEjectUPP
++NewFSVolumeEjectUPP(FSVolumeEjectProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * DisposeFSVolumeMountUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++DisposeFSVolumeMountUPP(FSVolumeMountUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * DisposeFSVolumeUnmountUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++DisposeFSVolumeUnmountUPP(FSVolumeUnmountUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * DisposeFSVolumeEjectUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++DisposeFSVolumeEjectUPP(FSVolumeEjectUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * InvokeFSVolumeMountUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++InvokeFSVolumeMountUPP(
++ FSVolumeOperation volumeOp,
++ void * clientData,
++ OSStatus err,
++ FSVolumeRefNum mountedVolumeRefNum,
++ FSVolumeMountUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * InvokeFSVolumeUnmountUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++InvokeFSVolumeUnmountUPP(
++ FSVolumeOperation volumeOp,
++ void * clientData,
++ OSStatus err,
++ FSVolumeRefNum volumeRefNum,
++ pid_t dissenter,
++ FSVolumeUnmountUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++/*
++ * InvokeFSVolumeEjectUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++InvokeFSVolumeEjectUPP(
++ FSVolumeOperation volumeOp,
++ void * clientData,
++ OSStatus err,
++ FSVolumeRefNum volumeRefNum,
++ pid_t dissenter,
++ FSVolumeEjectUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++#if __MACH__
++ #ifdef __cplusplus
++ inline FSVolumeMountUPP NewFSVolumeMountUPP(FSVolumeMountProcPtr userRoutine) { return userRoutine; }
++ inline FSVolumeUnmountUPP NewFSVolumeUnmountUPP(FSVolumeUnmountProcPtr userRoutine) { return userRoutine; }
++ inline FSVolumeEjectUPP NewFSVolumeEjectUPP(FSVolumeEjectProcPtr userRoutine) { return userRoutine; }
++ inline void DisposeFSVolumeMountUPP(FSVolumeMountUPP) { }
++ inline void DisposeFSVolumeUnmountUPP(FSVolumeUnmountUPP) { }
++ inline void DisposeFSVolumeEjectUPP(FSVolumeEjectUPP) { }
++ inline void InvokeFSVolumeMountUPP(FSVolumeOperation volumeOp, void * clientData, OSStatus err, FSVolumeRefNum mountedVolumeRefNum, FSVolumeMountUPP userUPP) { (*userUPP)(volumeOp, clientData, err, mountedVolumeRefNum); }
++ inline void InvokeFSVolumeUnmountUPP(FSVolumeOperation volumeOp, void * clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter, FSVolumeUnmountUPP userUPP) { (*userUPP)(volumeOp, clientData, err, volumeRefNum, dissenter); }
++ inline void InvokeFSVolumeEjectUPP(FSVolumeOperation volumeOp, void * clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter, FSVolumeEjectUPP userUPP) { (*userUPP)(volumeOp, clientData, err, volumeRefNum, dissenter); }
++ #else
++ #define NewFSVolumeMountUPP(userRoutine) ((FSVolumeMountUPP)userRoutine)
++ #define NewFSVolumeUnmountUPP(userRoutine) ((FSVolumeUnmountUPP)userRoutine)
++ #define NewFSVolumeEjectUPP(userRoutine) ((FSVolumeEjectUPP)userRoutine)
++ #define DisposeFSVolumeMountUPP(userUPP)
++ #define DisposeFSVolumeUnmountUPP(userUPP)
++ #define DisposeFSVolumeEjectUPP(userUPP)
++ #define InvokeFSVolumeMountUPP(volumeOp, clientData, err, mountedVolumeRefNum, userUPP) (*userUPP)(volumeOp, clientData, err, mountedVolumeRefNum)
++ #define InvokeFSVolumeUnmountUPP(volumeOp, clientData, err, volumeRefNum, dissenter, userUPP) (*userUPP)(volumeOp, clientData, err, volumeRefNum, dissenter)
++ #define InvokeFSVolumeEjectUPP(volumeOp, clientData, err, volumeRefNum, dissenter, userUPP) (*userUPP)(volumeOp, clientData, err, volumeRefNum, dissenter)
++ #endif
++#endif
++
++
++/*
++ * Discussion:
++ * Options that can be passed to the FSMountServerVolumeCalls. These
++ * options are not for use with the local volumes.
++ */
++enum {
++
++ /*
++ * Specify this option if you do want the volume displayed as a stand
++ * along volume in the UI.
++ */
++ kFSMountServerMarkDoNotDisplay = (1 << 0),
++
++ /*
++ * Specify this option if you want the volume mounted on the mountdir
++ * passed in instead of in it.
++ */
++ kFSMountServerMountOnMountDir = (1 << 2)
++};
++
++
++/*
++ * Discussion:
++ * Deprecated options that can be passed to
++ * FSMountServerVolumeCalls. The options will have no effect on the
++ * OS version they are noted as deprecated on or later.
++ */
++enum {
++
++ /*
++ * Specify this option if you do not want other processes notified
++ * that this volume has been mounted. Deprecated on Mac OS X 10.5.
++ * Use kFSMountServerMarkDoNotDisplay instead.
++ */
++ kFSMountServerMountWithoutNotification = (1 << 1)
++};
++
++
++/*
++ * Discussion:
++ * Options that can be passed to the FSEjectVolume calls.
++ */
++enum {
++
++ /*
++ * Specify this option if you want the volume forcibly ejected.
++ * Force ejecting a volume will very likely result in data loss since
++ * the volume will be ejected even if there are open files on it or
++ * other volumes that share the same device. This option should be
++ * reserved for situations such as the backing store for a volume is
++ * gone (so the data is lost regardless).
++ */
++ kFSEjectVolumeForceEject = (1 << 0)
++};
++
++
++/*
++ * Discussion:
++ * Options that can be passed to the FSUnmountVolume calls.
++ */
++enum {
++
++ /*
++ * Specify this option if you want the volume forcibly unmounted.
++ * Force unmounting a volume will very likely result in data loss
++ * since the volume will be ejected even if there are open files on
++ * it. This option should be reserved for situations such as the
++ * backing store for a volume is gone (so the data is lost
++ * regardless).
++ */
++ kFSUnmountVolumeForceUnmount = (1 << 0)
++};
++
++/*
++ * FSCreateVolumeOperation()
++ *
++ * Discussion:
++ * This routine will return an FSVolumeOperation which can be used
++ * for an async volume operation. When the operation is completed
++ * the volumeOp should be disposed of to free the memory associated
++ * with the operation using FSDisposeVolumeOperation.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * volumeOp:
++ * The new FSVolumeOperation.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCreateVolumeOperation(FSVolumeOperation * volumeOp) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSDisposeVolumeOperation()
++ *
++ * Discussion:
++ * This routine will release the memory associated with the passed
++ * in volumeOp. It will return paramErr is the volumeOp is in use.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * volumeOp:
++ * The FSVolumeOperation to release.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSDisposeVolumeOperation(FSVolumeOperation volumeOp) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSMountLocalVolumeSync()
++ *
++ * Discussion:
++ * This routine will mount the disk specified by diskID at mountDir
++ * (or the default location if mountDir is NULL). This routine
++ * returns after the mount is complete.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * diskID:
++ * The disk to mount.
++ *
++ * mountDir:
++ * Pass in NULL (currently only NULL is supported).
++ *
++ * mountedVolumeRefNum:
++ * The volume ref num of the newly mounted volume.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMountLocalVolumeSync(CFStringRef diskID, CFURLRef mountDir, FSVolumeRefNum *mountedVolumeRefNum, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSMountLocalVolumeAsync()
++ *
++ * Discussion:
++ * This routine will start the process to disk specified by diskID
++ * at mountDir (or the default location if mountDir is NULL). If a
++ * callback is provided the provided function will be called when
++ * the mount operation is complete. Once this routine returns noErr
++ * the status of the operation can be found using
++ * FSGetAsyncMountStatus.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * diskID:
++ * The disk to mount.
++ *
++ * mountDir:
++ * Pass in NULL (currently only NULL is supported).
++ *
++ * volumeOp:
++ * An FSVolumeOperation returned by FSCreateVolumeOperation
++ *
++ * clientData:
++ * client data associated with the operation.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * callback:
++ * Function to call when mount is complete.
++ *
++ * runloop:
++ * Runloop to run on.
++ *
++ * runloopMode:
++ * Mode for runloop.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMountLocalVolumeAsync(CFStringRef diskID, CFURLRef mountDir, FSVolumeOperation volumeOp, void *clientData, OptionBits flags, FSVolumeMountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSMountServerVolumeSync()
++ *
++ * Discussion:
++ * This routine will mount the server specified by url at mountDir
++ * (or the default location if mountDir is NULL). An optional user
++ * and password can be passed in for authentication. If no user or
++ * password is provided then the underlying file system will handle
++ * authentication if required. This routine returns after the mount
++ * is complete.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * url:
++ * The server to mount.
++ *
++ * mountDir:
++ * The directory to mount the server to (default if NULL).
++ *
++ * user:
++ * String to pass as user for authentication.
++ *
++ * password:
++ * String to pass as password for authenticated log in.
++ *
++ * mountedVolumeRefNum:
++ * The volume ref num of the newly mounted volume.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMountServerVolumeSync(CFURLRef url, CFURLRef mountDir, CFStringRef user, CFStringRef password, FSVolumeRefNum *mountedVolumeRefNum, OptionBits flags) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSMountServerVolumeAsync()
++ *
++ * Discussion:
++ * This routine will start the process to mount the server specified
++ * by url at mountDir (or the default location if mountDir is NULL).
++ * An optional user and password can be passed in for
++ * authentication. If no user or password is provided then the
++ * underlying file system will handle authentication if required.
++ * If a callback is provided the provided function will be called
++ * when the mount operation is complete. Once this routine returns
++ * noErr the status of the operation can be found using
++ * FSGetAsyncMountStatus.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * url:
++ * The server to mount.
++ *
++ * mountDir:
++ * The directory to mount the server to (default if NULL).
++ *
++ * user:
++ * String to pass as user for authentication.
++ *
++ * password:
++ * String to pass as password for authenticated log in.
++ *
++ * volumeOp:
++ * An FSVolumeOperation returned by FSCreateVolumeOperation
++ *
++ * clientData:
++ * client data associated with the operation.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * callback:
++ * Function to call when mount is complete.
++ *
++ * runloop:
++ * Runloop run on.
++ *
++ * runloopMode:
++ * Mode for runloop.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMountServerVolumeAsync(CFURLRef url, CFURLRef mountDir, CFStringRef user, CFStringRef password, FSVolumeOperation volumeOp, void *clientData, OptionBits flags, FSVolumeMountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSGetAsyncMountStatus()
++ *
++ * Discussion:
++ * This routine returns the current status of an asynchronous mount
++ * operation. A return value of noErr signifies that the status
++ * parameter has been filled with valid information. If the status
++ * is kAsyncMountComplete then the rest of data returned is valid.
++ * If the status is anything else then the volumeOpStatus and
++ * mountedVolumeRefNum parameters are invalid (The clientData will
++ * be ok).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * volumeOp:
++ * The async volume operation to get status about.
++ *
++ * status:
++ * The status of the operation.
++ *
++ * volumeOpStatus:
++ * If status is kAsyncMountComplete then this contains the
++ * OSStatus for the operation.
++ *
++ * mountedVolumeRefNum:
++ * If status is kAsyncMountComplete and volumeOpStatus is noErr
++ * then this is the volume ref num for the newly mounted volume.
++ *
++ * clientData:
++ * client data associated with the original
++ * FSMountServerVolumeAsync operation.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetAsyncMountStatus(FSVolumeOperation volumeOp, FSMountStatus *status, OSStatus *volumeOpStatus, FSVolumeRefNum *mountedVolumeRefNum, void **clientData) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++
++/*
++ * FSUnmountVolumeSync()
++ *
++ * Discussion:
++ * This routine unmounts the volume specified by vRefNum. If the
++ * volume cannot be unmounted the pid of the process which denied
++ * the unmount will be returned in the dissenter parameter. This
++ * routine returns after the unmount is complete.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * The volume reference number of the volume to unmount.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * dissenter:
++ * pid of the process which denied the unmount if the unmount is
++ * denied.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSUnmountVolumeSync(FSVolumeRefNum vRefNum, OptionBits flags, pid_t *dissenter) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSUnmountVolumeAsync()
++ *
++ * Discussion:
++ * This routine starts the process of unmounting the volume
++ * specified by vRefNum. If a callback is provided the provided
++ * function will be called when the unmount operation is complete.
++ * Once this routine returns noErr the status of the operation can
++ * be found using FSGetAsyncUnmountStatus.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * The volume reference number of the volume to unmount.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * volumeOp:
++ * An FSVolumeOperation returned by FSCreateVolumeOperation
++ *
++ * clientData:
++ * client data associated with the operation.
++ *
++ * callback:
++ * Function to call when unmount is complete.
++ *
++ * runloop:
++ * Runloop to run on.
++ *
++ * runloopMode:
++ * Mode for runloop.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSUnmountVolumeAsync(FSVolumeRefNum vRefNum, OptionBits flags, FSVolumeOperation volumeOp, void *clientData, FSVolumeUnmountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSGetAsyncUnmountStatus()
++ *
++ * Discussion:
++ * This routine returns the current status of an asynchronous
++ * unmount operation. A return value of noErr signifies that the
++ * status parameter has been filled with valid information.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * volumeOp:
++ * The async volume operation to get status about.
++ *
++ * status:
++ * The status of the operation.
++ *
++ * volumeOpStatus:
++ * If status is kAsyncUnmountComplete then this contains the
++ * OSStatus for the operation.
++ *
++ * volumeRefNum:
++ * volume reference number of volume being unmounted.
++ *
++ * dissenter:
++ * pid of the process which denied the unmount if the unmount is
++ * denied.
++ *
++ * clientData:
++ * client data associated with the original
++ * FSMountServerVolumeAsync operation.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetAsyncUnmountStatus(FSVolumeOperation volumeOp, FSUnmountStatus *status, OSStatus *volumeOpStatus, FSVolumeRefNum *volumeRefNum, pid_t *dissenter, void **clientData) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSCancelVolumeOperation()
++ *
++ * Discussion:
++ * This routine will cancel and outstanding asynchronous volume
++ * mounting operation. It currently is only supported for server
++ * mounts.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * volumeOp:
++ * The async volume operation to cancel.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCancelVolumeOperation(FSVolumeOperation volumeOp) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSEjectVolumeSync()
++ *
++ * Discussion:
++ * This routine ejects the volume specified by vRefNum. If the
++ * volume cannot be ejected the pid of the process which denied the
++ * unmount will be returned in the dissenter parameter. This
++ * routine returns after the eject is complete. Ejecting a volume
++ * will result in the unmounting of other volumes on the same device.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * The volume reference number of the volume to eject.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * dissenter:
++ * pid of the process which denied the unmount if the eject is
++ * denied.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSEjectVolumeSync(FSVolumeRefNum vRefNum, OptionBits flags, pid_t *dissenter) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSEjectVolumeAsync()
++ *
++ * Discussion:
++ * This routine starts the process of ejecting the volume specified
++ * by vRefNum. If a callback is provided the provided function will
++ * be called when the eject operation is complete. Once this
++ * routine returns noErr the status of the operation can be found
++ * using FSGetAsyncEjectStatus.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * The volume reference number of the volume to eject.
++ *
++ * flags:
++ * Options for future use.
++ *
++ * volumeOp:
++ * An FSVolumeOperation returned by FSCreateVolumeOperation
++ *
++ * clientData:
++ * client data associated with the operation.
++ *
++ * callback:
++ * Function to call when eject is complete.
++ *
++ * runloop:
++ * Runloop to run on.
++ *
++ * runloopMode:
++ * Mode for runloop.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSEjectVolumeAsync(FSVolumeRefNum vRefNum, OptionBits flags, FSVolumeOperation volumeOp, void *clientData, FSVolumeEjectUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSGetAsyncEjectStatus()
++ *
++ * Discussion:
++ * This routine returns the current status of an asynchronous eject
++ * operation. A return value of noErr signifies that the status
++ * parameter has been filled with valid information.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * volumeOp:
++ * The async volume operation to get status about.
++ *
++ * status:
++ * The status of the operation.
++ *
++ * volumeOpStatus:
++ * If status is kAsyncEjectComplete then this contains the
++ * OSStatus for the operation.
++ *
++ * volumeRefNum:
++ * volume reference number of volume being ejected.
++ *
++ * dissenter:
++ * pid of the process which denied the unmount if the eject is
++ * denied.
++ *
++ * clientData:
++ * client data associated with the original
++ * FSMountServerVolumeAsync operation.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetAsyncEjectStatus(FSVolumeOperation volumeOp, FSEjectStatus *status, OSStatus *volumeOpStatus, FSVolumeRefNum *volumeRefNum, pid_t *dissenter, void **clientData) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSCopyDiskIDForVolume()
++ *
++ * Discussion:
++ * This routine returns a copy of the diskID for the passed in
++ * volume. The caller is responsible for releasing the CFString
++ * later.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * FSVolumeRefNum of the target volume.
++ *
++ * diskID:
++ * The diskID string associated with the target volume.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCopyDiskIDForVolume(FSVolumeRefNum vRefNum, CFStringRef *diskID) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * FSCopyURLForVolume()
++ *
++ * Discussion:
++ * This routine returns a copy of the url for the passed in volume.
++ * The caller is responsible for releasing the CFURL later.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * FSVolumeRefNum of the target volume.
++ *
++ * url:
++ * The url associated with the target volume.
++ *
++ * Availability:
++ * Mac OS X: in version 10.3 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCopyURLForVolume(FSVolumeRefNum vRefNum, CFURLRef *url) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
++
++
++/*
++ * FSGetVolumeForDiskID()
++ *
++ * Discussion:
++ * This routine returnes the FSVolumeRefNum for a given diskID.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * diskID:
++ * The diskID string associated with the target volume.
++ *
++ * vRefNum:
++ * FSVolumeRefNum of the volume which corresponds to the diskID.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetVolumeForDiskID(CFStringRef diskID, FSVolumeRefNum *vRefNum) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSCopyDADiskForVolume()
++ *
++ * Discussion:
++ * This routine returns a copy of the diskID for the passed in
++ * volume. The caller is responsible for releasing the CFString
++ * later.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * vRefNum:
++ * FSVolumeRefNum of the target volume.
++ *
++ * disk:
++ * The DADisk associated with the target volume.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCopyDADiskForVolume(FSVolumeRefNum vRefNum, DADiskRef *disk) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSGetVolumeForDADisk()
++ *
++ * Discussion:
++ * This routine returns the FSVolumeRefNum associated with the
++ * volume referenced by the passed in DADiskRef.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * disk:
++ * The DADiskRef of the target volume.
++ *
++ * vRefNum:
++ * FSVolumeRefNum of the volume which corresponds to the DADiskRef.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetVolumeForDADisk(DADiskRef disk, FSVolumeRefNum *vRefNum) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/* File Operation routines*/
++
++typedef struct __FSFileOperation* FSFileOperationRef;
++typedef UInt32 FSFileOperationStage;
++
++/*
++ * FSFileOperationClientContext
++ *
++ * Discussion:
++ * Structure containing the user-defined data and callbacks for
++ * FSFileOperation client contextual data.
++ */
++struct FSFileOperationClientContext {
++
++ /*
++ * The version number of the structure type being passed in as a
++ * parameter to FSCopyObjectAsync or FSMoveObjectAsync function.
++ * Valid version number is currently 0.
++ */
++ CFIndex version;
++
++ /*
++ * An arbitrary pointer to client-defined data, which can be
++ * associated with the operation and is passed to the callbacks.
++ */
++ void * info;
++
++ /*
++ * The callback used to add a retain for the operation on the info
++ * pointer for the life of the operation, and may be used for
++ * temporary references the operation needs to take. This callback
++ * returns the actual info pointer to store in the operation, almost
++ * always just the pointer passed as the parameter.
++ */
++ CFAllocatorRetainCallBack retain;
++
++ /*
++ * The callback used to remove a retain previously added for the
++ * operation on the info pointer.
++ */
++ CFAllocatorReleaseCallBack release;
++
++ /*
++ * The callback used to create a descriptive string representation of
++ * the info pointer (or the data pointed to by the info pointer) for
++ * debugging purposes. This is used by the CFCopyDescription()
++ * function.
++ */
++ CFAllocatorCopyDescriptionCallBack copyDescription;
++};
++typedef struct FSFileOperationClientContext FSFileOperationClientContext;
++
++/*
++ * FSFileOperationStatusProcPtr
++ *
++ * Discussion:
++ * Callback function which is called to return status of an
++ * operation. It will be called when an operation changes stages
++ * (including failing due to an error) or as updated information is
++ * available limited by the statusChangeInterval of the operation.
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * Operation receiving the callback.
++ *
++ * currentItem:
++ * FSRef to item operation is currently processing. If the
++ * operation is complete then currentItem refers to the target
++ * item (the new item corresponding to the source item in the
++ * destination directory).
++ *
++ * stage:
++ * Current stage of the operation.
++ *
++ * error:
++ * Either noErr or an error value which caused the operation to
++ * fail.
++ *
++ * statusDictionary:
++ * A CFDictionary with more detailed status information. The
++ * caller should not release this item. If the item is needed
++ * beyond the scope of the callback then it needs to be copied.
++ *
++ * info:
++ * The info pointer passed in by the client.
++ */
++typedef CALLBACK_API_C( void , FSFileOperationStatusProcPtr )(FSFileOperationRef fileOp, const FSRef *currentItem, FSFileOperationStage stage, OSStatus error, CFDictionaryRef statusDictionary, void *info);
++
++/*
++ * FSPathFileOperationStatusProcPtr
++ *
++ * Discussion:
++ * Callback function which is called to return status of an
++ * operation. It will be called when an operation changes stages
++ * (including failing due to an error) or as updated information is
++ * available limited by the statusChangeInterval of the operation.
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * Operation receiving the callback.
++ *
++ * currentItem:
++ * The UTF-8 path for the item operation is currently processing.
++ * The caller should not release this item. If the item is needed
++ * beyond the scope of the callback then it needs to be copied.
++ * If the operation is complete then currentItem refers to the
++ * target item (the new item corresponding to the source item in
++ * the destination directory).
++ *
++ * stage:
++ * Current stage of the operation.
++ *
++ * error:
++ * Either noErr or an error value which caused the operation to
++ * fail.
++ *
++ * statusDictionary:
++ * A CFDictionary with more detailed status information. The
++ * caller should not release this item. If the item is needed
++ * beyond the scope of the callback then it needs to be copied.
++ *
++ * info:
++ * The info pointer passed in by the client.
++ */
++typedef CALLBACK_API_C( void , FSPathFileOperationStatusProcPtr )(FSFileOperationRef fileOp, const char *currentItem, FSFileOperationStage stage, OSStatus error, CFDictionaryRef statusDictionary, void *info);
++
++/*
++ * FSFileOperationOptions
++ *
++ * Discussion:
++ * Set of flags that can be passed into an FSMoveObject(A)sync or
++ * FSCopyObject(A)sync call.
++ */
++enum {
++
++ /*
++ * Use the default options - no overwrite, fail if any source item
++ * cannot be read, cross volume moves OK.
++ */
++ kFSFileOperationDefaultOptions = 0,
++
++ /*
++ * Replace an item in the destDir that has the same name as an item
++ * being moved/copied there.
++ */
++ kFSFileOperationOverwrite = 0x01,
++
++ /*
++ * Skip items that cannot be read and continue copying/moving instead
++ * of failing the operation.
++ */
++ kFSFileOperationSkipSourcePermissionErrors = 0x02,
++
++ /*
++ * Do not perform a copy/delete to move an item across volume
++ * boundries - fail the operation instead.
++ */
++ kFSFileOperationDoNotMoveAcrossVolumes = 0x04,
++
++ /*
++ * Skip the preflight for a directory move/copy. This will limit the
++ * status information that can be returned since the totals will not
++ * be calculated.
++ */
++ kFSFileOperationSkipPreflight = 0x08
++};
++
++
++/*
++ * FSFileOperationStage
++ *
++ * Discussion:
++ * The stage corresponds to the state of an asynchronous File
++ * Operation. The stage is reported in the operation's status
++ * callback or as part of an FSFileOperationCopyStatus call.
++ */
++enum {
++
++ /*
++ * Operation has not started yet.
++ */
++ kFSOperationStageUndefined = 0,
++
++ /*
++ * Operation is calulating sizes and number of items involved in the
++ * operation.
++ */
++ kFSOperationStagePreflighting = 1,
++
++ /*
++ * Operation is in progress.
++ */
++ kFSOperationStageRunning = 2,
++
++ /*
++ * Operation is done.
++ */
++ kFSOperationStageComplete = 3
++};
++
++/* FSFileOperation status dictionary keys*/
++/*
++ * kFSOperationTotalBytesKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the total number of bytes that will be moved/copied by
++ * this operation as a CFNumber. This value is not available for a
++ * directory operation if kFSFileOperationSkipPreflight was
++ * specified.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationTotalBytesKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationBytesCompleteKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the number of bytes that have been moved/copied by this
++ * operation at the time the status call was made as a CFNumber.
++ * During the preflight stage this value represents the currently
++ * known number of bytes that will be copied/moved.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationBytesCompleteKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationBytesRemainingKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the number of bytes that remain to be moved/copied by
++ * this operation at the time the status call was made as a
++ * CFNumber. This value is not available for a directory operation
++ * if kFSFileOperationSkipPreflight was specified.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationBytesRemainingKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationTotalObjectsKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the total number of objects that will be moved/copied by
++ * this operation as a CFNumber. This value is not available for a
++ * directory operation if kFSFileOperationSkipPreflight was
++ * specified.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationTotalObjectsKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationObjectsCompleteKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the number of objects that have been moved/copied by this
++ * operation at the time the status call was made as a CFNumber.
++ * During the preflight stage this value represents the currently
++ * known number of objects that will be copied/moved.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationObjectsCompleteKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationObjectsRemainingKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the number of objects that remain to be moved/copied by
++ * this operation at the time the status call was made as a
++ * CFNumber. This value is not available for a directory operation
++ * if kFSFileOperationSkipPreflight was specified.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationObjectsRemainingKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationTotalUserVisibleObjectsKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the total number of user visibleobjects that will be
++ * moved/copied by this operation as a CFNumber. This value is not
++ * available for a directory operation if
++ * kFSFileOperationSkipPreflight was specified. A packaged
++ * application is one user visible object even though it is made up
++ * of multiple files and directories.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationTotalUserVisibleObjectsKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationUserVisibleObjectsCompleteKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the number of user visible objects that have been
++ * moved/copied by this operation at the time the status call was
++ * made as a CFNumber. During the preflight stage this value
++ * represents the currently known number of objects that will be
++ * copied/moved. A packaged application is one user visible object
++ * even though it is made up of multiple files and directories.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationUserVisibleObjectsCompleteKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationUserVisibleObjectsRemainingKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the number of user visible objects that remain to be
++ * moved/copied by this operation at the time the status call was
++ * made as a CFNumber. This value is not available for a directory
++ * operation if kFSFileOperationSkipPreflight was specified. A
++ * packaged application is one user visible object even though it is
++ * made up of multiple files and directories.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationUserVisibleObjectsRemainingKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * kFSOperationThroughputKey
++ *
++ * Discussion:
++ * This value associated with this key in a status dictionary
++ * returns the current throughput for the operation in bytes per
++ * second as a CFNumber.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern const CFStringRef kFSOperationThroughputKey AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++/*
++ * FSCopyObjectSync()
++ *
++ * Discussion:
++ * This routine will copy the source object into the destination
++ * directory. The source object can be a file or directory.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * source:
++ * The source object to copy.
++ *
++ * destDir:
++ * The destination directory for the copy.
++ *
++ * destName:
++ * The name for the new object in the destination directory. Pass
++ * NULL to use the source object name.
++ *
++ * target:
++ * Upon successful completion a ref to the newly created object.
++ * If source is a directory then target will be the corresponding
++ * object in the destination directory.
++ *
++ * options:
++ * One or more FSFileOperation flags
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCopyObjectSync(const FSRef *source, const FSRef *destDir, CFStringRef destName, FSRef *target, OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSMoveObjectSync()
++ *
++ * Discussion:
++ * This routine will move the source object into the destination
++ * directory. The source object can be a file or directory. If a
++ * destName is provided then the object will be renamed as well as
++ * moved. By default a move across volumes will result in a copy
++ * and deletion of the original source. The
++ * kFSFileOperationDoNotMoveAcrossVolumes flag will cause cross
++ * volume moves to do nothing and return an error.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * source:
++ * The source object to move.
++ *
++ * destDir:
++ * The destination directory for the move.
++ *
++ * destName:
++ * The name for the object in the destination directory. Pass
++ * NULL to use the source object name.
++ *
++ * target:
++ * Upon successful completion a ref to the object in its new
++ * location. If source is a directory then target will be the
++ * corresponding object in the destination directory.
++ *
++ * options:
++ * One or more FSFileOperation flags
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMoveObjectSync(const FSRef *source, const FSRef *destDir, CFStringRef destName, FSRef *target, OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSMoveObjectToTrashSync()
++ *
++ * Discussion:
++ * This routine will move the source object into the trash. The
++ * source object can be a file or directory. If the volume the
++ * source object resides on does not support a trash folder then
++ * this call will return an error (this is the same circumstance
++ * that triggers the delete immediately behavior in the Finder).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * source:
++ * The source object to move to the trash.
++ *
++ * target:
++ * Upon successful completion a ref the object in the trash. If
++ * source is a directory then target will be the corresponding
++ * object in the destination directory.
++ *
++ * options:
++ * One or more FSFileOperation flags
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMoveObjectToTrashSync(const FSRef *source, FSRef *target, OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSPathCopyObjectSync()
++ *
++ * Discussion:
++ * This routine will copy the source object into the destination
++ * directory. The source object can be a file or directory.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * sourcePath:
++ * The UTF-8 path string of the source object to copy.
++ *
++ * destDirPath:
++ * The UTF-8 path of the destination directory for the copy.
++ *
++ * destName:
++ * The name for the new object in the destination directory. Pass
++ * NULL to use the source object name.
++ *
++ * targetPath:
++ * A pointer to a char * to allow returning the path to the newly
++ * created object. The path is allocated using malloc and it is
++ * the caller's responsibility to free. The pointer will be set
++ * to NULL if the copy failed.
++ *
++ * options:
++ * One or more FSFileOperation flags
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathCopyObjectSync(const char *sourcePath, const char *destDirPath, CFStringRef destName, char **targetPath, OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSPathMoveObjectSync()
++ *
++ * Discussion:
++ * This routine will move the source object into the destination
++ * directory. The source object can be a file or directory. If a
++ * destName is provided then the object will be renamed as well as
++ * moved. By default a move across volumes will result in a copy
++ * and deletion of the original source. The
++ * kFSFileOperationDoNotMoveAcrossVolumes flag will cause cross
++ * volume moves to do nothing and return an error.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * sourcePath:
++ * The UTF-8 path string of the source object to move.
++ *
++ * destDirPath:
++ * The UTF-8 path of the destination directory for the move.
++ *
++ * destName:
++ * The name for the moved object in the destination directory.
++ * Pass NULL to use the source object name.
++ *
++ * targetPath:
++ * A pointer to a char * to allow returning the path to the newly
++ * created object. The path is allocated using malloc and it is
++ * the caller's responsibility to free. The pointer will be set
++ * to NULL if the move failed.
++ *
++ * options:
++ * One or more FSFileOperation flags
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathMoveObjectSync(const char *sourcePath, const char *destDirPath, CFStringRef destName, char **targetPath, OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSPathMoveObjectToTrashSync()
++ *
++ * Discussion:
++ * This routine will move the source object into the trash. The
++ * source object can be a file or directory. If the volume the
++ * source object resides on does not support a trash folder then
++ * this call will return an error (this is the same circumstance
++ * that triggers the delete immediately behavior in the Finder).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * sourcePath:
++ * The UTF-8 path string of the source object to move.
++ *
++ * targetPath:
++ * A pointer to a char * to allow returning the path to the newly
++ * created object. The path is allocated using malloc and it is
++ * the caller's responsibility to free. The pointer will be set
++ * to NULL if the move failed.
++ *
++ * options:
++ * One or more FSFileOperation flags
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathMoveObjectToTrashSync(const char *sourcePath, char **targetPath, OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSFileOperationGetTypeID()
++ *
++ * Discussion:
++ * This routine will return the CFTypeID for the FSFileOpeation type.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Result:
++ * the CFTypeID for the FSFileOperation type.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern CFTypeID FSFileOperationGetTypeID(void) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileOperationCreate()
++ *
++ * Discussion:
++ * This routine will create an FSFileOperation for use with either
++ * FSCopyObjectAsync or FSMoveObjectAsync.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alloc:
++ * The CFAllocator to use. Pass NULL for the default allocator.
++ *
++ * Result:
++ * A reference to the newly created object or NULL if the creation
++ * failed.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern FSFileOperationRef FSFileOperationCreate(CFAllocatorRef alloc) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileOperationScheduleWithRunLoop()
++ *
++ * Discussion:
++ * Schedule the given operation on the specified runloop and mode. A
++ * FSFileOperation can be scheduled on multiple runloop/mode
++ * combinations. An opertion must be scheduled on at least one
++ * runloop.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation to schedule.
++ *
++ * runLoop:
++ * The runLoop on which to schedule the operation. Must be
++ * non-NULL.
++ *
++ * runLoopMode:
++ * The mode on which to schedule the operation. Must be non-NULL.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileOperationScheduleWithRunLoop(FSFileOperationRef fileOp, CFRunLoopRef runLoop, CFStringRef runLoopMode) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileOperationUnscheduleFromRunLoop()
++ *
++ * Discussion:
++ * Unschedule the given operation from the specified runloop and
++ * mode.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation to unschedule.
++ *
++ * runLoop:
++ * The runLoop from which to unschedule the operation. Must be
++ * non-NULL.
++ *
++ * runLoopMode:
++ * The mode from which to unschedule the operation. Must be
++ * non-NULL.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileOperationUnscheduleFromRunLoop(FSFileOperationRef fileOp, CFRunLoopRef runLoop, CFStringRef runLoopMode) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSCopyObjectAsync()
++ *
++ * Discussion:
++ * This routine will start an asynchronous copy of the object
++ * specified by source to the directory specified by destDir. If
++ * destName is provided then the new object will be renamed to
++ * destName. If destName is not provided then the name of the
++ * source object will be used. Status callbacks will occur on one
++ * of the runloop/mode combinations that the operation was scheduled
++ * on (and is running).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation object created for this operation.
++ *
++ * source:
++ * The source object to copy.
++ *
++ * destDir:
++ * The destination directory for the copy.
++ *
++ * destName:
++ * The name for the new object in the destination directory. Pass
++ * NULL to use the source object name.
++ *
++ * flags:
++ * One or more FSFileOperation flags
++ *
++ * callback:
++ * An optional FSFileOperationStatusProcPtr which will be called
++ * with status updates as the copy proceeds.
++ *
++ * statusChangeInterval:
++ * The minimum time between callbacks within a single stage of an
++ * operation.
++ *
++ * clientContext:
++ * Client contextual information to associate with this operation.
++ * The info pointer will be passed to status callbacks.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSCopyObjectAsync(FSFileOperationRef fileOp, const FSRef *source, const FSRef *destDir, CFStringRef destName, OptionBits flags, FSFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSMoveObjectAsync()
++ *
++ * Discussion:
++ * This routine will start an asynchronous move of the object
++ * specified by source to the directory specified by destDir. If
++ * destName is provided then the new object will be renamed to
++ * destName. If destName is not provided then the name of the
++ * source object will be used. Status callbacks will occur on one
++ * of the runloop/mode combinations that the operation was scheduled
++ * on (and is running). By default a move across volumes will
++ * result in a copy and deletion of the original source. The
++ * kFSFileOperationDoNotMoveAcrossVolumes flag will cause cross
++ * volume moves to do nothing and return an error.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation object created for this operation.
++ *
++ * source:
++ * The source object to move.
++ *
++ * destDir:
++ * The destination directory for the move.
++ *
++ * destName:
++ * The name for the object in the destination directory. Pass
++ * NULL to leave the name unchanged.
++ *
++ * flags:
++ * One or more FSFileOperation flags
++ *
++ * callback:
++ * An optional FSFileOperationStatusProcPtr which will be called
++ * with status updates as the copy proceeds.
++ *
++ * statusChangeInterval:
++ * The minimum time between callbacks within a single stage of an
++ * operation.
++ *
++ * clientContext:
++ * Client contextual information to associate with this operation.
++ * The info pointer will be passed to status callbacks.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMoveObjectAsync(FSFileOperationRef fileOp, const FSRef *source, const FSRef *destDir, CFStringRef destName, OptionBits flags, FSFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSMoveObjectToTrashAsync()
++ *
++ * Discussion:
++ * This routine will start an asynchronous move of the object
++ * specified by source to the trash. If the volume the source
++ * object resides on does not support a trash folder then the
++ * operation will return an error (this is the same circumstance
++ * that triggers the delete immediately behavior in the Finder).
++ * Status callbacks will occur on one of the runloop/mode
++ * combinations that the operation was scheduled on (and is
++ * running). Upon successul complettion of the operation the last
++ * currentItem (from either the last status callback or retrieved by
++ * FSFileOperationCopyStatus) will be object in the trash.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation object created for this operation.
++ *
++ * source:
++ * The source object to move.
++ *
++ * flags:
++ * One or more FSFileOperation flags
++ *
++ * callback:
++ * An optional FSFileOperationStatusProcPtr which will be called
++ * with status updates as the move proceeds.
++ *
++ * statusChangeInterval:
++ * The minimum time between callbacks within a single stage of an
++ * operation.
++ *
++ * clientContext:
++ * Client contextual information to associate with this operation.
++ * The info pointer will be passed to status callbacks.
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSMoveObjectToTrashAsync(FSFileOperationRef fileOp, const FSRef *source, OptionBits flags, FSFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSPathCopyObjectAsync()
++ *
++ * Discussion:
++ * This routine will start an asynchronous copy of the object
++ * specified by source to the directory specified by destDir. If
++ * destName is provided then the new object will be renamed to
++ * destName. If destName is not provided then the name of the
++ * source object will be used. Status callbacks will occur on one
++ * of the runloop/mode combinations that the operation was scheduled
++ * on (and is running).
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation object created for this operation.
++ *
++ * sourcePath:
++ * The UTF-8 path string of the source object to copy.
++ *
++ * destDirPath:
++ * The UTF-8 path of the destination directory for the copy.
++ *
++ * destName:
++ * The name for the new object in the destination directory. Pass
++ * NULL to use the source object name.
++ *
++ * flags:
++ * One or more FSFileOperation flags
++ *
++ * callback:
++ * An optional FSPathFileOperationStatusProcPtr which will be
++ * called with status updates as the copy proceeds.
++ *
++ * statusChangeInterval:
++ * The minimum time between callbacks within a single stage of an
++ * operation.
++ *
++ * clientContext:
++ * Client contextual information to associate with this operation.
++ * The info pointer will be passed to status callbacks.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathCopyObjectAsync(FSFileOperationRef fileOp, const char *sourcePath, const char *destDirPath, CFStringRef destName, OptionBits flags, FSPathFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSPathMoveObjectAsync()
++ *
++ * Discussion:
++ * This routine will start an asynchronous move of the object
++ * specified by source to the directory specified by destDir. If
++ * destName is provided then the new object will be renamed to
++ * destName. If destName is not provided then the name of the
++ * source object will be used. Status callbacks will occur on one
++ * of the runloop/mode combinations that the operation was scheduled
++ * on (and is running). By default a move across volumes will
++ * result in a copy and deletion of the original source. The
++ * kFSFileOperationDoNotMoveAcrossVolumes flag will cause cross
++ * volume moves to do nothing and return an error.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation object created for this operation.
++ *
++ * sourcePath:
++ * The UTF-8 path string of the source object to move.
++ *
++ * destDirPath:
++ * The UTF-8 path of the destination directory for the move.
++ *
++ * destName:
++ * The name for the object in the destination directory. Pass
++ * NULL to leave the name unchanged.
++ *
++ * flags:
++ * One or more FSFileOperation flags
++ *
++ * callback:
++ * An optional FSPathFileOperationStatusProcPtr which will be
++ * called with status updates as the move proceeds.
++ *
++ * statusChangeInterval:
++ * The minimum time between callbacks within a single stage of an
++ * operation.
++ *
++ * clientContext:
++ * Client contextual information to associate with this operation.
++ * The info pointer will be passed to status callbacks.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathMoveObjectAsync(FSFileOperationRef fileOp, const char *sourcePath, const char *destDirPath, CFStringRef destName, OptionBits flags, FSPathFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSPathMoveObjectToTrashAsync()
++ *
++ * Discussion:
++ * This routine will start an asynchronous move of the object
++ * specified by source to the trash. If the volume the source
++ * object resides on does not support a trash folder then this call
++ * will return an error (this is the same circumstance that triggers
++ * the delete immediately behavior in the Finder). Status callbacks
++ * will occur on one of the runloop/mode combinations that the
++ * operation was scheduled on (and is running). Note that the
++ * object may be renamed when placed in the trash. Upon successful
++ * completion of the operation the last currentItem (from either the
++ * last status callback or retrieved by
++ * FSPathFileOperationCopyStatus) will be object in the trash.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation object created for this operation.
++ *
++ * sourcePath:
++ * The UTF-8 path string of the source object to move.
++ *
++ * flags:
++ * One or more FSFileOperation flags
++ *
++ * callback:
++ * An optional FSPathFileOperationStatusProcPtr which will be
++ * called with status updates as the move proceeds.
++ *
++ * statusChangeInterval:
++ * The minimum time between callbacks within a single stage of an
++ * operation.
++ *
++ * clientContext:
++ * Client contextual information to associate with this operation.
++ * The info pointer will be passed to status callbacks.
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathMoveObjectToTrashAsync(FSFileOperationRef fileOp, const char *sourcePath, OptionBits flags, FSPathFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSFileOperationCancel()
++ *
++ * Discussion:
++ * Cancels the specified FSFileOperation. This makes the operation
++ * ineligible to run on any runloop.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation to cancel.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileOperationCancel(FSFileOperationRef fileOp) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileOperationCopyStatus()
++ *
++ * Discussion:
++ * This routine returns the current status of an FSFileOperation.
++ * The status dictionary must be released by the caller.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation from which to retrieve status information.
++ *
++ * currentItem:
++ * FSRef to item operation is currently processing. If the
++ * operation is complete then currentItem refers to the target
++ * item (the new item corresponding to the source item in the
++ * destination directory).
++ *
++ * stage:
++ * current stage of the operation.
++ *
++ * error:
++ * Either noErr or an error value which caused the operation to
++ * fail.
++ *
++ * statusDictionary:
++ * A CFDictionary with more detailed status information. The
++ * caller is responsible for releasing the object when done with
++ * it.
++ *
++ * info:
++ * The info pointer passed in by the client.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileOperationCopyStatus(FSFileOperationRef fileOp, FSRef *currentItem, FSFileOperationStage *stage, OSStatus *error, CFDictionaryRef *statusDictionary, void **info) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSPathFileOperationCopyStatus()
++ *
++ * Discussion:
++ * This routine returns the current status of an FSFileOperation.
++ * The status dictionary must be released by the caller.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileOp:
++ * The FSFileOperation from which to retrieve status information.
++ *
++ * currentItem:
++ * A path to the item operation is currently processing. The
++ * caller is responsible for calling free to dispose of the path
++ * string. If the operation is complete then currentItem refers
++ * to the target item (the new item corresponding to the source
++ * item in the destination directory).
++ *
++ * stage:
++ * current stage of the operation.
++ *
++ * error:
++ * Either noErr or an error value which caused the operation to
++ * fail.
++ *
++ * statusDictionary:
++ * A CFDictionary with more detailed status information. The
++ * caller is responsible for releasing the object when done with
++ * it.
++ *
++ * info:
++ * The info pointer passed in by the client.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSPathFileOperationCopyStatus(FSFileOperationRef fileOp, char **currentItem, FSFileOperationStage *stage, OSStatus *error, CFDictionaryRef *statusDictionary, void **info) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/* String conversion functions*/
++/*
++ * FSCreateStringFromHFSUniStr()
++ *
++ * Discussion:
++ * Creates a CFString from a HFSUniStr255.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alloc:
++ * The CFAllocator to use. Pass NULL for the default allocator.
++ *
++ * uniStr:
++ * A HFSUniStr255 to use as the source value for the CFString.
++ *
++ * Result:
++ * A CFStringRef created from the HFSUniStr255 or NULL.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern CFStringRef FSCreateStringFromHFSUniStr(CFAllocatorRef alloc, const HFSUniStr255 *uniStr) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSGetHFSUniStrFromString()
++ *
++ * Discussion:
++ * Convert a CFString into a HFSUniStr255.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * theString:
++ * The CFString to convert to a HFSUniStr255.
++ *
++ * uniStr:
++ * A pointer to a HFSUniStr255 which will be filled in using the
++ * value of theString.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetHFSUniStrFromString(CFStringRef theString, HFSUniStr255 *uniStr) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/* ACL support*/
++
++/*
++ * FSFileSecurityGetTypeID()
++ *
++ * Discussion:
++ * This routine will return the CFTypeID for the FSFileSecurity type.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Result:
++ * the CFTypeID for the FSFilSecurity type.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern CFTypeID FSFileSecurityGetTypeID(void) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityCreate()
++ *
++ * Discussion:
++ * This routine will create an FSFileSecurity object. The object
++ * should be released using CFRelease when it is no longer needed.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * alloc:
++ * The CFAllocator to use. Pass NULL for the default allocator.
++ *
++ * Result:
++ * A reference to the newly created object or NULL if the creation
++ * failed.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern FSFileSecurityRef FSFileSecurityCreate(CFAllocatorRef alloc) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityCreateWithFSPermissionInfo()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern FSFileSecurityRef FSFileSecurityCreateWithFSPermissionInfo(CFAllocatorRef alloc, const FSPermissionInfo *permissions) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityRefCreateCopy()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern FSFileSecurityRef FSFileSecurityRefCreateCopy(CFAllocatorRef alloc, FSFileSecurityRef fileSec) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/* get and set properties*/
++
++/*
++ * FSFileSecurityGetOwnerUUID()
++ *
++ * Discussion:
++ * This routine will get the owner UUID associated with the passed
++ * in FSFileSecurityRef. In there is no owner UUID property
++ * associated with the FSFileSecurity object then
++ * errFSPropertyNotValid will be returned.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to get the owner UUID
++ * from.
++ *
++ * owner:
++ * A pointer to storage for the owner UUID associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecurityGetOwnerUUID(FSFileSecurityRef fileSec, CFUUIDBytes *owner) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecuritySetOwnerUUID()
++ *
++ * Discussion:
++ * This routine will set the owner UUID associated with the passed
++ * in FSFileSecurityRef.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the owner UUID
++ * for.
++ *
++ * owner:
++ * The UUID to set as the owner UUID associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecuritySetOwnerUUID(FSFileSecurityRef fileSec, const CFUUIDBytes *owner) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityGetGroupUUID()
++ *
++ * Discussion:
++ * This routine will get the group UUID associated with the passed
++ * in FSFileSecurityRef. In there is no group UUID property
++ * associated with the FSFileSecurity object then
++ * errFSPropertyNotValid will be returned.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to get the group UUID
++ * from.
++ *
++ * group:
++ * A pointer to storage for the owner UUID associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecurityGetGroupUUID(FSFileSecurityRef fileSec, CFUUIDBytes *group) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecuritySetGroupUUID()
++ *
++ * Discussion:
++ * This routine will set the group UUID associated with the passed
++ * in FSFileSecurityRef.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the group UUID
++ * for.
++ *
++ * group:
++ * The UUID to set as the group UUID associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecuritySetGroupUUID(FSFileSecurityRef fileSec, const CFUUIDBytes *group) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityCopyAccessControlList()
++ *
++ * Discussion:
++ * This routine will copy the acl_t associated with the passed in
++ * FSFileSecurityRef. The accessControlList returned by this
++ * routine is a copy and must be released using acl_free. The
++ * accessControlList is an acl_t and is meant to be manipulated
++ * using the acl calls defined in <sys/acl.h>. If there is no acl
++ * property associated with the FSFileSecurity object then
++ * errFSPropertyNotValid will be returned.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the group for.
++ *
++ * accessControlList:
++ * A pointer to storage for the acl_t associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecurityCopyAccessControlList(FSFileSecurityRef fileSec, acl_t *accessControlList) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecuritySetAccessControlList()
++ *
++ * Discussion:
++ * This routine will set the acl associated with the passed in
++ * FSFileSecurityRef. To request removal of an ACL from a filesystem
++ * object pass in kFSFileSecurityRemoveACL as the accessControlList
++ * and set the fileSec on the target object using FSSetCatalogInfo.
++ * Setting the accessControlList to NULL will result in the property
++ * being unset.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the group for.
++ *
++ * accessControlList:
++ * The acl_t to set as the acl associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecuritySetAccessControlList(FSFileSecurityRef fileSec, acl_t accessControlList) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityGetOwner()
++ *
++ * Discussion:
++ * This routine will get the owner uid associated with the passed in
++ * FSFileSecurityRef. In there is no owner property associated with
++ * the FSFileSecurity object then errFSPropertyNotValid will be
++ * returned. Note that this value is not the owner UUID which is
++ * returned by FSFileSecurityGetOwnerUUID.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to get the owner from.
++ *
++ * owner:
++ * A pointer to storage for the owner uid associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecurityGetOwner(FSFileSecurityRef fileSec, UInt32 *owner) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecuritySetOwner()
++ *
++ * Discussion:
++ * This routine will set the owner uid associated with the passed in
++ * FSFileSecurityRef.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the owner for.
++ *
++ * owner:
++ * The uid to set as the owner associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecuritySetOwner(FSFileSecurityRef fileSec, UInt32 owner) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityGetGroup()
++ *
++ * Discussion:
++ * This routine will get the group gid associated with the passed in
++ * FSFileSecurityRef. In there is no group property associated with
++ * the FSFileSecurity object then errFSPropertyNotValid will be
++ * returned.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to get the owner from.
++ *
++ * group:
++ * A pointer to storage for the group gid associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecurityGetGroup(FSFileSecurityRef fileSec, UInt32 *group) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecuritySetGroup()
++ *
++ * Discussion:
++ * This routine will set the group gid associated with the passed in
++ * FSFileSecurityRef.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the group for.
++ *
++ * group:
++ * The gid to set as the group associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecuritySetGroup(FSFileSecurityRef fileSec, UInt32 group) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecurityGetMode()
++ *
++ * Discussion:
++ * This routine will get the mode associated with the passed in
++ * FSFileSecurityRef. In there is no mode property associated with
++ * the FSFileSecurity object then errFSPropertyNotValid will be
++ * returned.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the group for.
++ *
++ * mode:
++ * A pointer to storage for the mode associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecurityGetMode(FSFileSecurityRef fileSec, UInt16 *mode) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++/*
++ * FSFileSecuritySetMode()
++ *
++ * Discussion:
++ * This routine will set the mode associated with the passed in
++ * FSFileSecurityRef.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Parameters:
++ *
++ * fileSec:
++ * A reference to the FSFileSecurity object to set the group for.
++ *
++ * mode:
++ * The mode to set as the mode associated with fileSec.
++ *
++ * Availability:
++ * Mac OS X: in version 10.4 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFileSecuritySetMode(FSFileSecurityRef fileSec, UInt16 mode) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
++
++
++
++enum {
++ /* old names for ioPosMode flags */
++ pleaseCacheBit = 4, /* old name of kFSPleaseCacheBit */
++ pleaseCacheMask = 0x0010,
++ noCacheBit = 5, /* old name of kFSNoCacheBit */
++ noCacheMask = 0x0020,
++ rdVerifyBit = 6, /* old name of kFSRdVerifyBit */
++ rdVerifyMask = 0x0040,
++ rdVerify = 64, /* old name of rdVerifyMask */
++ forceReadBit = 6, /* old name of kFSForceReadBit */
++ forceReadMask = 0x0040,
++ newLineBit = 7, /* old name of kFSNewLineBit */
++ newLineMask = 0x0080,
++ newLineCharMask = 0xFF00 /* old name of kFSNewLineCharMask */
++};
++
++
++/* mapping codes (ioObjType) for MapName & MapID */
++enum {
++ kOwnerID2Name = 1,
++ kGroupID2Name = 2,
++ kOwnerName2ID = 3,
++ kGroupName2ID = 4, /* types of oj object to be returned (ioObjType) for _GetUGEntry */
++ kReturnNextUser = 1,
++ kReturnNextGroup = 2,
++ kReturnNextUG = 3
++};
++
++/* vcbFlags bits */
++enum {
++ kVCBFlagsIdleFlushBit = 3, /* Set if volume should be flushed at idle time */
++ kVCBFlagsIdleFlushMask = 0x0008,
++ kVCBFlagsHFSPlusAPIsBit = 4, /* Set if volume implements HFS Plus APIs itself (not via emulation) */
++ kVCBFlagsHFSPlusAPIsMask = 0x0010,
++ kVCBFlagsHardwareGoneBit = 5, /* Set if disk driver returned a hardwareGoneErr to Read or Write */
++ kVCBFlagsHardwareGoneMask = 0x0020,
++ kVCBFlagsVolumeDirtyBit = 15, /* Set if volume information has changed since the last FlushVol */
++ kVCBFlagsVolumeDirtyMask = 0x8000
++};
++
++/* ioVAtrb bits returned by PBHGetVInfo and PBXGetVolInfo */
++enum {
++ kioVAtrbDefaultVolumeBit = 5, /* Set if the volume is the default volume */
++ kioVAtrbDefaultVolumeMask = 0x0020,
++ kioVAtrbFilesOpenBit = 6, /* Set if there are open files or iterators */
++ kioVAtrbFilesOpenMask = 0x0040,
++ kioVAtrbHardwareLockedBit = 7, /* Set if volume is locked by a hardware setting */
++ kioVAtrbHardwareLockedMask = 0x0080,
++ kioVAtrbSoftwareLockedBit = 15, /* Set if volume is locked by software */
++ kioVAtrbSoftwareLockedMask = 0x8000
++};
++
++/* ioFlAttrib bits returned by PBGetCatInfo */
++enum {
++ /* file and directory attributes in ioFlAttrib */
++ kioFlAttribLockedBit = 0, /* Set if file or directory is locked */
++ kioFlAttribLockedMask = 0x01,
++ kioFlAttribResOpenBit = 2, /* Set if resource fork is open */
++ kioFlAttribResOpenMask = 0x04,
++ kioFlAttribDataOpenBit = 3, /* Set if data fork is open */
++ kioFlAttribDataOpenMask = 0x08,
++ kioFlAttribDirBit = 4, /* Set if this is a directory */
++ kioFlAttribDirMask = 0x10,
++ ioDirFlg = 4, /* Set if this is a directory (old name) */
++ ioDirMask = 0x10,
++ kioFlAttribCopyProtBit = 6, /* Set if AppleShare server "copy-protects" the file */
++ kioFlAttribCopyProtMask = 0x40,
++ kioFlAttribFileOpenBit = 7, /* Set if file (either fork) is open */
++ kioFlAttribFileOpenMask = 0x80, /* ioFlAttrib for directories only */
++ kioFlAttribInSharedBit = 2, /* Set if the directory is within a shared area of the directory hierarchy */
++ kioFlAttribInSharedMask = 0x04,
++ kioFlAttribMountedBit = 3, /* Set if the directory is a share point that is mounted by some user */
++ kioFlAttribMountedMask = 0x08,
++ kioFlAttribSharePointBit = 5, /* Set if the directory is a share point */
++ kioFlAttribSharePointMask = 0x20
++};
++
++/* ioFCBFlags bits returned by PBGetFCBInfo */
++/* IMPORTANT: These ioFCBFlags bit constants are for the SInt16 FCBPBRec.ioFCBFlags field returned */
++/* by PBGetFCBInfoSync and PBGetFCBInfoAsync. Do not use them with the FSForkInfo.flags */
++/* field returned by the FSGetForkCBInfo, PBGetForkCBInfoSync and PBGetForkCBInfoAsyn functions. */
++enum {
++ kioFCBWriteBit = 8, /* Data can be written to this file */
++ kioFCBWriteMask = 0x0100,
++ kioFCBResourceBit = 9, /* This file is a resource fork */
++ kioFCBResourceMask = 0x0200,
++ kioFCBWriteLockedBit = 10, /* File has a locked byte range */
++ kioFCBWriteLockedMask = 0x0400,
++ kioFCBLargeFileBit = 11, /* File may grow beyond 2GB; cache uses file blocks, not bytes */
++ kioFCBLargeFileMask = 0x0800,
++ kioFCBSharedWriteBit = 12, /* File is open for shared write access */
++ kioFCBSharedWriteMask = 0x1000,
++ kioFCBFileLockedBit = 13, /* File is locked (write-protected) */
++ kioFCBFileLockedMask = 0x2000,
++ kioFCBOwnClumpBit = 14, /* File has clump size specified in FCB */
++ kioFCBOwnClumpMask = 0x4000,
++ kioFCBModifiedBit = 15, /* File has changed since it was last flushed */
++ kioFCBModifiedMask = 0x8000
++};
++
++/* IMPORTANT: These FSForkInfoFlags constants are for use with the FSForkInfo.flags */
++/* field returned by the FSGetForkCBInfo, PBGetForkCBInfoSync and PBGetForkCBInfoAsyn functions. */
++/* Do not use them with the FCBPBRec.ioFCBFlags field returned by PBGetFCBInfoSync and PBGetFCBInfoAsync. */
++enum {
++ kForkInfoFlagsWriteBit = (kioFCBWriteBit - 8), /* Data can be written to this file */
++ kForkInfoFlagsWriteMask = (1 << kForkInfoFlagsWriteBit),
++ kForkInfoFlagsResourceBit = (kioFCBResourceBit - 8), /* This file is a resource fork */
++ kForkInfoFlagsResourceMask = (1 << kForkInfoFlagsResourceBit),
++ kForkInfoFlagsWriteLockedBit = (kioFCBWriteLockedBit - 8), /* File has a locked byte range */
++ kForkInfoFlagsWriteLockedMask = (1 << kForkInfoFlagsWriteLockedBit),
++ kForkInfoFlagsLargeFileBit = (kioFCBLargeFileBit - 8), /* File may grow beyond 2GB; cache uses file blocks, not bytes */
++ kForkInfoFlagsLargeFileMask = (1 << kForkInfoFlagsLargeFileBit),
++ kForkInfoFlagsSharedWriteBit = (kioFCBSharedWriteBit - 8), /* File is open for shared write access */
++ kForkInfoFlagsSharedWriteMask = (1 << kForkInfoFlagsSharedWriteBit),
++ kForkInfoFlagsFileLockedBit = (kioFCBFileLockedBit - 8), /* File is locked (write-protected) */
++ kForkInfoFlagsFileLockedMask = (1 << kForkInfoFlagsFileLockedBit),
++ kForkInfoFlagsOwnClumpBit = (kioFCBOwnClumpBit - 8), /* File has clump size specified in FCB */
++ kForkInfoFlagsOwnClumpMask = (1 << kForkInfoFlagsOwnClumpBit),
++ kForkInfoFlagsModifiedBit = (kioFCBModifiedBit - 8), /* File has changed since it was last flushed */
++ kForkInfoFlagsModifiedMask = (1 << kForkInfoFlagsModifiedBit)
++};
++
++/* ioACUser bits returned by PBGetCatInfo */
++/* Note: you must clear ioACUser before calling PBGetCatInfo because some file systems do not use this field */
++enum {
++ kioACUserNoSeeFolderBit = 0, /* Set if user does not have See Folder privileges */
++ kioACUserNoSeeFolderMask = 0x01,
++ kioACUserNoSeeFilesBit = 1, /* Set if user does not have See Files privileges */
++ kioACUserNoSeeFilesMask = 0x02,
++ kioACUserNoMakeChangesBit = 2, /* Set if user does not have Make Changes privileges */
++ kioACUserNoMakeChangesMask = 0x04,
++ kioACUserNotOwnerBit = 7, /* Set if user is not owner of the directory */
++ kioACUserNotOwnerMask = 0x80
++};
++
++/* Folder and File values of access privileges in ioACAccess */
++enum {
++ kioACAccessOwnerBit = 31, /* User is owner of directory */
++ kioACAccessOwnerMask = (int)0x80000000,
++ kioACAccessBlankAccessBit = 28, /* Directory has blank access privileges */
++ kioACAccessBlankAccessMask = 0x10000000,
++ kioACAccessUserWriteBit = 26, /* User has write privileges */
++ kioACAccessUserWriteMask = 0x04000000,
++ kioACAccessUserReadBit = 25, /* User has read privileges */
++ kioACAccessUserReadMask = 0x02000000,
++ kioACAccessUserSearchBit = 24, /* User has search privileges */
++ kioACAccessUserSearchMask = 0x01000000,
++ kioACAccessEveryoneWriteBit = 18, /* Everyone has write privileges */
++ kioACAccessEveryoneWriteMask = 0x00040000,
++ kioACAccessEveryoneReadBit = 17, /* Everyone has read privileges */
++ kioACAccessEveryoneReadMask = 0x00020000,
++ kioACAccessEveryoneSearchBit = 16, /* Everyone has search privileges */
++ kioACAccessEveryoneSearchMask = 0x00010000,
++ kioACAccessGroupWriteBit = 10, /* Group has write privileges */
++ kioACAccessGroupWriteMask = 0x00000400,
++ kioACAccessGroupReadBit = 9, /* Group has read privileges */
++ kioACAccessGroupReadMask = 0x00000200,
++ kioACAccessGroupSearchBit = 8, /* Group has search privileges */
++ kioACAccessGroupSearchMask = 0x00000100,
++ kioACAccessOwnerWriteBit = 2, /* Owner has write privileges */
++ kioACAccessOwnerWriteMask = 0x00000004,
++ kioACAccessOwnerReadBit = 1, /* Owner has read privileges */
++ kioACAccessOwnerReadMask = 0x00000002,
++ kioACAccessOwnerSearchBit = 0, /* Owner has search privileges */
++ kioACAccessOwnerSearchMask = 0x00000001,
++ kfullPrivileges = 0x00070007, /* all privileges for everybody and owner*/
++ kownerPrivileges = 0x00000007 /* all privileges for owner only*/
++};
++
++
++/* Volume Characteristics */
++/*
++ * FSGetVolumeParms()
++ *
++ * Discussion:
++ * Returns information about the specified volume in the passed in
++ * GetVolParmsInfoBuffer.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * volume:
++ * The volume to get the information about.
++ *
++ * buffer:
++ * A GetVolParmsInfoBuffer to fill out
++ *
++ * bufferSize:
++ * the size of the passed in buffer
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetVolumeParms(FSVolumeRefNum volume, GetVolParmsInfoBuffer *buffer, ByteCount bufferSize) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/* VolumeMount */
++/*
++ * FSGetVolumeMountInfoSize()
++ *
++ * Discussion:
++ * Returns the size of the MountInfo block associated with the
++ * specified volume.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * volume:
++ * The volume to get the MountInfo size for.
++ *
++ * size:
++ * The size of the buffer required to store the MountInfo data
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetVolumeMountInfoSize(FSVolumeRefNum volume, ByteCount *size) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSGetVolumeMountInfo()
++ *
++ * Discussion:
++ * Returns the MountInfo data for the specified volume. If the
++ * buffer passed in is too small then errFSBadBuffer is returned and
++ * actualSize will contain the required buffer size to hold the
++ * MountInfo data.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * volume:
++ * The volume to get the MountInfo for.
++ *
++ * buffer:
++ * A pointer to the buffer to copy the MountInfo data into
++ *
++ * bufferSize:
++ * The size of the buffer passed in
++ *
++ * actualSize:
++ * The actual size of the MountInfo data
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSGetVolumeMountInfo(FSVolumeRefNum volume, BytePtr buffer, ByteCount bufferSize, ByteCount *actualSize) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * FSVolumeMount()
++ *
++ * Discussion:
++ * Will attempt to remount a volume using the passed in MountInfo
++ * buffer
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * buffer:
++ * A pointer to the buffer with the MountInfo data.
++ *
++ * mountedVolume:
++ * the FSVolumeRefNum of the volume that was mounted
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSVolumeMount(BytePtr buffer, FSVolumeRefNum *mountedVolume) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/* Volume flushing */
++/*
++ * FSFlushVolume()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSFlushVolume(FSVolumeRefNum vRefNum) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * PBFlushVolumeSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBFlushVolumeSync(FSRefParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * PBFlushVolumeAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBFlushVolumeAsync(FSRefParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/* CopyFile */
++/*
++ PBFSCopyFile
++ Copies a file on a volume that supports the CopyFile system call (which can be
++ determined from the bHasCopyFile GetVolParms bit).
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ref The source item to copy
++ -> parentRef The destination to copy to
++ -> nameLength Number of Unicode characters in the optional new name. Pass in 0 to use the source name
++ -> name A pointer to the optional new Unicode name; Pass in NULL to use the source name
++ <- newRef A pointer to the FSRef for the new object; may be NULL
++*/
++/*
++ * PBFSCopyFileSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBFSCopyFileSync(FSRefParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * PBFSCopyFileAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBFSCopyFileAsync(FSRefParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/* Node ID Resolution */
++/*
++ * FSResolveNodeID()
++ *
++ * Discussion:
++ * Returns an FSRef to the item on volume with the specified node id.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Parameters:
++ *
++ * volume:
++ * The FSVolumeRefNum of the volume the item is on
++ *
++ * nodeID:
++ * The node id to resolve
++ *
++ * newRef:
++ * A pointer to storage for the FSRef of the item with the
++ * corresponding node id
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus FSResolveNodeID(FSVolumeRefNum volume, UInt32 nodeID, FSRefPtr newRef) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ioVRefNum The FSVolumeRefNum of the volume the item is on
++ -> ioDirID The node id to resolve (can be file as well as a directory node id)
++ <- newRef A pointer to storage for the FSRef of the item with the corresponding node id
++*/
++/*
++ * PBFSResolveNodeIDSync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBFSResolveNodeIDSync(FSRefParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/*
++ * PBFSResolveNodeIDAsync()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.5
++ *
++ * Availability:
++ * Mac OS X: in version 10.5 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus PBFSResolveNodeIDAsync(FSRefParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
++
++
++/* Calls beyond this point are deprecated*/
++
++/*
++ MakeFSRef
++ Create an FSRef for an existing object specified by a combination
++ of volume refnum, parent directory, and pathname.
++ -> ioCompletion A pointer to a completion routine
++ <- ioResult The result code of the function
++ -> ioNamePtr A pointer to a pathname
++ -> ioVRefNum A volume specification
++ -> ioDirID A directory ID
++ <- newRef A pointer to an FSRef
++ This function is deprecated in Mac OS X 10.5. Use FSMakeFSRefUnicode instead.
++*/
++#if !__LP64__
++/*
++ * FSpMakeFSRef() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr FSpMakeFSRef(const FSSpec *source, FSRef *newRef) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBMakeFSRefUnicodeSync instead.*/
++/*
++ * PBMakeFSRefSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBMakeFSRefSync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBMakeFSRefUnicodeAsync instead.*/
++/*
++ * PBMakeFSRefAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern void PBMakeFSRefAsync(FSRefParam * paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBCloseForkSync instead.*/
++/*
++ * PBCloseSync() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCloseSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBCloseForkAsync instead.*/
++/*
++ * PBCloseAsync() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCloseAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBReadForkSync instead.*/
++/*
++ * PBReadSync() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBReadSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBReadForkAsync instead.*/
++/*
++ * PBReadAsync() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBReadAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBWriteForkSync instead.*/
++/*
++ * PBWriteSync() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBWriteSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBWriteForkAsync instead.*/
++/*
++ * PBWriteAsync() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBWriteAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. It was never implemented on OS X.*/
++/*
++ * PBWaitIOComplete() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 9.0 and later
++ */
++extern OSErr PBWaitIOComplete(ParmBlkPtr paramBlock, Duration timeout) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* Volume Characteristics */
++/* This function is deprecated in Mac OS X 10.5. Use FSGetVolumeParms instead.*/
++/*
++ * PBHGetVolParmsSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetVolParmsSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetVolumeParms instead.*/
++/*
++ * PBHGetVolParmsAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetVolParmsAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* VolumeMount */
++/* This function is deprecated in Mac OS X 10.5. Use FSGetVolumeMountInfoSize instead.*/
++/*
++ * PBGetVolMountInfoSize() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetVolMountInfoSize(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetVolumeMountInfo instead.*/
++/*
++ * PBGetVolMountInfo() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetVolMountInfo(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSVolumeMount instead.*/
++/*
++ * PBVolumeMount() *** DEPRECATED ***
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBVolumeMount(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* Volume flushing */
++/* This function is deprecated in Mac OS X 10.5. Use FSFlushVolume instead.*/
++/*
++ * FlushVol() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr FlushVol(ConstStr63Param volName, FSVolumeRefNum vRefNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBFlushVolumeSync instead.*/
++/*
++ * PBFlushVolSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBFlushVolSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBFlushVolumeAsync instead.*/
++/*
++ * PBFlushVolAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBFlushVolAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBOpenForkSync with deny pos modes instead.*/
++/*
++ * PBHOpenDenySync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenDenySync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBOpenForkAsync with deny pos modes instead.*/
++/*
++ * PBHOpenDenyAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenDenyAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBOpenForkSync with deny pos modes instead.*/
++/*
++ * PBHOpenRFDenySync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenRFDenySync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBOpenForkAsync with deny pos modes instead.*/
++/*
++ * PBHOpenRFDenyAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenRFDenyAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetCatalogInfo instead.*/
++/*
++ * PBHGetDirAccessSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetDirAccessSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetCatalogInfo instead.*/
++/*
++ * PBHGetDirAccessAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetDirAccessAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSSetCatalogInfo instead.*/
++/*
++ * PBHSetDirAccessSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetDirAccessSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSSetCatalogInfo instead.*/
++/*
++ * PBHSetDirAccessAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetDirAccessAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. See getpwnam() and getpwuid().*/
++/*
++ * PBHMapIDSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHMapIDSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. See getpwnam() and getpwuid().*/
++/*
++ * PBHMapIDAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHMapIDAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. See getpwnam() and getpwuid().*/
++/*
++ * PBHMapNameSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHMapNameSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. See getpwnam() and getpwuid().*/
++/*
++ * PBHMapNameAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHMapNameAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBFSCopyFileSync instead.*/
++/*
++ * PBHCopyFileSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHCopyFileSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use PBFSCopyFileAsync instead.*/
++/*
++ * PBHCopyFileAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHCopyFileAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetCatalogInfo to get the node id.*/
++/*
++ * PBCreateFileIDRefSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCreateFileIDRefSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetCatalogInfo to get the node id.*/
++/*
++ * PBCreateFileIDRefAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCreateFileIDRefAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetCatalogInfo to get the node id.*/
++/*
++ * PBResolveFileIDRefSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBResolveFileIDRefSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. Use FSGetCatalogInfo to get the node id.*/
++/*
++ * PBResolveFileIDRefAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBResolveFileIDRefAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. It is obsolete and has no replacement.*/
++/*
++ * PBDeleteFileIDRefSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDeleteFileIDRefSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.5. It is obsolete and has no replacement.*/
++/*
++ * PBDeleteFileIDRefAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDeleteFileIDRefAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetVolumeInfo instead.*/
++/*
++ * PBXGetVolInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr PBXGetVolInfoSync(XVolumeParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetVolumeInfo instead.*/
++/*
++ * PBXGetVolInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr PBXGetVolInfoAsync(XVolumeParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBAllocateForkSync instead.*/
++/*
++ * PBAllocateSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBAllocateSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBAllocateForkAsync instead.*/
++/*
++ * PBAllocateAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBAllocateAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetForkSizeSync instead.*/
++/*
++ * PBGetEOFSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetEOFSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetForkSizeAsync instead.*/
++/*
++ * PBGetEOFAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetEOFAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetForkSizeSync instead.*/
++/*
++ * PBSetEOFSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetEOFSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetForkSizeAsync instead.*/
++/*
++ * PBSetEOFAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetEOFAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetForkPositionSync instead.*/
++/*
++ * PBGetFPosSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetFPosSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetForkPositionAsync instead.*/
++/*
++ * PBGetFPosAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetFPosAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetForkPositionSync instead.*/
++/*
++ * PBSetFPosSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetFPosSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetForkPositionAsync instead.*/
++/*
++ * PBSetFPosAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetFPosAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBFlushForkSync instead.*/
++/*
++ * PBFlushFileSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBFlushFileSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBFlushForkAsync instead.*/
++/*
++ * PBFlushFileAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBFlushFileAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSEjectVolumeSync instead.*/
++/*
++ * PBUnmountVol() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBUnmountVol(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBCatalogSearchSync instead.*/
++/*
++ * PBCatSearchSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCatSearchSync(CSParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBCatalogSearchAsync instead.*/
++/*
++ * PBCatSearchAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCatSearchAsync(CSParamPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSEjectVolumeSync instead.*/
++/*
++ * UnmountVol() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++UnmountVol(
++ ConstStr63Param volName, /* can be NULL */
++ FSVolumeRefNum vRefNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. The routines which use the default volume concept have been deprecated.*/
++/*
++ * HSetVol() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HSetVol(
++ ConstStr63Param volName, /* can be NULL */
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* AddDrive() was moved to Devices.h*/
++
++/* This function is deprecated in Mac OS X 10.4. Use FSCloseFork instead.*/
++/*
++ * FSClose() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSClose(FSIORefNum refNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSReadFork instead.*/
++/*
++ * FSRead() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSRead(
++ FSIORefNum refNum,
++ SInt32 * count,
++ void * buffPtr) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSWriteFork instead.*/
++/*
++ * FSWrite() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSWrite(
++ FSIORefNum refNum,
++ SInt32 * count,
++ const void * buffPtr) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSAllocateFork instead.*/
++/*
++ * Allocate() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++Allocate(
++ FSIORefNum refNum,
++ SInt32 * count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetForkSize instead.*/
++/*
++ * GetEOF() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++GetEOF(
++ FSIORefNum refNum,
++ SInt32 * logEOF) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetForkSize instead.*/
++/*
++ * SetEOF() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++SetEOF(
++ FSIORefNum refNum,
++ SInt32 logEOF) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetForkPosition instead.*/
++/*
++ * GetFPos() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++GetFPos(
++ FSIORefNum refNum,
++ SInt32 * filePos) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetForkPosition instead.*/
++/*
++ * SetFPos() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++SetFPos(
++ FSIORefNum refNum,
++ SInt16 posMode,
++ SInt32 posOff) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetCatalogInfo instead.*/
++/*
++ * GetVRefNum() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++GetVRefNum(
++ FSIORefNum fileRefNum,
++ FSVolumeRefNum * vRefNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBXLockRangeSync or FSLockRange instead.*/
++/*
++ * PBLockRangeSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PBLockRangeSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBXLockRangeAsync instead.*/
++/*
++ * PBLockRangeAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PBLockRangeAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBXUnlockRangeSync or FSUnlockRange instead.*/
++/*
++ * PBUnlockRangeSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PBUnlockRangeSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBXUnlockRangeAsync instead.*/
++/*
++ * PBUnlockRangeAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PBUnlockRangeAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. The routines which use the default volume concept have been deprecated.*/
++/*
++ * PBHSetVolSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetVolSync(WDPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. The routines which use the default volume concept have been deprecated.*/
++/*
++ * PBHSetVolAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetVolAsync(WDPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. The routines which use the default volume concept have been deprecated.*/
++/*
++ * PBHGetVolSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetVolSync(WDPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. The routines which use the default volume concept have been deprecated.*/
++/*
++ * PBHGetVolAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetVolAsync(WDPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBMoveObjectSync instead.*/
++/*
++ * PBCatMoveSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCatMoveSync(CMovePBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBMoveObjectAsync instead.*/
++/*
++ * PBCatMoveAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBCatMoveAsync(CMovePBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBCreateDirectoryUnicodeSync instead.*/
++/*
++ * PBDirCreateSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDirCreateSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBCreateDirectoryUnicodeAsync instead.*/
++/*
++ * PBDirCreateAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDirCreateAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetForkCBInfoSync instead.*/
++/*
++ * PBGetFCBInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetFCBInfoSync(FCBPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetForkCBInfoAsync instead.*/
++/*
++ * PBGetFCBInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetFCBInfoAsync(FCBPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetCatalogInfoSync instead.*/
++/*
++ * PBGetCatInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetCatInfoSync(CInfoPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetCatalogInfoAsync instead.*/
++/*
++ * PBGetCatInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetCatInfoAsync(CInfoPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoSync instead.*/
++/*
++ * PBSetCatInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetCatInfoSync(CInfoPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoAsync instead.*/
++/*
++ * PBSetCatInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetCatInfoAsync(CInfoPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBAllocateForkSync instead.*/
++/*
++ * PBAllocContigSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBAllocContigSync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBAllocateForkAsync instead.*/
++/*
++ * PBAllocContigAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBAllocContigAsync(ParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetVolumeInfoSync instead.*/
++/*
++ * PBSetVInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetVInfoSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetVolumeInfoAsync instead.*/
++/*
++ * PBSetVInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetVInfoAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetVolumeInfoSync instead.*/
++/*
++ * PBHGetVInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetVInfoSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetVolumeInfoAsync instead.*/
++/*
++ * PBHGetVInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetVInfoAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBOpenForkSync instead.*/
++/*
++ * PBHOpenSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBOpenForkAsync instead.*/
++/*
++ * PBHOpenAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBOpenForkSync instead.*/
++/*
++ * PBHOpenRFSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenRFSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBOpenForkAsync instead.*/
++/*
++ * PBHOpenRFAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenRFAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBOpenForkSync instead.*/
++/*
++ * PBHOpenDFSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenDFSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBOpenForkAsync instead.*/
++/*
++ * PBHOpenDFAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHOpenDFAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBCreateFileUnicodeSync instead.*/
++/*
++ * PBHCreateSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHCreateSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBCreateFileUnicodeAsync instead.*/
++/*
++ * PBHCreateAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHCreateAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBDeleteObjectSync instead.*/
++/*
++ * PBHDeleteSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHDeleteSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBDeleteObjectAsync instead.*/
++/*
++ * PBHDeleteAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHDeleteAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBRenameUnicodeSync instead.*/
++/*
++ * PBHRenameSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHRenameSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBRenameUnicodeAsync instead.*/
++/*
++ * PBHRenameAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHRenameAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoSync instead.*/
++/*
++ * PBHRstFLockSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHRstFLockSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoAsync instead.*/
++/*
++ * PBHRstFLockAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHRstFLockAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoSync instead.*/
++/*
++ * PBHSetFLockSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetFLockSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoAsync instead.*/
++/*
++ * PBHSetFLockAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetFLockAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetCatalogInfoSync instead.*/
++/*
++ * PBHGetFInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetFInfoSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBGetCatalogInfoAsync instead.*/
++/*
++ * PBHGetFInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetFInfoAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoSync instead.*/
++/*
++ * PBHSetFInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetFInfoSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBSetCatalogInfoAsync instead.*/
++/*
++ * PBHSetFInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHSetFInfoAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBMakeFSRefUnicodeSync instead.*/
++/*
++ * PBMakeFSSpecSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBMakeFSSpecSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBMakeFSRefUnicodeAsync instead.*/
++/*
++ * PBMakeFSSpecAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBMakeFSSpecAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. The routines which use the default volume concept have been deprecated.*/
++/*
++ * HGetVol() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HGetVol(
++ StringPtr volName,
++ FSVolumeRefNum * vRefNum,
++ SInt32 * dirID) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSOpenFork instead.*/
++/*
++ * HOpen() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HOpen(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ SInt8 permission,
++ FSIORefNum * refNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSOpenFork instead.*/
++/*
++ * HOpenDF() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HOpenDF(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ SInt8 permission,
++ FSIORefNum * refNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSOpenFork instead.*/
++/*
++ * HOpenRF() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HOpenRF(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ SInt8 permission,
++ FSIORefNum * refNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSAllocateFork instead.*/
++/*
++ * AllocContig() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++AllocContig(
++ FSVolumeRefNum refNum,
++ SInt32 * count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSCreateFileUnicode instead.*/
++/*
++ * HCreate() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HCreate(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ OSType creator,
++ OSType fileType) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSCreateDirectoryUnicode instead.*/
++/*
++ * DirCreate() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++DirCreate(
++ FSVolumeRefNum vRefNum,
++ SInt32 parentDirID,
++ ConstStr255Param directoryName,
++ SInt32 * createdDirID) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSDeleteObject instead.*/
++/*
++ * HDelete() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HDelete(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetCatalogInfo instead.*/
++/*
++ * HGetFInfo() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HGetFInfo(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ FInfo * fndrInfo) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetCatalogInfo instead.*/
++/*
++ * HSetFInfo() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HSetFInfo(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ const FInfo * fndrInfo) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetCatalogInfo instead.*/
++/*
++ * HSetFLock() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HSetFLock(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetCatalogInfo instead.*/
++/*
++ * HRstFLock() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HRstFLock(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSRenameUnicode instead.*/
++/*
++ * HRename() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HRename(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param oldName,
++ ConstStr255Param newName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSMoveObject instead.*/
++/*
++ * CatMove() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++CatMove(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param oldName,
++ SInt32 newDirID,
++ ConstStr255Param newName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBHGetLogInInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetLogInInfoSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBHGetLogInInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHGetLogInInfoAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.
++ Use FSMoveObjectSync instead.
++*/
++/*
++ * PBHMoveRenameSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHMoveRenameSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.
++ Use FSMoveObjectAsync instead.
++*/
++/*
++ * PBHMoveRenameAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBHMoveRenameAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBGetXCatInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr PBGetXCatInfoSync(XCInfoPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBGetXCatInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr PBGetXCatInfoAsync(XCInfoPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBExchangeObjectsSync instead.*/
++/*
++ * PBExchangeFilesSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBExchangeFilesSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use PBExchangeObjectsAsync instead.*/
++/*
++ * PBExchangeFilesAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBExchangeFilesAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBGetForeignPrivsSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetForeignPrivsSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBGetForeignPrivsAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetForeignPrivsAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBSetForeignPrivsSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetForeignPrivsSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBSetForeignPrivsAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBSetForeignPrivsAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* Desktop Manager */
++#endif /* !__LP64__ */
++
++#if !__LP64__
++enum {
++ /* Desktop Database, ffsGetIconMessage and fsmGetFSIconMessage icon type and size Constants */
++ kLargeIcon = 1,
++ kLarge4BitIcon = 2,
++ kLarge8BitIcon = 3,
++ kSmallIcon = 4,
++ kSmall4BitIcon = 5,
++ kSmall8BitIcon = 6,
++ kicnsIconFamily = 239 /* Note: The 'icns' icon family record is variable sized. */
++};
++
++#endif /* !__LP64__ */
++
++#if !__LP64__
++/*
++ * PBDTGetPath() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetPath(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTCloseDown() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTCloseDown(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTAddIconSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTAddIconSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTAddIconAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTAddIconAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetIconSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetIconSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetIconAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetIconAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetIconInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetIconInfoSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetIconInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetIconInfoAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTAddAPPLSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTAddAPPLSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTAddAPPLAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTAddAPPLAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTRemoveAPPLSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTRemoveAPPLSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTRemoveAPPLAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTRemoveAPPLAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetAPPLSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetAPPLSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetAPPLAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetAPPLAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTSetCommentSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTSetCommentSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTSetCommentAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTSetCommentAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTRemoveCommentSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTRemoveCommentSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTRemoveCommentAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTRemoveCommentAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetCommentSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetCommentSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetCommentAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetCommentAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTFlushSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTFlushSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTFlushAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTFlushAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTResetSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTResetSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTResetAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTResetAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetInfoSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetInfoSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTGetInfoAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTGetInfoAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTOpenInform() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTOpenInform(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTDeleteSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTDeleteSync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PBDTDeleteAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.2
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBDTDeleteAsync(DTPBPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* FSp traps */
++/* This function is deprecated in Mac OS X 10.4. Use FSMakeFSRefUnicode instead.*/
++/*
++ * FSMakeFSSpec() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSMakeFSSpec(
++ FSVolumeRefNum vRefNum,
++ SInt32 dirID,
++ ConstStr255Param fileName,
++ FSSpec * spec) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSOpenFork instead.*/
++/*
++ * FSpOpenDF() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpOpenDF(
++ const FSSpec * spec,
++ SInt8 permission,
++ FSIORefNum * refNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSOpenFork instead.*/
++/*
++ * FSpOpenRF() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpOpenRF(
++ const FSSpec * spec,
++ SInt8 permission,
++ FSIORefNum * refNum) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSCreateFileUnicode instead.*/
++/*
++ * FSpCreate() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpCreate(
++ const FSSpec * spec,
++ OSType creator,
++ OSType fileType,
++ ScriptCode scriptTag) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSCreateDirectoryUnicode instead.*/
++/*
++ * FSpDirCreate() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpDirCreate(
++ const FSSpec * spec,
++ ScriptCode scriptTag,
++ SInt32 * createdDirID) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSDeleteObject instead.*/
++/*
++ * FSpDelete() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpDelete(const FSSpec * spec) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSGetCatalogInfo instead.*/
++/*
++ * FSpGetFInfo() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpGetFInfo(
++ const FSSpec * spec,
++ FInfo * fndrInfo) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetCatalogInfo instead.*/
++/*
++ * FSpSetFInfo() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpSetFInfo(
++ const FSSpec * spec,
++ const FInfo * fndrInfo) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetCatalogInfo instead.*/
++/*
++ * FSpSetFLock() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpSetFLock(const FSSpec * spec) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSSetCatalogInfo instead.*/
++/*
++ * FSpRstFLock() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpRstFLock(const FSSpec * spec) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSRenameUnicode instead.*/
++/*
++ * FSpRename() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpRename(
++ const FSSpec * spec,
++ ConstStr255Param newName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSMoveObject instead.*/
++/*
++ * FSpCatMove() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpCatMove(
++ const FSSpec * source,
++ const FSSpec * dest) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. Use FSExchangeObjects instead.*/
++/*
++ * FSpExchangeFiles() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++FSpExchangeFiles(
++ const FSSpec * source,
++ const FSSpec * dest) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBShareSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBShareSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBShareAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBShareAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBUnshareSync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBUnshareSync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBUnshareAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBUnshareAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBGetUGEntrySync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetUGEntrySync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* This function is deprecated in Mac OS X 10.4. It was never implemented on OS X.*/
++/*
++ * PBGetUGEntryAsync() *** DEPRECATED ***
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.0
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr PBGetUGEntryAsync(HParmBlkPtr paramBlock) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++#endif /* !__LP64__ */
++
++#if !__LP64__
++/*
++ The PBxxx() routines are obsolete.
++
++ Use the PBxxxSync() or PBxxxAsync() version instead.
++*/
++#define PBGetVInfo(pb, async) ((async) ? PBGetVInfoAsync(pb) : PBGetVInfoSync(pb))
++#define PBXGetVolInfo(pb, async) ((async) ? PBXGetVolInfoAsync(pb) : PBXGetVolInfoSync(pb))
++#define PBGetVol(pb, async) ((async) ? PBGetVolAsync(pb) : PBGetVolSync(pb))
++#define PBSetVol(pb, async) ((async) ? PBSetVolAsync(pb) : PBSetVolSync(pb))
++#define PBFlushVol(pb, async) ((async) ? PBFlushVolAsync(pb) : PBFlushVolSync(pb))
++#define PBCreate(pb, async) ((async) ? PBCreateAsync(pb) : PBCreateSync(pb))
++#define PBDelete(pb, async) ((async) ? PBDeleteAsync(pb) : PBDeleteSync(pb))
++#define PBOpenDF(pb, async) ((async) ? PBOpenDFAsync(pb) : PBOpenDFSync(pb))
++#define PBOpenRF(pb, async) ((async) ? PBOpenRFAsync(pb) : PBOpenRFSync(pb))
++#define PBRename(pb, async) ((async) ? PBRenameAsync(pb) : PBRenameSync(pb))
++#define PBGetFInfo(pb, async) ((async) ? PBGetFInfoAsync(pb) : PBGetFInfoSync(pb))
++#define PBSetFInfo(pb, async) ((async) ? PBSetFInfoAsync(pb) : PBSetFInfoSync(pb))
++#define PBSetFLock(pb, async) ((async) ? PBSetFLockAsync(pb) : PBSetFLockSync(pb))
++#define PBRstFLock(pb, async) ((async) ? PBRstFLockAsync(pb) : PBRstFLockSync(pb))
++#define PBSetFVers(pb, async) ((async) ? PBSetFVersAsync(pb) : PBSetFVersSync(pb))
++#define PBAllocate(pb, async) ((async) ? PBAllocateAsync(pb) : PBAllocateSync(pb))
++#define PBGetEOF(pb, async) ((async) ? PBGetEOFAsync(pb) : PBGetEOFSync(pb))
++#define PBSetEOF(pb, async) ((async) ? PBSetEOFAsync(pb) : PBSetEOFSync(pb))
++#define PBGetFPos(pb, async) ((async) ? PBGetFPosAsync(pb) : PBGetFPosSync(pb))
++#define PBSetFPos(pb, async) ((async) ? PBSetFPosAsync(pb) : PBSetFPosSync(pb))
++#define PBFlushFile(pb, async) ((async) ? PBFlushFileAsync(pb) : PBFlushFileSync(pb))
++#define PBCatSearch(pb, async) ((async) ? PBCatSearchAsync(pb) : PBCatSearchSync(pb))
++#define PBOpenWD(pb, async) ((async) ? PBOpenWDAsync(pb) : PBOpenWDSync(pb))
++#define PBCloseWD(pb, async) ((async) ? PBCloseWDAsync(pb) : PBCloseWDSync(pb))
++#define PBHSetVol(pb, async) ((async) ? PBHSetVolAsync(pb) : PBHSetVolSync(pb))
++#define PBHGetVol(pb, async) ((async) ? PBHGetVolAsync(pb) : PBHGetVolSync(pb))
++#define PBCatMove(pb, async) ((async) ? PBCatMoveAsync(pb) : PBCatMoveSync(pb))
++#define PBDirCreate(pb, async) ((async) ? PBDirCreateAsync(pb) : PBDirCreateSync(pb))
++#define PBGetWDInfo(pb, async) ((async) ? PBGetWDInfoAsync(pb) : PBGetWDInfoSync(pb))
++#define PBGetFCBInfo(pb, async) ((async) ? PBGetFCBInfoAsync(pb) : PBGetFCBInfoSync(pb))
++#define PBGetCatInfo(pb, async) ((async) ? PBGetCatInfoAsync(pb) : PBGetCatInfoSync(pb))
++#define PBSetCatInfo(pb, async) ((async) ? PBSetCatInfoAsync(pb) : PBSetCatInfoSync(pb))
++#define PBAllocContig(pb, async) ((async) ? PBAllocContigAsync(pb) : PBAllocContigSync(pb))
++#define PBLockRange(pb, async) ((async) ? PBLockRangeAsync(pb) : PBLockRangeSync(pb))
++#define PBUnlockRange(pb, async) ((async) ? PBUnlockRangeAsync(pb) : PBUnlockRangeSync(pb))
++#define PBSetVInfo(pb, async) ((async) ? PBSetVInfoAsync(pb) : PBSetVInfoSync(pb))
++#define PBHGetVInfo(pb, async) ((async) ? PBHGetVInfoAsync(pb) : PBHGetVInfoSync(pb))
++#define PBHOpen(pb, async) ((async) ? PBHOpenAsync(pb) : PBHOpenSync(pb))
++#define PBHOpenRF(pb, async) ((async) ? PBHOpenRFAsync(pb) : PBHOpenRFSync(pb))
++#define PBHOpenDF(pb, async) ((async) ? PBHOpenDFAsync(pb) : PBHOpenDFSync(pb))
++#define PBHCreate(pb, async) ((async) ? PBHCreateAsync(pb) : PBHCreateSync(pb))
++#define PBHDelete(pb, async) ((async) ? PBHDeleteAsync(pb) : PBHDeleteSync(pb))
++#define PBHRename(pb, async) ((async) ? PBHRenameAsync(pb) : PBHRenameSync(pb))
++#define PBHRstFLock(pb, async) ((async) ? PBHRstFLockAsync(pb) : PBHRstFLockSync(pb))
++#define PBHSetFLock(pb, async) ((async) ? PBHSetFLockAsync(pb) : PBHSetFLockSync(pb))
++#define PBHGetFInfo(pb, async) ((async) ? PBHGetFInfoAsync(pb) : PBHGetFInfoSync(pb))
++#define PBHSetFInfo(pb, async) ((async) ? PBHSetFInfoAsync(pb) : PBHSetFInfoSync(pb))
++#define PBMakeFSSpec(pb, async) ((async) ? PBMakeFSSpecAsync(pb) : PBMakeFSSpecSync(pb))
++#define PBHGetVolParms(pb, async) ((async) ? PBHGetVolParmsAsync(pb) : PBHGetVolParmsSync(pb))
++#define PBHGetLogInInfo(pb, async) ((async) ? PBHGetLogInInfoAsync(pb) : PBHGetLogInInfoSync(pb))
++#define PBHGetDirAccess(pb, async) ((async) ? PBHGetDirAccessAsync(pb) : PBHGetDirAccessSync(pb))
++#define PBHSetDirAccess(pb, async) ((async) ? PBHSetDirAccessAsync(pb) : PBHSetDirAccessSync(pb))
++#define PBHMapID(pb, async) ((async) ? PBHMapIDAsync(pb) : PBHMapIDSync(pb))
++#define PBHMapName(pb, async) ((async) ? PBHMapNameAsync(pb) : PBHMapNameSync(pb))
++#define PBHCopyFile(pb, async) ((async) ? PBHCopyFileAsync(pb) : PBHCopyFileSync(pb))
++#define PBHMoveRename(pb, async) ((async) ? PBHMoveRenameAsync(pb) : PBHMoveRenameSync(pb))
++#define PBHOpenDeny(pb, async) ((async) ? PBHOpenDenyAsync(pb) : PBHOpenDenySync(pb))
++#define PBHOpenRFDeny(pb, async) ((async) ? PBHOpenRFDenyAsync(pb) : PBHOpenRFDenySync(pb))
++#define PBExchangeFiles(pb, async) ((async) ? PBExchangeFilesAsync(pb) : PBExchangeFilesSync(pb))
++#define PBCreateFileIDRef(pb, async) ((async) ? PBCreateFileIDRefAsync(pb) : PBCreateFileIDRefSync(pb))
++#define PBResolveFileIDRef(pb, async) ((async) ? PBResolveFileIDRefAsync(pb) : PBResolveFileIDRefSync(pb))
++#define PBDeleteFileIDRef(pb, async) ((async) ? PBDeleteFileIDRefAsync(pb) : PBDeleteFileIDRefSync(pb))
++#define PBGetForeignPrivs(pb, async) ((async) ? PBGetForeignPrivsAsync(pb) : PBGetForeignPrivsSync(pb))
++#define PBSetForeignPrivs(pb, async) ((async) ? PBSetForeignPrivsAsync(pb) : PBSetForeignPrivsSync(pb))
++#define PBDTAddIcon(pb, async) ((async) ? PBDTAddIconAsync(pb) : PBDTAddIconSync(pb))
++#define PBDTGetIcon(pb, async) ((async) ? PBDTGetIconAsync(pb) : PBDTGetIconSync(pb))
++#define PBDTGetIconInfo(pb, async) ((async) ? PBDTGetIconInfoAsync(pb) : PBDTGetIconInfoSync(pb))
++#define PBDTAddAPPL(pb, async) ((async) ? PBDTAddAPPLAsync(pb) : PBDTAddAPPLSync(pb))
++#define PBDTRemoveAPPL(pb, async) ((async) ? PBDTRemoveAPPLAsync(pb) : PBDTRemoveAPPLSync(pb))
++#define PBDTGetAPPL(pb, async) ((async) ? PBDTGetAPPLAsync(pb) : PBDTGetAPPLSync(pb))
++#define PBDTSetComment(pb, async) ((async) ? PBDTSetCommentAsync(pb) : PBDTSetCommentSync(pb))
++#define PBDTRemoveComment(pb, async) ((async) ? PBDTRemoveCommentAsync(pb) : PBDTRemoveCommentSync(pb))
++#define PBDTGetComment(pb, async) ((async) ? PBDTGetCommentAsync(pb) : PBDTGetCommentSync(pb))
++#define PBDTFlush(pb, async) ((async) ? PBDTFlushAsync(pb) : PBDTFlushSync(pb))
++#define PBDTReset(pb, async) ((async) ? PBDTResetAsync(pb) : PBDTResetSync(pb))
++#define PBDTGetInfo(pb, async) ((async) ? PBDTGetInfoAsync(pb) : PBDTGetInfoSync(pb))
++#define PBDTDelete(pb, async) ((async) ? PBDTDeleteAsync(pb) : PBDTDeleteSync(pb))
++#endif /* !__LP64__ */
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __FILES__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/Finder.h ./Finder.h
+--- ../CarbonHeaders-18.1.orig/Finder.h 1969-12-31 16:00:00.000000000 -0800
++++ ./Finder.h 2009-09-29 14:00:48.000000000 -0700
+@@ -0,0 +1,370 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/Finder.h
++
++ Contains: Finder flags and container types.
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1990-2008 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 __FINDER__
++#define __FINDER__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#pragma pack(push, 2)
++
++/* Creator and type of clipping files */
++enum {
++ kClippingCreator = 'drag',
++ kClippingPictureType = 'clpp',
++ kClippingTextType = 'clpt',
++ kClippingSoundType = 'clps',
++ kClippingUnknownType = 'clpu'
++};
++
++
++/* Creator and type of Internet Location files */
++enum {
++ kInternetLocationCreator = 'drag',
++ kInternetLocationHTTP = 'ilht',
++ kInternetLocationFTP = 'ilft',
++ kInternetLocationFile = 'ilfi',
++ kInternetLocationMail = 'ilma',
++ kInternetLocationNNTP = 'ilnw',
++ kInternetLocationAFP = 'ilaf',
++ kInternetLocationAppleTalk = 'ilat',
++ kInternetLocationNSL = 'ilns',
++ kInternetLocationGeneric = 'ilge'
++};
++
++
++
++enum {
++ kCustomIconResource = -16455 /* Custom icon family resource ID */
++};
++
++/* In order to specify any of the information described in the */
++/* CustomBadgeResource data structure you must clear the kExtendedFlagsAreInvalid */
++/* and set kExtendedFlagHasCustomBadge of the FXInfo.fdXFlags or DXInfo.frXFlags field, */
++/* and add a resource of type kCustomBadgeResourceType and ID kCustomBadgeResourceID to */
++/* the file or to the "Icon/n" file for a folder */
++enum {
++ kCustomBadgeResourceType = 'badg',
++ kCustomBadgeResourceID = kCustomIconResource,
++ kCustomBadgeResourceVersion = 0
++};
++
++struct CustomBadgeResource {
++ SInt16 version; /* This is version kCustomBadgeResourceVersion*/
++ SInt16 customBadgeResourceID; /* If not 0, the ID of a resource to use on top*/
++ /* of the icon for this file or folder*/
++ OSType customBadgeType; /* If not 0, the type and creator of an icon*/
++ OSType customBadgeCreator; /* to use on top of the icon*/
++ OSType windowBadgeType; /* If not 0, the type and creator of an icon*/
++ OSType windowBadgeCreator; /* to display in the header of the window for this */
++ /* file or folder*/
++ OSType overrideType; /* If not 0, the type and creator of an icon to*/
++ OSType overrideCreator; /* use INSTEAD of the icon for this file or folder*/
++};
++typedef struct CustomBadgeResource CustomBadgeResource;
++typedef CustomBadgeResource * CustomBadgeResourcePtr;
++typedef CustomBadgeResourcePtr * CustomBadgeResourceHandle;
++/* You can specify routing information for a file by including a 'rout' 0
++ resource in it and setting the kExtendedFlagHasRoutingInfo bit in the extended
++ Finder flags.
++ The 'rout' resource is an array of RoutingResourceEntry. Each entry is considered
++ in turn. The first matching entry is used.
++ If the creator and fileType match the file being dropped and targetFolder match
++ the folder ID of the folder being dropped onto, then the file is rerouted
++ into the specified destination folder.
++ The only target folder currently supported is the system folder,
++ kSystemFolderType = 'macs'.
++*/
++enum {
++ kRoutingResourceType = 'rout',
++ kRoutingResourceID = 0
++};
++
++struct RoutingResourceEntry {
++ OSType creator; /* Use '****' or 0 to match any creator */
++ OSType fileType; /* Use '****' or 0 to match any file type */
++ OSType targetFolder; /* Folder ID of the folder this file was dropped onto */
++ OSType destinationFolder; /* Folder that the source will be routed to */
++ OSType reservedField; /* Set to 0 */
++};
++typedef struct RoutingResourceEntry RoutingResourceEntry;
++typedef RoutingResourceEntry * RoutingResourcePtr;
++typedef RoutingResourcePtr * RoutingResourceHandle;
++
++/* Types for special container aliases */
++enum {
++ kContainerFolderAliasType = 'fdrp', /* type for folder aliases */
++ kContainerTrashAliasType = 'trsh', /* type for trash folder aliases */
++ kContainerHardDiskAliasType = 'hdsk', /* type for hard disk aliases */
++ kContainerFloppyAliasType = 'flpy', /* type for floppy aliases */
++ kContainerServerAliasType = 'srvr', /* type for server aliases */
++ kApplicationAliasType = 'adrp', /* type for application aliases */
++ kContainerAliasType = 'drop', /* type for all other containers */
++ kDesktopPrinterAliasType = 'dtpa', /* type for Desktop Printer alias */
++ kContainerCDROMAliasType = 'cddr', /* type for CD-ROM alias */
++ kApplicationCPAliasType = 'acdp', /* type for application control panel alias */
++ kApplicationDAAliasType = 'addp', /* type for application DA alias */
++ kPackageAliasType = 'fpka', /* type for plain package alias */
++ kAppPackageAliasType = 'fapa' /* type for application package alias */
++};
++
++/* Types for Special folder aliases */
++enum {
++ kSystemFolderAliasType = 'fasy',
++ kAppleMenuFolderAliasType = 'faam',
++ kStartupFolderAliasType = 'fast',
++ kPrintMonitorDocsFolderAliasType = 'fapn',
++ kPreferencesFolderAliasType = 'fapf',
++ kControlPanelFolderAliasType = 'fact',
++ kExtensionFolderAliasType = 'faex'
++};
++
++/* Types for AppleShare folder aliases */
++enum {
++ kExportedFolderAliasType = 'faet',
++ kDropFolderAliasType = 'fadr',
++ kSharedFolderAliasType = 'fash',
++ kMountedFolderAliasType = 'famn'
++};
++
++/* Finder flags (finderFlags, fdFlags and frFlags) */
++/* Any flag reserved or not specified should be set to 0. */
++/* If a flag applies to a file, but not to a folder, make sure to check */
++/* that the item is not a folder by checking ((ParamBlockRec.ioFlAttrib & ioDirMask) == 0) */
++enum {
++ kIsOnDesk = 0x0001, /* Files and folders (System 6) */
++ kColor = 0x000E, /* Files and folders */
++ /* bit 0x0020 was kRequireSwitchLaunch, but is now reserved for future use*/
++ kIsShared = 0x0040, /* Files only (Applications only) */
++ /* If clear, the application needs to write to */
++ /* its resource fork, and therefore cannot be */
++ /* shared on a server */
++ kHasNoINITs = 0x0080, /* Files only (Extensions/Control Panels only) */
++ /* This file contains no INIT resource */
++ kHasBeenInited = 0x0100, /* Files only */
++ /* Clear if the file contains desktop database */
++ /* resources ('BNDL', 'FREF', 'open', 'kind'...) */
++ /* that have not been added yet. Set only by the Finder */
++ /* Reserved for folders - make sure this bit is cleared for folders */
++ /* bit 0x0200 was the letter bit for AOCE, but is now reserved for future use */
++ kHasCustomIcon = 0x0400, /* Files and folders */
++ kIsStationery = 0x0800, /* Files only */
++ kNameLocked = 0x1000, /* Files and folders */
++ kHasBundle = 0x2000, /* Files and folders */
++ /* Indicates that a file has a BNDL resource */
++ /* Indicates that a folder is displayed as a package */
++ kIsInvisible = 0x4000, /* Files and folders */
++ kIsAlias = 0x8000 /* Files only */
++};
++
++/* Obsolete. Use names defined above. */
++enum {
++ fOnDesk = kIsOnDesk,
++ fHasBundle = kHasBundle,
++ fInvisible = kIsInvisible
++};
++
++/* Obsolete */
++enum {
++ fTrash = -3,
++ fDesktop = -2,
++ fDisk = 0
++};
++
++#if OLDROUTINENAMES
++enum {
++ kIsStationary = kIsStationery
++};
++
++#endif /* OLDROUTINENAMES */
++
++/* Extended flags (extendedFinderFlags, fdXFlags and frXFlags) */
++/* Any flag not specified should be set to 0. */
++enum {
++ kExtendedFlagsAreInvalid = 0x8000, /* If set the other extended flags are ignored */
++ kExtendedFlagHasCustomBadge = 0x0100, /* Set if the file or folder has a badge resource */
++ kExtendedFlagObjectIsBusy = 0x0080, /* Set if the object is marked as busy/incomplete */
++ kExtendedFlagHasRoutingInfo = 0x0004 /* Set if the file contains routing info resource */
++};
++
++
++
++/* Use a filetype in this range to indicate that a file is temporarily busy */
++/* (while it is being downloaded or installed, for example). This prevents */
++/* Finder 8.5 and later from trying to change the item's attributes before it */
++/* is fully created. -- If you provide a series of 'BNDL' icons for your creator */
++/* and some of these filetypes, you can achieve limited icon animation while */
++/* the file creation progresses. */
++enum {
++ kFirstMagicBusyFiletype = 'bzy ',
++ kLastMagicBusyFiletype = 'bzy?'
++};
++
++/* Use this date as a file's or folder's creation date to indicate that it is */
++/* temporarily busy (while it is being downloaded or installed, for example). */
++/* This prevents Finder from trying to change the item's attributes before it */
++/* is fully created (Finder 8.5 and 8.6 check file creation dates; later Finders */
++/* may check folder creation dates as well). */
++enum {
++ kMagicBusyCreationDate = 0x4F3AFDB0
++};
++
++
++/*------------------------------------------------------------------------*/
++/*
++ The following data structures are binary compatible with FInfo, DInfo,
++ FXInfo and DXInfo but represent the Mac OS 8 semantic of the fields.
++ Use these data structures preferably to FInfo, etc...
++*/
++/*------------------------------------------------------------------------*/
++
++struct FileInfo {
++ OSType fileType; /* The type of the file */
++ OSType fileCreator; /* The file's creator */
++ UInt16 finderFlags; /* ex: kHasBundle, kIsInvisible... */
++ Point location; /* File's location in the folder */
++ /* If set to {0, 0}, the Finder will place the item automatically */
++ UInt16 reservedField; /* (set to 0) */
++};
++typedef struct FileInfo FileInfo;
++struct FolderInfo {
++ Rect windowBounds; /* The position and dimension of the folder's window */
++ UInt16 finderFlags; /* ex. kIsInvisible, kNameLocked, etc.*/
++ Point location; /* Folder's location in the parent folder */
++ /* If set to {0, 0}, the Finder will place the item automatically */
++ UInt16 reservedField; /* (set to 0) */
++};
++typedef struct FolderInfo FolderInfo;
++struct ExtendedFileInfo {
++ SInt16 reserved1[4]; /* Reserved (set to 0) */
++ UInt16 extendedFinderFlags; /* Extended flags (custom badge, routing info...) */
++ SInt16 reserved2; /* Reserved (set to 0). Comment ID if high-bit is clear */
++ SInt32 putAwayFolderID; /* Put away folder ID */
++};
++typedef struct ExtendedFileInfo ExtendedFileInfo;
++struct ExtendedFolderInfo {
++ Point scrollPosition; /* Scroll position (for icon views) */
++ SInt32 reserved1; /* Reserved (set to 0) */
++ UInt16 extendedFinderFlags; /* Extended flags (custom badge, routing info...) */
++ SInt16 reserved2; /* Reserved (set to 0). Comment ID if high-bit is clear */
++ SInt32 putAwayFolderID; /* Put away folder ID */
++};
++typedef struct ExtendedFolderInfo ExtendedFolderInfo;
++/*------------------------------------------------------------------------*/
++/*
++ The following data structures are here for compatibility.
++ Use the new data structures replacing them if possible (i.e. FileInfo
++ instead of FInfo, etc...)
++*/
++/*------------------------------------------------------------------------*/
++/* File info */
++/*
++ IMPORTANT:
++ In MacOS 8, the fdFldr field has become reserved for the Finder.
++*/
++struct FInfo {
++ OSType fdType; /* The type of the file */
++ OSType fdCreator; /* The file's creator */
++ UInt16 fdFlags; /* Flags ex. kHasBundle, kIsInvisible, etc. */
++ Point fdLocation; /* File's location in folder. */
++ /* If set to {0, 0}, the Finder will place the item automatically */
++ SInt16 fdFldr; /* Reserved (set to 0) */
++};
++typedef struct FInfo FInfo;
++/* Extended file info */
++/*
++ IMPORTANT:
++ In MacOS 8, the fdIconID and fdComment fields were changed
++ to become reserved fields for the Finder.
++ The fdScript has become an extended flag.
++*/
++struct FXInfo {
++ SInt16 fdIconID; /* Reserved (set to 0) */
++ SInt16 fdReserved[3]; /* Reserved (set to 0) */
++ SInt8 fdScript; /* Extended flags. Script code if high-bit is set */
++ SInt8 fdXFlags; /* Extended flags */
++ SInt16 fdComment; /* Reserved (set to 0). Comment ID if high-bit is clear */
++ SInt32 fdPutAway; /* Put away folder ID */
++};
++typedef struct FXInfo FXInfo;
++/* Folder info */
++/*
++ IMPORTANT:
++ In MacOS 8, the frView field was changed to become reserved
++ field for the Finder.
++*/
++struct DInfo {
++ Rect frRect; /* Folder's window bounds */
++ UInt16 frFlags; /* Flags ex. kIsInvisible, kNameLocked, etc.*/
++ Point frLocation; /* Folder's location in parent folder */
++ /* If set to {0, 0}, the Finder will place the item automatically */
++ SInt16 frView; /* Reserved (set to 0) */
++};
++typedef struct DInfo DInfo;
++/* Extended folder info */
++/*
++ IMPORTANT:
++ In MacOS 8, the frOpenChain and frComment fields were changed
++ to become reserved fields for the Finder.
++ The frScript has become an extended flag.
++*/
++struct DXInfo {
++ Point frScroll; /* Scroll position */
++ SInt32 frOpenChain; /* Reserved (set to 0) */
++ SInt8 frScript; /* Extended flags. Script code if high-bit is set */
++ SInt8 frXFlags; /* Extended flags */
++ SInt16 frComment; /* Reserved (set to 0). Comment ID if high-bit is clear */
++ SInt32 frPutAway; /* Put away folder ID */
++};
++typedef struct DXInfo DXInfo;
++/* ControlPanelDefProcPtr and cdev constants have all been moved to Processes.i*/
++
++#pragma pack(pop)
++
++
++#endif /* __FINDER__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/MacErrors.h ./MacErrors.h
+--- ../CarbonHeaders-18.1.orig/MacErrors.h 2009-09-29 13:46:25.000000000 -0700
++++ ./MacErrors.h 2009-09-29 14:00:55.000000000 -0700
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1985-2008 by Apple Inc.. All rights reserved.
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+@@ -20,14 +20,15 @@
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+-
+ /*
+- File: MacErrors.h
++ File: CarbonCore/MacErrors.h
+
+ Contains: OSErr codes.
+
+- Version: CarbonCore-769~1
+-
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1985-2008 by Apple Computer, Inc., all rights reserved
++
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+@@ -38,7 +39,7 @@
+ #define __MACERRORS__
+
+ #ifndef __CONDITIONALMACROS__
+-#include <ConditionalMacros.h>
++#include <CarbonCore/ConditionalMacros.h>
+ #endif
+
+
+@@ -2962,8 +2963,8 @@
+
+ /* ComponentError codes*/
+ enum {
+- badComponentInstance = (long)0x80008001, /* when cast to an OSErr this is -32767*/
+- badComponentSelector = (long)0x80008002 /* when cast to an OSErr this is -32766*/
++ badComponentInstance = (int)0x80008001, /* when cast to an OSErr this is -32767*/
++ badComponentSelector = (int)0x80008002 /* when cast to an OSErr this is -32766*/
+ };
+
+
+@@ -3097,109 +3098,109 @@
+ larger than the highest OSErr value.
+ */
+ enum {
+- kPOSIXErrorBase = 100000L,
+- kPOSIXErrorEPERM = 100001L, /* Operation not permitted */
+- kPOSIXErrorENOENT = 100002L, /* No such file or directory */
+- kPOSIXErrorESRCH = 100003L, /* No such process */
+- kPOSIXErrorEINTR = 100004L, /* Interrupted system call */
+- kPOSIXErrorEIO = 100005L, /* Input/output error */
+- kPOSIXErrorENXIO = 100006L, /* Device not configured */
+- kPOSIXErrorE2BIG = 100007L, /* Argument list too long */
+- kPOSIXErrorENOEXEC = 100008L, /* Exec format error */
+- kPOSIXErrorEBADF = 100009L, /* Bad file descriptor */
+- kPOSIXErrorECHILD = 100010L, /* No child processes */
+- kPOSIXErrorEDEADLK = 100011L, /* Resource deadlock avoided */
+- kPOSIXErrorENOMEM = 100012L, /* Cannot allocate memory */
+- kPOSIXErrorEACCES = 100013L, /* Permission denied */
+- kPOSIXErrorEFAULT = 100014L, /* Bad address */
+- kPOSIXErrorENOTBLK = 100015L, /* Block device required */
+- kPOSIXErrorEBUSY = 100016L, /* Device busy */
+- kPOSIXErrorEEXIST = 100017L, /* File exists */
+- kPOSIXErrorEXDEV = 100018L, /* Cross-device link */
+- kPOSIXErrorENODEV = 100019L, /* Operation not supported by device */
+- kPOSIXErrorENOTDIR = 100020L, /* Not a directory */
+- kPOSIXErrorEISDIR = 100021L, /* Is a directory */
+- kPOSIXErrorEINVAL = 100022L, /* Invalid argument */
+- kPOSIXErrorENFILE = 100023L, /* Too many open files in system */
+- kPOSIXErrorEMFILE = 100024L, /* Too many open files */
+- kPOSIXErrorENOTTY = 100025L, /* Inappropriate ioctl for device */
+- kPOSIXErrorETXTBSY = 100026L, /* Text file busy */
+- kPOSIXErrorEFBIG = 100027L, /* File too large */
+- kPOSIXErrorENOSPC = 100028L, /* No space left on device */
+- kPOSIXErrorESPIPE = 100029L, /* Illegal seek */
+- kPOSIXErrorEROFS = 100030L, /* Read-only file system */
+- kPOSIXErrorEMLINK = 100031L, /* Too many links */
+- kPOSIXErrorEPIPE = 100032L, /* Broken pipe */
+- kPOSIXErrorEDOM = 100033L, /* Numerical argument out of domain */
+- kPOSIXErrorERANGE = 100034L, /* Result too large */
+- kPOSIXErrorEAGAIN = 100035L, /* Resource temporarily unavailable */
+- kPOSIXErrorEINPROGRESS = 100036L, /* Operation now in progress */
+- kPOSIXErrorEALREADY = 100037L, /* Operation already in progress */
+- kPOSIXErrorENOTSOCK = 100038L, /* Socket operation on non-socket */
+- kPOSIXErrorEDESTADDRREQ = 100039L, /* Destination address required */
+- kPOSIXErrorEMSGSIZE = 100040L, /* Message too long */
+- kPOSIXErrorEPROTOTYPE = 100041L, /* Protocol wrong type for socket */
+- kPOSIXErrorENOPROTOOPT = 100042L, /* Protocol not available */
+- kPOSIXErrorEPROTONOSUPPORT = 100043L, /* Protocol not supported */
+- kPOSIXErrorESOCKTNOSUPPORT = 100044L, /* Socket type not supported */
+- kPOSIXErrorENOTSUP = 100045L, /* Operation not supported */
+- kPOSIXErrorEPFNOSUPPORT = 100046L, /* Protocol family not supported */
+- kPOSIXErrorEAFNOSUPPORT = 100047L, /* Address family not supported by protocol family */
+- kPOSIXErrorEADDRINUSE = 100048L, /* Address already in use */
+- kPOSIXErrorEADDRNOTAVAIL = 100049L, /* Can't assign requested address */
+- kPOSIXErrorENETDOWN = 100050L, /* Network is down */
+- kPOSIXErrorENETUNREACH = 100051L, /* Network is unreachable */
+- kPOSIXErrorENETRESET = 100052L, /* Network dropped connection on reset */
+- kPOSIXErrorECONNABORTED = 100053L, /* Software caused connection abort */
+- kPOSIXErrorECONNRESET = 100054L, /* Connection reset by peer */
+- kPOSIXErrorENOBUFS = 100055L, /* No buffer space available */
+- kPOSIXErrorEISCONN = 100056L, /* Socket is already connected */
+- kPOSIXErrorENOTCONN = 100057L, /* Socket is not connected */
+- kPOSIXErrorESHUTDOWN = 100058L, /* Can't send after socket shutdown */
+- kPOSIXErrorETOOMANYREFS = 100059L, /* Too many references: can't splice */
+- kPOSIXErrorETIMEDOUT = 100060L, /* Operation timed out */
+- kPOSIXErrorECONNREFUSED = 100061L, /* Connection refused */
+- kPOSIXErrorELOOP = 100062L, /* Too many levels of symbolic links */
+- kPOSIXErrorENAMETOOLONG = 100063L, /* File name too long */
+- kPOSIXErrorEHOSTDOWN = 100064L, /* Host is down */
+- kPOSIXErrorEHOSTUNREACH = 100065L, /* No route to host */
+- kPOSIXErrorENOTEMPTY = 100066L, /* Directory not empty */
+- kPOSIXErrorEPROCLIM = 100067L, /* Too many processes */
+- kPOSIXErrorEUSERS = 100068L, /* Too many users */
+- kPOSIXErrorEDQUOT = 100069L, /* Disc quota exceeded */
+- kPOSIXErrorESTALE = 100070L, /* Stale NFS file handle */
+- kPOSIXErrorEREMOTE = 100071L, /* Too many levels of remote in path */
+- kPOSIXErrorEBADRPC = 100072L, /* RPC struct is bad */
+- kPOSIXErrorERPCMISMATCH = 100073L, /* RPC version wrong */
+- kPOSIXErrorEPROGUNAVAIL = 100074L, /* RPC prog. not avail */
+- kPOSIXErrorEPROGMISMATCH = 100075L, /* Program version wrong */
+- kPOSIXErrorEPROCUNAVAIL = 100076L, /* Bad procedure for program */
+- kPOSIXErrorENOLCK = 100077L, /* No locks available */
+- kPOSIXErrorENOSYS = 100078L, /* Function not implemented */
+- kPOSIXErrorEFTYPE = 100079L, /* Inappropriate file type or format */
+- kPOSIXErrorEAUTH = 100080L, /* Authentication error */
+- kPOSIXErrorENEEDAUTH = 100081L, /* Need authenticator */
+- kPOSIXErrorEPWROFF = 100082L, /* Device power is off */
+- kPOSIXErrorEDEVERR = 100083L, /* Device error, e.g. paper out */
+- kPOSIXErrorEOVERFLOW = 100084L, /* Value too large to be stored in data type */
+- kPOSIXErrorEBADEXEC = 100085L, /* Bad executable */
+- kPOSIXErrorEBADARCH = 100086L, /* Bad CPU type in executable */
+- kPOSIXErrorESHLIBVERS = 100087L, /* Shared library version mismatch */
+- kPOSIXErrorEBADMACHO = 100088L, /* Malformed Macho file */
+- kPOSIXErrorECANCELED = 100089L, /* Operation canceled */
+- kPOSIXErrorEIDRM = 100090L, /* Identifier removed */
+- kPOSIXErrorENOMSG = 100091L, /* No message of desired type */
+- kPOSIXErrorEILSEQ = 100092L, /* Illegal byte sequence */
+- kPOSIXErrorENOATTR = 100093L, /* Attribute not found */
+- kPOSIXErrorEBADMSG = 100094L, /* Bad message */
+- kPOSIXErrorEMULTIHOP = 100095L, /* Reserved */
+- kPOSIXErrorENODATA = 100096L, /* No message available on STREAM */
+- kPOSIXErrorENOLINK = 100097L, /* Reserved */
+- kPOSIXErrorENOSR = 100098L, /* No STREAM resources */
+- kPOSIXErrorENOSTR = 100099L, /* Not a STREAM */
+- kPOSIXErrorEPROTO = 100100L, /* Protocol error */
+- kPOSIXErrorETIME = 100101L, /* STREAM ioctl timeout */
+- kPOSIXErrorEOPNOTSUPP = 100102L /* Operation not supported on socket */
++ kPOSIXErrorBase = 100000,
++ kPOSIXErrorEPERM = 100001, /* Operation not permitted */
++ kPOSIXErrorENOENT = 100002, /* No such file or directory */
++ kPOSIXErrorESRCH = 100003, /* No such process */
++ kPOSIXErrorEINTR = 100004, /* Interrupted system call */
++ kPOSIXErrorEIO = 100005, /* Input/output error */
++ kPOSIXErrorENXIO = 100006, /* Device not configured */
++ kPOSIXErrorE2BIG = 100007, /* Argument list too long */
++ kPOSIXErrorENOEXEC = 100008, /* Exec format error */
++ kPOSIXErrorEBADF = 100009, /* Bad file descriptor */
++ kPOSIXErrorECHILD = 100010, /* No child processes */
++ kPOSIXErrorEDEADLK = 100011, /* Resource deadlock avoided */
++ kPOSIXErrorENOMEM = 100012, /* Cannot allocate memory */
++ kPOSIXErrorEACCES = 100013, /* Permission denied */
++ kPOSIXErrorEFAULT = 100014, /* Bad address */
++ kPOSIXErrorENOTBLK = 100015, /* Block device required */
++ kPOSIXErrorEBUSY = 100016, /* Device busy */
++ kPOSIXErrorEEXIST = 100017, /* File exists */
++ kPOSIXErrorEXDEV = 100018, /* Cross-device link */
++ kPOSIXErrorENODEV = 100019, /* Operation not supported by device */
++ kPOSIXErrorENOTDIR = 100020, /* Not a directory */
++ kPOSIXErrorEISDIR = 100021, /* Is a directory */
++ kPOSIXErrorEINVAL = 100022, /* Invalid argument */
++ kPOSIXErrorENFILE = 100023, /* Too many open files in system */
++ kPOSIXErrorEMFILE = 100024, /* Too many open files */
++ kPOSIXErrorENOTTY = 100025, /* Inappropriate ioctl for device */
++ kPOSIXErrorETXTBSY = 100026, /* Text file busy */
++ kPOSIXErrorEFBIG = 100027, /* File too large */
++ kPOSIXErrorENOSPC = 100028, /* No space left on device */
++ kPOSIXErrorESPIPE = 100029, /* Illegal seek */
++ kPOSIXErrorEROFS = 100030, /* Read-only file system */
++ kPOSIXErrorEMLINK = 100031, /* Too many links */
++ kPOSIXErrorEPIPE = 100032, /* Broken pipe */
++ kPOSIXErrorEDOM = 100033, /* Numerical argument out of domain */
++ kPOSIXErrorERANGE = 100034, /* Result too large */
++ kPOSIXErrorEAGAIN = 100035, /* Resource temporarily unavailable */
++ kPOSIXErrorEINPROGRESS = 100036, /* Operation now in progress */
++ kPOSIXErrorEALREADY = 100037, /* Operation already in progress */
++ kPOSIXErrorENOTSOCK = 100038, /* Socket operation on non-socket */
++ kPOSIXErrorEDESTADDRREQ = 100039, /* Destination address required */
++ kPOSIXErrorEMSGSIZE = 100040, /* Message too long */
++ kPOSIXErrorEPROTOTYPE = 100041, /* Protocol wrong type for socket */
++ kPOSIXErrorENOPROTOOPT = 100042, /* Protocol not available */
++ kPOSIXErrorEPROTONOSUPPORT = 100043, /* Protocol not supported */
++ kPOSIXErrorESOCKTNOSUPPORT = 100044, /* Socket type not supported */
++ kPOSIXErrorENOTSUP = 100045, /* Operation not supported */
++ kPOSIXErrorEPFNOSUPPORT = 100046, /* Protocol family not supported */
++ kPOSIXErrorEAFNOSUPPORT = 100047, /* Address family not supported by protocol family */
++ kPOSIXErrorEADDRINUSE = 100048, /* Address already in use */
++ kPOSIXErrorEADDRNOTAVAIL = 100049, /* Can't assign requested address */
++ kPOSIXErrorENETDOWN = 100050, /* Network is down */
++ kPOSIXErrorENETUNREACH = 100051, /* Network is unreachable */
++ kPOSIXErrorENETRESET = 100052, /* Network dropped connection on reset */
++ kPOSIXErrorECONNABORTED = 100053, /* Software caused connection abort */
++ kPOSIXErrorECONNRESET = 100054, /* Connection reset by peer */
++ kPOSIXErrorENOBUFS = 100055, /* No buffer space available */
++ kPOSIXErrorEISCONN = 100056, /* Socket is already connected */
++ kPOSIXErrorENOTCONN = 100057, /* Socket is not connected */
++ kPOSIXErrorESHUTDOWN = 100058, /* Can't send after socket shutdown */
++ kPOSIXErrorETOOMANYREFS = 100059, /* Too many references: can't splice */
++ kPOSIXErrorETIMEDOUT = 100060, /* Operation timed out */
++ kPOSIXErrorECONNREFUSED = 100061, /* Connection refused */
++ kPOSIXErrorELOOP = 100062, /* Too many levels of symbolic links */
++ kPOSIXErrorENAMETOOLONG = 100063, /* File name too long */
++ kPOSIXErrorEHOSTDOWN = 100064, /* Host is down */
++ kPOSIXErrorEHOSTUNREACH = 100065, /* No route to host */
++ kPOSIXErrorENOTEMPTY = 100066, /* Directory not empty */
++ kPOSIXErrorEPROCLIM = 100067, /* Too many processes */
++ kPOSIXErrorEUSERS = 100068, /* Too many users */
++ kPOSIXErrorEDQUOT = 100069, /* Disc quota exceeded */
++ kPOSIXErrorESTALE = 100070, /* Stale NFS file handle */
++ kPOSIXErrorEREMOTE = 100071, /* Too many levels of remote in path */
++ kPOSIXErrorEBADRPC = 100072, /* RPC struct is bad */
++ kPOSIXErrorERPCMISMATCH = 100073, /* RPC version wrong */
++ kPOSIXErrorEPROGUNAVAIL = 100074, /* RPC prog. not avail */
++ kPOSIXErrorEPROGMISMATCH = 100075, /* Program version wrong */
++ kPOSIXErrorEPROCUNAVAIL = 100076, /* Bad procedure for program */
++ kPOSIXErrorENOLCK = 100077, /* No locks available */
++ kPOSIXErrorENOSYS = 100078, /* Function not implemented */
++ kPOSIXErrorEFTYPE = 100079, /* Inappropriate file type or format */
++ kPOSIXErrorEAUTH = 100080, /* Authentication error */
++ kPOSIXErrorENEEDAUTH = 100081, /* Need authenticator */
++ kPOSIXErrorEPWROFF = 100082, /* Device power is off */
++ kPOSIXErrorEDEVERR = 100083, /* Device error, e.g. paper out */
++ kPOSIXErrorEOVERFLOW = 100084, /* Value too large to be stored in data type */
++ kPOSIXErrorEBADEXEC = 100085, /* Bad executable */
++ kPOSIXErrorEBADARCH = 100086, /* Bad CPU type in executable */
++ kPOSIXErrorESHLIBVERS = 100087, /* Shared library version mismatch */
++ kPOSIXErrorEBADMACHO = 100088, /* Malformed Macho file */
++ kPOSIXErrorECANCELED = 100089, /* Operation canceled */
++ kPOSIXErrorEIDRM = 100090, /* Identifier removed */
++ kPOSIXErrorENOMSG = 100091, /* No message of desired type */
++ kPOSIXErrorEILSEQ = 100092, /* Illegal byte sequence */
++ kPOSIXErrorENOATTR = 100093, /* Attribute not found */
++ kPOSIXErrorEBADMSG = 100094, /* Bad message */
++ kPOSIXErrorEMULTIHOP = 100095, /* Reserved */
++ kPOSIXErrorENODATA = 100096, /* No message available on STREAM */
++ kPOSIXErrorENOLINK = 100097, /* Reserved */
++ kPOSIXErrorENOSR = 100098, /* No STREAM resources */
++ kPOSIXErrorENOSTR = 100099, /* Not a STREAM */
++ kPOSIXErrorEPROTO = 100100, /* Protocol error */
++ kPOSIXErrorETIME = 100101, /* STREAM ioctl timeout */
++ kPOSIXErrorEOPNOTSUPP = 100102 /* Operation not supported on socket */
+ };
+
+
+diff -Nru ../CarbonHeaders-18.1.orig/MacMemory.h ./MacMemory.h
+--- ../CarbonHeaders-18.1.orig/MacMemory.h 1969-12-31 16:00:00.000000000 -0800
++++ ./MacMemory.h 2009-09-29 14:01:01.000000000 -0700
+@@ -0,0 +1,2548 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/MacMemory.h
++
++ Contains: Memory Manager Interfaces.
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1985-2008 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 __MACMEMORY__
++#define __MACMEMORY__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++#ifndef __MIXEDMODE__
++#include <CarbonCore/MixedMode.h>
++#endif
++
++
++#include <string.h>
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++enum {
++ maxSize = 0x7FFFFFF0 /*the largest block possible*/
++};
++
++/*
++ If you define a macro named __MAC_OS_X_MEMORY_MANAGER_CLEAN__ with a non-zero value, then
++ some Memory Manager APIs will become inlined, minimal implementations. See the comments
++ below for more information about this.
++*/
++#ifndef __MAC_OS_X_MEMORY_MANAGER_CLEAN__
++#define __MAC_OS_X_MEMORY_MANAGER_CLEAN__ 0
++#endif /* !defined(__MAC_OS_X_MEMORY_MANAGER_CLEAN__) */
++
++#if !__MAC_OS_X_MEMORY_MANAGER_CLEAN__
++enum {
++ defaultPhysicalEntryCount = 8
++};
++
++enum {
++ /* values returned from the GetPageState function */
++ kPageInMemory = 0,
++ kPageOnDisk = 1,
++ kNotPaged = 2
++};
++
++enum {
++ /* masks for Zone->heapType field */
++ k32BitHeap = 1, /* valid in all Memory Managers */
++ kNewStyleHeap = 2, /* true if new Heap Manager is present */
++ kNewDebugHeap = 4 /* true if new Heap Manager is running in debug mode on this heap */
++};
++
++
++#endif /* !__MAC_OS_X_MEMORY_MANAGER_CLEAN__ */
++
++/* bits for use with HGetState/HSetState*/
++enum {
++ kHandleIsResourceBit = 5,
++ kHandlePurgeableBit = 6,
++ kHandleLockedBit = 7
++};
++
++/* masks for use with HGetState/HSetState*/
++enum {
++ kHandleIsResourceMask = 0x20,
++ kHandlePurgeableMask = 0x40,
++ kHandleLockedMask = 0x80
++};
++
++#if !__LP64__
++typedef CALLBACK_API( long , GrowZoneProcPtr )(Size cbNeeded);
++typedef CALLBACK_API( void , PurgeProcPtr )(Handle blockToPurge);
++typedef CALLBACK_API( void , UserFnProcPtr )(void * parameter);
++typedef STACK_UPP_TYPE(GrowZoneProcPtr) GrowZoneUPP;
++typedef STACK_UPP_TYPE(PurgeProcPtr) PurgeUPP;
++typedef STACK_UPP_TYPE(UserFnProcPtr) UserFnUPP;
++struct Zone {
++ Ptr bkLim;
++ Ptr purgePtr;
++ Ptr hFstFree;
++ long zcbFree;
++ GrowZoneUPP gzProc;
++ short moreMast;
++ short flags;
++ short cntRel;
++ short maxRel;
++ short cntNRel;
++ SInt8 heapType; /* previously "maxNRel", now holds flags (e.g. k32BitHeap)*/
++ SInt8 unused;
++ short cntEmpty;
++ short cntHandles;
++ long minCBFree;
++ PurgeUPP purgeProc;
++ Ptr sparePtr;
++ Ptr allocPtr;
++ short heapData;
++};
++typedef struct Zone Zone;
++typedef Zone * THz;
++typedef THz * THzPtr;
++#if !__MAC_OS_X_MEMORY_MANAGER_CLEAN__
++struct MemoryBlock {
++ void * address;
++ unsigned long count;
++};
++typedef struct MemoryBlock MemoryBlock;
++struct LogicalToPhysicalTable {
++ MemoryBlock logical;
++ MemoryBlock physical[8];
++};
++typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
++
++typedef short PageState;
++typedef short StatusRegisterContents;
++enum {
++ kVolumeVirtualMemoryInfoVersion1 = 1 /* first version of VolumeVirtualMemoryInfo*/
++};
++
++struct VolumeVirtualMemoryInfo {
++ PBVersion version; /* Input: Version of the VolumeVirtualMemoryInfo structure*/
++ SInt16 volumeRefNum; /* Input: volume reference number*/
++ Boolean inUse; /* output: true if volume is currently used for file mapping*/
++ UInt8 _fill;
++ UInt32 vmOptions; /* output: tells what volume can support (same as DriverGestaltVMOptionsResponse vmOptions bits in DriverGestalt)*/
++ /* end of kVolumeVirtualMemoryInfoVersion1 structure*/
++};
++typedef struct VolumeVirtualMemoryInfo VolumeVirtualMemoryInfo;
++typedef VolumeVirtualMemoryInfo * VolumeVirtualMemoryInfoPtr;
++#endif /* !__MAC_OS_X_MEMORY_MANAGER_CLEAN__ */
++
++/*
++ * NewGrowZoneUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern GrowZoneUPP
++NewGrowZoneUPP(GrowZoneProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * NewPurgeUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern PurgeUPP
++NewPurgeUPP(PurgeProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * NewUserFnUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern UserFnUPP
++NewUserFnUPP(UserFnProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * DisposeGrowZoneUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposeGrowZoneUPP(GrowZoneUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * DisposePurgeUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposePurgeUPP(PurgeUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * DisposeUserFnUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposeUserFnUPP(UserFnUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * InvokeGrowZoneUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern long
++InvokeGrowZoneUPP(
++ Size cbNeeded,
++ GrowZoneUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * InvokePurgeUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++InvokePurgeUPP(
++ Handle blockToPurge,
++ PurgeUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++/*
++ * InvokeUserFnUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++InvokeUserFnUPP(
++ void * parameter,
++ UserFnUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++#if __MACH__
++ #ifdef __cplusplus
++ inline GrowZoneUPP NewGrowZoneUPP(GrowZoneProcPtr userRoutine) { return userRoutine; }
++ inline PurgeUPP NewPurgeUPP(PurgeProcPtr userRoutine) { return userRoutine; }
++ inline UserFnUPP NewUserFnUPP(UserFnProcPtr userRoutine) { return userRoutine; }
++ inline void DisposeGrowZoneUPP(GrowZoneUPP) { }
++ inline void DisposePurgeUPP(PurgeUPP) { }
++ inline void DisposeUserFnUPP(UserFnUPP) { }
++ inline long InvokeGrowZoneUPP(Size cbNeeded, GrowZoneUPP userUPP) { return (*userUPP)(cbNeeded); }
++ inline void InvokePurgeUPP(Handle blockToPurge, PurgeUPP userUPP) { (*userUPP)(blockToPurge); }
++ inline void InvokeUserFnUPP(void * parameter, UserFnUPP userUPP) { (*userUPP)(parameter); }
++ #else
++ #define NewGrowZoneUPP(userRoutine) ((GrowZoneUPP)userRoutine)
++ #define NewPurgeUPP(userRoutine) ((PurgeUPP)userRoutine)
++ #define NewUserFnUPP(userRoutine) ((UserFnUPP)userRoutine)
++ #define DisposeGrowZoneUPP(userUPP)
++ #define DisposePurgeUPP(userUPP)
++ #define DisposeUserFnUPP(userUPP)
++ #define InvokeGrowZoneUPP(cbNeeded, userUPP) (*userUPP)(cbNeeded)
++ #define InvokePurgeUPP(blockToPurge, userUPP) (*userUPP)(blockToPurge)
++ #define InvokeUserFnUPP(parameter, userUPP) (*userUPP)(parameter)
++ #endif
++#endif
++
++#endif /* !__LP64__ */
++
++/*
++ * MemError()
++ *
++ * Summary:
++ * Determines if an application\xD5s last direct call to a Memory
++ * Manager function executed successfully.
++ *
++ * Discussion:
++ * MemError() yields the result code produced by the last Memory
++ * Manager function your application called directly, and resets
++ * MemError() to return noErr in the future. MemError() is useful
++ * during application debugging. You might also use MemError as one
++ * part of a memory-management scheme to identify instances in which
++ * the Memory Manager rejects overly large memory requests by
++ * returning the error code memFullErr.
++ *
++ * To view the result codes that MemError() can produce, see "Memory
++ * Manager Result Codes".
++ *
++ * Do not rely on MemError() as the only component of a
++ * memory-management scheme. For example, suppose you call NewHandle
++ * or NewPtr and receive the result code noErr, indicating that the
++ * Memory Manager was able to allocate sufficient memory. In this
++ * case, you have no guarantee that the allocation did not deplete
++ * your application\xD5s memory reserves to levels so low that simple
++ * operations might cause your application to crash. Instead of
++ * relying on MemError(), check before making a memory request that
++ * there is enough memory both to fulfill the request and to support
++ * essential operations.
++ *
++ * On Mac OS X 10.3 and later, the value of MemError() is kept for
++ * each thread; prior to Mac OS X 10.3. MemError() is global to the
++ * application. Because of this, and other problems, the Memory
++ * Manager APIs are not thread safe before Mac OS X 10.3.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++MemError(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * LMGetMemErr()
++ *
++ * Summary:
++ * Returns the result of the last Memory Manager function, without
++ * clearing the value like MemError() does.
++ *
++ * Discussion:
++ * LMGetMemErr yields the result code produced by the last Memory
++ * Manager function your application called directly. Unlike
++ * MemError(), this function does not reset the stored value, so
++ * subsequent calls to LMGetMemErr() will still return this value
++ * until the next Memory Manager routine is called or until
++ * MemError() is called to reset the value. LMGetMemErr is useful
++ * during application debugging. You might also use this value as
++ * one part of a memory-management scheme to identify instances in
++ * which the Memory Manager rejects overly large memory requests by
++ * returning the error code memFullErr.
++ *
++ * To view the result codes that MemError() can produce, see "Memory
++ * Manager Result Codes".
++ *
++ * Do not rely on MemError() as the only component of a
++ * memory-management scheme. For example, suppose you call NewHandle
++ * or NewPtr and receive the result code noErr, indicating that the
++ * Memory Manager was able to allocate sufficient memory. In this
++ * case, you have no guarantee that the allocation did not deplete
++ * your application\xD5s memory reserves to levels so low that simple
++ * operations might cause your application to crash. Instead of
++ * relying on MemError(), check before making a memory request that
++ * there is enough memory both to fulfill the request and to support
++ * essential operations.
++ *
++ * On Mac OS X 10.3 and later, the value of MemError() is kept for
++ * each thread; prior to Mac OS X 10.3 there was one global value of
++ * MemError() which all threads shared. Because of this, and other
++ * problems, the Memory Manager APIs are not thread safe before Mac
++ * OS X 10.3.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern SInt16
++LMGetMemErr(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * LMSetMemErr()
++ *
++ * Summary:
++ * Set the value which will be returned by MemError()
++ *
++ * Discussion:
++ * User code shouldn't need to call this function, which is used to
++ * set the value which the next call to MemError() will return.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * value:
++ * the value which the next MemError() function call should return
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++LMSetMemErr(SInt16 value) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * NewHandle()
++ *
++ * Summary:
++ * Allocate a relocatable memory block of a specified size.
++ *
++ * Discussion:
++ * The NewHandle function attempts to allocate a new relocatable
++ * block in the current heap zone with a logical size of logicalSize
++ * bytes and then return a handle to the block. The new block is
++ * unlocked and unpurgeable. If NewHandle cannot allocate a block of
++ * the requested size, it returns NULL. The memory block returned
++ * likely will contain garbage, and will be unlocked and
++ * non-purgeable.
++ *
++ * WARNING
++ *
++ * Do not try to manufacture your own handles without this function
++ * by simply assigning the address of a variable of type Ptr to a
++ * variable of type Handle. The resulting "fake handle" would not
++ * reference a relocatable block and could cause a system crash.
++ * If this function returns NIL, the error result can be determined
++ * by calling the function MemError().
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * byteCount:
++ * the size of the relocatable memory block to allocate. If this
++ * value is < 0, NIL will be returned. If this value is 0, a
++ * handle to 0 byte block will be returned.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Handle
++NewHandle(Size byteCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * NewHandleClear()
++ *
++ * Summary:
++ * Allocate a relocatable memory block of a specified size.
++ *
++ * Discussion:
++ * The NewHandle function attempts to allocate a new relocatable
++ * block in the current heap zone with a logical size of logicalSize
++ * bytes and then return a handle to the block. The new block is
++ * unlocked and unpurgeable. If NewHandle cannot allocate a block of
++ * the requested size, it returns NULL. The memory block returned
++ * will be zeroed, and will be unlocked and non-purgeable.
++ *
++ * WARNING
++ *
++ * Do not try to manufacture your own handles without this function
++ * by simply assigning the address of a variable of type Ptr to a
++ * variable of type Handle. The resulting "fake handle" would not
++ * reference a relocatable block and could cause a system crash.
++ * If this function returns NIL, the error result can be determined
++ * by calling the function MemError().
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * byteCount:
++ * the size of the relocatable memory block to allocate. If this
++ * value is < 0, NIL will be returned. If this value is 0, a
++ * handle to 0 byte block will be returned.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Handle
++NewHandleClear(Size byteCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * RecoverHandle()
++ *
++ * Summary:
++ * Returns a handle to a relocatable block pointed to by a specified
++ * pointer.
++ *
++ * Discussion:
++ * The Memory Manager does not allow you to change relocatable
++ * blocks into nonrelocatable blocks, or vice-versa. However, if you
++ * no longer have access to a handle but still have access to its
++ * master pointer p, you can use the RecoverHandle function to
++ * recreate a handle to the relocatable block referenced by
++ * p.
++ *
++ * Call the function MemError() to get the result code. See "Memory
++ * Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * p:
++ * the master pointer to a relocatable block.
++ *
++ * Result:
++ * A handle to a relocatable block point to by p. If p does not
++ * point to a valid block, this function returns NULL.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Handle
++RecoverHandle(Ptr p) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * NewPtr()
++ *
++ * Summary:
++ * Allocates a nonrelocatable block of memory of a specified size.
++ *
++ * Discussion:
++ * The NewPtr function attempts to reserve space for the new block.
++ * If it is able to reserve the requested amount of space, NewPtr
++ * allocates the nonrelocatable block. Otherwise, NewPtr returns
++ * NULL and generates a memFullErr error. On Mac OS X, NewPtr will
++ * never fail because it is unable to allocate the pointer. Certain
++ * old versions of Mac OS X return a NULL pointer when asked to
++ * allocate a pointer of size 0.
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * byteCount:
++ * The requested size (in bytes) of the nonrelocatable block. If
++ * you pass a value of zero, this function returns a valid zero
++ * length pointer.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Ptr
++NewPtr(Size byteCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * NewPtrClear()
++ *
++ * Summary:
++ * Allocates a nonrelocatable block of memory of a specified size
++ * with all its bytes set to 0.
++ *
++ * Discussion:
++ * The NewPtr function attempts to reserve space for the new block.
++ * If it is able to reserve the requested amount of space, NewPtr
++ * allocates the nonrelocatable block. Otherwise, NewPtr returns
++ * NULL and generates a memFullErr error. On Mac OS X, NewPtr will
++ * never fail because it is unable to allocate the pointer. Certain
++ * old versions of Mac OS X return a NULL pointer when asked to
++ * allocate a pointer of size 0.
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * byteCount:
++ * The requested size (in bytes) of the nonrelocatable block. If
++ * you pass a value of zero, this function returns a valid zero
++ * length pointer.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Ptr
++NewPtrClear(Size byteCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++#if !__LP64__
++/*
++ * MaxBlock() *** DEPRECATED ***
++ *
++ * Summary:
++ * Return the size of the largest block you could allocate in the
++ * current heap zone after compaction.
++ *
++ * Discussion:
++ * On Mac OS X, this function always returns a large value, because
++ * virtual memory is always available to fulfill any request for
++ * memory. This function is deprecated on Mac OS X and later. You
++ * can assume that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern long
++MaxBlock(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ * StackSpace() *** DEPRECATED ***
++ *
++ * Summary:
++ * Returns the amount of space unused on the current thread's stack.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern long
++StackSpace(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++#endif /* !__LP64__ */
++
++/*
++ * NewEmptyHandle()
++ *
++ * Summary:
++ * Initializes a new handle without allocating any memory for it to
++ * control.
++ *
++ * Discussion:
++ * When you want to allocate memory for the empty handle, use the
++ * ReallocateHandle function.
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Handle
++NewEmptyHandle(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HLock()
++ *
++ * Summary:
++ * Lock a relocatable block so that it does not move in the heap
++ *
++ * Discussion:
++ * The HLock procedure locks the relocatable block to which h is a
++ * handle, preventing it from being moved within its heap zone. If
++ * the block is already locked,HLock does nothing.
++ *
++ * On Mac OS X, the behaviour of the Memory Manager and of heaps in
++ * general is different than on Mac OS 9.x and earlier. In
++ * particular, the heap on Mac OS X is never purged or compacted.
++ * Therefore, an unlocked handle will never be relocated except as a
++ * result of a direct action by something calling SetHandleSize() or
++ * by using a function like PtrAndHand() which implicitly resizes
++ * the handle to append data to it. Because of this, most locking
++ * and unlocking of handles is unnecessary on Mac OS X, and the use
++ * of HLock() and other functions is being deprecated. If you
++ * define a macro named __MAC_OS_X_MEMORY_MANAGER_CLEAN__ to 1 in
++ * your sources before you include MacMemory.h, then HLock() and
++ * several other functions will become empty operations, removing
++ * the overhead of a function call.
++ *
++ * However, some applications are relying on the behavior that
++ * resizing a locked handle produces an error, or tracking the state
++ * of the locked bit for a give handle via the HGetState() function.
++ * Applications which rely on this can not use
++ * __MAC_OS_X_MEMORY_MANAGER_CLEAN__.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to lock. If h is == NULL, then HLock() sets
++ * MemError() to noErr.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HLock(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HLockHi()
++ *
++ * Summary:
++ * Lock a relocatable handle.
++ *
++ * Discussion:
++ * The HLockHi() function locks a handle in memory. On versions of
++ * Mac OS before Mac OS X, it would first attempt to move the handle
++ * as high in memory as feasible. However, on Mac OS X and later,
++ * there is no advantage to having handles high in memory, and so
++ * this function never moves a handle before locking it.
++ * See the discussion about handle locking above the function
++ * HLock().
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to lock. If h is == NULL, then HLockHi() sets
++ * MemError() to noErr.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HLockHi(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * HUnlock()
++ *
++ * Summary:
++ * Unlock a relocatable block so that it does not move in the heap
++ *
++ * Discussion:
++ * The HUnlock procedure unlocks the relocatable block to which h is
++ * a handle, allowing it from being moved within its heap zone. If
++ * the block is already unlocked, HUnlock does nothing.
++ *
++ * See the discussion about handles and locking on Mac OS X above
++ * the HLock() function.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to unlock. If h is == NULL, then HUnlock() sets
++ * MemError() to noErr.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HUnlock(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++#if !__LP64__
++/*
++ * HPurge() *** DEPRECATED ***
++ *
++ * Summary:
++ * Mark a relocatable block so that it does can be purged if a
++ * memory request cannot be fulfilled after compaction of the heap
++ *
++ * Discussion:
++ * The HPurge procedure makes the relocatable block to which h is a
++ * handle purgeable. If the block is already purgeable, HPurge does
++ * nothing.
++ *
++ * On Mac OS X, heaps are never purged. Therefore, the use of
++ * HPurge() and its associated functios is deprecated. If you define
++ * a macro __MAC_OS_X_MEMORY_MANAGER_CLEAN__ in your sources before
++ * you include MacMemory.h, then any calls to HPurge() in your
++ * program will essentially be removed.
++ *
++ * However, some applications may set the handle as purgeable, and
++ * then later check the purgeBit for the handle via HGetState(). If
++ * your application depends on the purge bit being set for handles,
++ * you will not be able to take advantage of this macro.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to mark as purgeable. If h is == NULL, then
++ * HPurge() just sets MemError() to noErr.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HPurge(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * HNoPurge() *** DEPRECATED ***
++ *
++ * Summary:
++ * Mark a relocatable block so that it can not be purged.
++ *
++ * Discussion:
++ * The HNoPurge procedure makes the relocatable block to which h is
++ * a handle unpurgeable. See the discussion about purgable handles
++ * above the HPurge() function.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to mark as nonpurgeable. If h is == NULL, then
++ * HPurge() just sets MemError() to noErr.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HNoPurge(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++#endif /* !__LP64__ */
++
++/*
++ * TempNewHandle()
++ *
++ * Summary:
++ * Allocate a relocatable memory block of a specified size.
++ *
++ * Discussion:
++ * The TempNewHandle function attempts to allocate a new relocatable
++ * block in the current heap zone with a logical size of logicalSize
++ * bytes and then return a handle to the block. The new block is
++ * unlocked and unpurgeable. If NewHandle cannot allocate a block of
++ * the requested size, it returns NULL. The memory block returned
++ * likely will contain garbage.
++ *
++ * WARNING
++ *
++ * Do not try to manufacture your own handles without this function
++ * by simply assigning the address of a variable of type Ptr to a
++ * variable of type Handle. The resulting "fake handle" would not
++ * reference a relocatable block and could cause a system crash.
++ * If this function returns NIL, the error result can be determined
++ * by calling the function MemError().
++ *
++ * On Mac OS X, there is no temporary memory heap, and thus no
++ * difference between the handles returned by TempNewHandle() and
++ * those returned by NewHandle(). The only difference between the
++ * two is that TempNewHandle() also returns the error result of the
++ * call in resultCode.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * logicalSize:
++ * the size of the relocatable memory block to allocate. If this
++ * value is < 0, NIL will be returned. If this value is 0, a
++ * handle to 0 byte block will be returned.
++ *
++ * resultCode:
++ * On exit, this will be set to the result of the operation.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Handle
++TempNewHandle(
++ Size logicalSize,
++ OSErr * resultCode) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++#if !__LP64__
++/*
++ * TempMaxMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * Return the maximum amount of temporary memory available
++ *
++ * Discussion:
++ * On Mac OS X, this function always returns a large value, because
++ * virtual memory is always available to fulfill any request for
++ * memory. This function is deprecated on Mac OS X and later. You
++ * can assume that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * grow:
++ * If != NULL, then this is filled in with the the value 0.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Size
++TempMaxMem(Size * grow) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * TempFreeMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * Return the maximum amount of free memory in the temporary heap.
++ *
++ * Discussion:
++ * On Mac OS X, there is no separate temporary memory heap. This
++ * function always returns a large value, because virtual memory is
++ * always available to fulfill any request for memory. This
++ * function is deprecated on Mac OS X and later. You can assume
++ * that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern long
++TempFreeMem(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * CompactMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * Compact the heap by purging and moving blocks such that at least
++ * cbNeeded bytes are available, if possible.
++ *
++ * Discussion:
++ * On Mac OS X and later, blocks are never purged and memory heaps
++ * will grow as necessary, so compaction is never necessary nor
++ * performed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Size
++CompactMem(Size cbNeeded) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PurgeMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * Purge blocks from the heap until cbNeeded bytes are available, if
++ * possible.
++ *
++ * Discussion:
++ * On Mac OS X and later, blocks are never purged and memory heaps
++ * will grow as necessary, so purging of a heap is never necessary
++ * nor performed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++PurgeMem(Size cbNeeded) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * FreeMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * Return the maximum amount of free memory in the temporary heap.
++ *
++ * Discussion:
++ * On Mac OS X, this function always returns a large value, because
++ * virtual memory is always available to fulfill any request for
++ * memory. This function is deprecated on Mac OS X and later. You
++ * can assume that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern long
++FreeMem(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ * MaxMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * Return the maximum amount of free memory available
++ *
++ * Discussion:
++ * On Mac OS X, this function always returns a large value, because
++ * virtual memory is always available to fulfill any request for
++ * memory. This function is deprecated on Mac OS X and later. You
++ * can assume that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * grow:
++ * If != NULL, then this is filled in with the the value 0.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Size
++MaxMem(Size * grow) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ * SetGrowZone() *** DEPRECATED ***
++ *
++ * Summary:
++ * Set a function which is called when a heap is grown
++ *
++ * Discussion:
++ * On Mac OS X and later, heaps never grow, and so the function set
++ * by SetGrowZone() is never called.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * growZone:
++ * a upp for a function to call when a heap needs to be grown
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++SetGrowZone(GrowZoneUPP growZone) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * GetGrowZone() *** DEPRECATED ***
++ *
++ * Summary:
++ * Get the function which is called when a heap is grown
++ *
++ * Discussion:
++ * On Mac OS X and later, heaps never grow, and so this function (
++ * set by SetGrowZone() ) is never called.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: not available
++ */
++extern GrowZoneUPP
++GetGrowZone(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * MoveHHi() *** DEPRECATED ***
++ *
++ * Summary:
++ * Move a handle as high in memory as possible
++ *
++ * Discussion:
++ * On versions of Mac OS before Mac OS X, MoveHHi() would move the
++ * handle as high in memory as feasible. However, on Mac OS X and
++ * later, there is no advantage to having handles high in memory,
++ * and so this function never moves a handle before locking it.
++ * See the discussion about handle locking above the function
++ * HLock().
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to move
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++MoveHHi(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++#endif /* !__LP64__ */
++
++/*
++ * DisposePtr()
++ *
++ * Summary:
++ * Release memory occupied by a nonrelocatable block
++ *
++ * Discussion:
++ * When you no longer need a nonrelocatable block, call the
++ * DisposePtr function to free it for other uses.
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ * After a call to DisposePtr, all pointers to the released block
++ * become invalid and should not be used again. Any subsequent use
++ * of a pointer to the released block might cause a system error.
++ * You can pass the value NULL as the pointer to dispose.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * p:
++ * A pointer to the nonrelocatable block you want to dispose of
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++DisposePtr(Ptr p) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetPtrSize()
++ *
++ * Summary:
++ * Returns the logical size of the nonrelocatable block
++ * corresponding to a pointer.
++ *
++ * Discussion:
++ * This function returns the number of bytes used for the given
++ * pointer. Call the function MemError to get the result code. See
++ * "Memory Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * p:
++ * a pointer to a nonrelocatable block.
++ *
++ * Result:
++ * The logical size, in bytes, of the nonrelocatable block pointed
++ * to by p. In case of error, the function returns 0.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Size
++GetPtrSize(Ptr p) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * SetPtrSize()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++SetPtrSize(
++ Ptr p,
++ Size newSize) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * DisposeHandle()
++ *
++ * Summary:
++ * Releases memory occupied by a relocatable block.
++ *
++ * Discussion:
++ * The DisposeHandle function releases the memory occupied by the
++ * relocatable block whose handle is h. It also frees the handle\xD5s
++ * master pointer for other uses.
++ * Do not use DisposeHandle to dispose of a handle obtained from the
++ * Resource Manager (for example, by a previous call to
++ * GetResource), useReleaseResource instead. If, however, you have
++ * called DetachResource on a resource handle, you should dispose of
++ * the storage by callingDisposeHandle.
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ * After a call to DisposeHandle, all handles to the released block
++ * become invalid and should not be used again. Any subsequent calls
++ * to DisposeHandleusing an invalid handle might damage the master
++ * pointer list. You can pass the value NULL as the handle to
++ * dispose.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * A handle to a relocatable block.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++DisposeHandle(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * SetHandleSize()
++ *
++ * Summary:
++ * Changes the logical size of the relocatable block corresponding
++ * to the specified handle.
++ *
++ * Discussion:
++ * Change the logical size of the relocatable block corresponding to
++ * the specified handle. SetHandleSize might need to move the
++ * relocatable block to obtain enough space for the resized block.
++ * Thus, for best results you should unlock a block before resizing
++ * it.
++ *
++ * An attempt to increase the size of a locked block might fail,
++ * because of blocks above and below it that are either
++ * nonrelocatable or locked. You should be prepared for this
++ * possibility.
++ *
++ * Instead of using the SetHandleSize function to set the size of a
++ * handle to 0, you can use the EmptyHandle function.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * a handle to a relocatable block.
++ *
++ * newSize:
++ * the desired new logical size, in bytes, of the relocatable
++ * block.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++SetHandleSize(
++ Handle h,
++ Size newSize) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetHandleSize()
++ *
++ * Summary:
++ * Returns the logical size of the relocatable block corresponding
++ * to a handle.
++ *
++ * Discussion:
++ * Returns the logical size of the relocatable block corresponding
++ * to a handle. Call the function MemError to get the result code.
++ * See "Memory Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * a handle to a relocatable block.
++ *
++ * Result:
++ * The logical size, in bytes, of the relocatable block whose handle
++ * is h. In case of error, the function return 0.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Size
++GetHandleSize(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * ReallocateHandle()
++ *
++ * Summary:
++ * Allocates a new relocatable block of a specified size and sets a
++ * handle\xD5s master pointer to point to the new block.
++ *
++ * Discussion:
++ * Usually you use ReallocateHandle to reallocate space for a block
++ * that you have emptied. If the handle references an existing
++ * block, ReallocateHandle releases that block before creating a new
++ * one.
++ *
++ * To reallocate space for a resource that has been purged, you
++ * should call LoadResource, not ReallocateHandle. To resize
++ * relocatable blocks, you should call the SetHandleSize
++ * function.
++ *
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * A handle to a relocatable block.
++ *
++ * byteCount:
++ * the desired new logical size (in bytes) of the relocatable
++ * block. The new block is unlocked and unpurgeable.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++ReallocateHandle(
++ Handle h,
++ Size byteCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * EmptyHandle()
++ *
++ * Summary:
++ * Purges a relocatable block and sets the corresponding handle\xD5s
++ * master pointer to NULL.
++ *
++ * Discussion:
++ * The EmptyHandle function purges the relocatable block whose
++ * handle is h and sets the handle\xD5s master pointer to NULL. The
++ * EmptyHandle function allows you to free memory taken by a
++ * relocatable block without freeing the relocatable block\xD5s master
++ * pointer for other uses. The block whose handle is h must be
++ * unlocked but need not be purgeable.
++ *
++ * Note that if there are multiple handles to the relocatable block,
++ * then calling the EmptyHandle function empties them all, because
++ * all of the handles share a common master pointer. When you later
++ * use ReallocateHandle to reallocate space for the block, the
++ * master pointer is updated, and all of the handles reference the
++ * new block correctly.
++ *
++ * To free the memory taken up by a relocatable block and release
++ * the block\xD5s master pointer for other uses, use the DisposeHandle
++ * function.
++ *
++ * Call the function MemError to get the result code. See "Memory
++ * Manager Result Codes".
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * a handle to a relocatable block.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++EmptyHandle(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HSetRBit()
++ *
++ * Summary:
++ * Set the "R" bit for the handle state.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HSetRBit(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HClrRBit()
++ *
++ * Summary:
++ * Clear the "R" bit for the handle state.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HClrRBit(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HGetState()
++ *
++ * Summary:
++ * Get the current state of the handle's locked, purgeable, and R
++ * bits
++ *
++ * Discussion:
++ * The HGetState function returns a signed byte (char) containing
++ * the flags of the master pointer for the given handle. You can
++ * save this byte, change the state of any of the flags using the
++ * functions described in this section, and then restore their
++ * original states by passing the byte to the HSetState
++ * function.
++ *
++ * You can use bit-manipulation functions on the returned signed
++ * byte to determine the value of a given attribute.
++ * Currently the following bits are used:
++ * kHandleIsResourceBit - if set, handle is a resource
++ * kHandlePurgeableBit - if set, handle is purgeable
++ * kHandleLockedBit - if set, handle is locked
++ * On Mac OS X and later, heaps are never purged, so the purgeable
++ * bit is used but its setting is essentially ignored. Also, since
++ * heaps are never compacted, and therefore the only time a handle
++ * moves is when that handle is resized, the danger of using
++ * defererenced handles is lower and so handles likely do not need
++ * to be locked as often. Because of this, the state for a handle is
++ * less useful, and HGetState() and other functions is being
++ * deprecated. If you define a macro named
++ * __MAC_OS_X_MEMORY_MANAGER_CLEAN__ in your sources before you
++ * include MacMemory.h, then HGetState() and several other functions
++ * will become empty operations, removing the overhead of a function
++ * call.
++ *
++ * However, some applications may depend on the state bits of a
++ * handle being correct or changing as functions like HLock(), etc.,
++ * are called. Applications which rely on this can not use
++ * __MAC_OS_X_MEMORY_MANAGER_CLEAN__.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to get the state for
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern SInt8
++HGetState(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HSetState()
++ *
++ * Summary:
++ * Set the current state of the handle's locked, purgeable, and R
++ * bits
++ *
++ * Discussion:
++ * See the discussion about handle state and Mac OS X above the
++ * function HGetState().
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * h:
++ * the handle to set the state for
++ *
++ * flags:
++ * the flags to set for the handle
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++HSetState(
++ Handle h,
++ SInt8 flags) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*****************************************************************************
++
++ Beginning in Mac OS X Tiger, BlockMove, BlockMoveData, BlockMoveUncached,
++ BlockMoveDataUncached, BlockZero, and BlockZeroUncached are inlined to a
++ direct call to the posix memmove or bzero functions; this allows the
++ compiler to optimize in some cases.
++
++ However, CarbonCore.framework still exports functions with these names,
++ both so old code which linked them there will run and to support
++ compilers which don't support inline function definitions.
++
++ To use the exported version of BlockMove, #define NO_BLOCKMOVE_INLINE
++ in your source code ( or prefix header file ) before including any headers
++ which would include MacMemory.h.
++
++*****************************************************************************/
++
++#if ! __LP64__
++ #if ! NO_BLOCKMOVE_INLINE && ( defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) )
++ static inline void BlockMove(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #elif ! NO_BLOCKMOVE_INLINE && defined( __GCC__ )
++ extern __inline__ void BlockMove(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #else
++ extern void BlockMove(const void *srcPtr,void *destPtr,Size byteCount);
++ #endif
++#endif // !__LP64__
++
++#if ! __LP64__
++ #if ! NO_BLOCKMOVE_INLINE && ( defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) )
++ static inline void BlockMoveData(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #elif ! NO_BLOCKMOVE_INLINE && defined( __GCC__ )
++ extern __inline__ void BlockMoveData(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #else
++ extern void BlockMoveData(const void *srcPtr,void *destPtr,Size byteCount);
++ #endif
++#endif // !__LP64__
++
++#if ! __LP64__
++ #if ! NO_BLOCKMOVE_INLINE && ( defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) )
++ static inline void BlockMoveUncached(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #elif ! NO_BLOCKMOVE_INLINE && defined( __GCC__ )
++ extern __inline__ void BlockMoveUncached(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #else
++ extern void BlockMoveUncached(const void *srcPtr,void *destPtr,Size byteCount);
++ #endif
++#endif // !__LP64__
++
++#if ! __LP64__
++ #if ! NO_BLOCKMOVE_INLINE && ( defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) )
++ static inline void BlockMoveDataUncached(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #elif ! NO_BLOCKMOVE_INLINE && defined( __GCC__ )
++ extern __inline__ void BlockMoveDataUncached(const void *srcPtr,void *destPtr,Size byteCount) { if ( byteCount > 0 ) memmove( destPtr, srcPtr, byteCount ); }
++ #else
++ extern void BlockMoveDataUncached(const void *srcPtr,void *destPtr,Size byteCount);
++ #endif
++#endif // !__LP64__
++
++#if ! __LP64__
++ #if ! NO_BLOCKMOVE_INLINE && ( defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) )
++ static inline void BlockZero(void *destPtr,Size byteCount) { if ( byteCount > 0 ) bzero( destPtr, byteCount ); }
++ #elif ! NO_BLOCKMOVE_INLINE && defined( __GCC__ )
++ extern __inline__ void BlockZero(void *destPtr,Size byteCount) { if ( byteCount > 0 ) bzero( destPtr, byteCount ); }
++ #else
++ extern void BlockZero(void *destPtr,Size byteCount);
++ #endif
++#endif // !__LP64__
++
++#if ! __LP64__
++ #if ! NO_BLOCKMOVE_INLINE && ( defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) )
++ static inline void BlockZeroUncached(void *destPtr,Size byteCount) { if ( byteCount > 0 ) bzero( destPtr, byteCount ); }
++ #elif ! NO_BLOCKMOVE_INLINE && defined( __GCC__ )
++ extern __inline__ void BlockZeroUncached(void *destPtr,Size byteCount) { if ( byteCount > 0 ) bzero( destPtr, byteCount ); }
++ #else
++ extern void BlockZeroUncached(void *destPtr,Size byteCount);
++ #endif
++#endif // !__LP64__
++/*
++ * HandToHand()
++ *
++ * Summary:
++ * Copies all of the data from one relocatable block to a new
++ * relocatable block.
++ *
++ * Discussion:
++ * The HandToHand function attempts to copy the information in the
++ * relocatable block to which theHndl is a handle; if successful,
++ * HandToHand sets theHndlto a handle pointing to the new
++ * relocatable block.
++ *
++ * If successful in creating a new relocatable block, the HandToHand
++ * function does not duplicate the properties of the original block.
++ * The new block is unlocked, unpurgeable, and not a resource. Call
++ * HLock or HPurge to adjust the properties of the new
++ * block.
++ *
++ * To copy only part of a relocatable block into a new relocatable
++ * block, use the PtrToHand function. Before calling PtrToHand, lock
++ * and dereference the handle pointing to the relocatable block you
++ * want to copy.
++ *
++ * Because HandToHand replaces its parameter with the new handle,
++ * you should retain the original parameter value somewhere else,
++ * otherwise you will not be able to access it.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * theHndl:
++ * a handle to the relocatable block whose data HandToHand will
++ * copy. On return, theHndl contains a handle to a new
++ * relocatable block whose data duplicates the original.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HandToHand(Handle * theHndl) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PtrToXHand()
++ *
++ * Summary:
++ * Copies data referenced by a pointer to an existing relocatable
++ * block.
++ *
++ * Discussion:
++ * The PtrToXHand function copies the specified number of bytes from
++ * the location specified by srcPtr to the handle specified by
++ * dstHndl.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * srcPtr:
++ * the address of the first byte to copy.
++ *
++ * dstHndl:
++ * a handle to an existing relocatable block.
++ *
++ * size:
++ * the number of bytes to copy.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PtrToXHand(
++ const void * srcPtr,
++ Handle dstHndl,
++ long size) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PtrToHand()
++ *
++ * Summary:
++ * Copies data referenced by a pointer to a new relocatable block.
++ *
++ * Discussion:
++ * If you dereference and lock a handle, the PtrToHand function can
++ * copy its data to a new handle. However, for copying data from one
++ * handle to another, the HandToHand function is more efficient.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * srcPtr:
++ * the address of the first byte to copy.
++ *
++ * dstHndl:
++ * a handle for which you have not yet allocated any memory. The
++ * PtrToHand function allocates memory for the handle and copies
++ * the specified number of bytes beginning at srcPtr into it. The
++ * dstHndl parameter is an output parameter that will hold the
++ * result. Its value on entry is ignored. If no error occurs, on
++ * exit it points to an unlocked, non-purgeable Handle of the
++ * requested size.
++ *
++ * size:
++ * the number of bytes to copy.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PtrToHand(
++ const void * srcPtr,
++ Handle * dstHndl,
++ long size) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * HandAndHand()
++ *
++ * Summary:
++ * Use the HandAndHand function to concatenate two relocatable
++ * blocks.
++ *
++ * Discussion:
++ * The HandAndHand function concatenates the information from the
++ * relocatable block to which aHndl is a handle onto the end of the
++ * relocatable block to which bHndl is a handle. The aHndl variable
++ * remains unchanged.
++ *
++ * WARNING
++ *
++ * The HandAndHand function dereferences the handle aHndl. You must
++ * call the HLock procedure to lock the block before calling
++ * HandAndHand. Afterward, you can call the HUnlock procedure to
++ * unlock it. Alternatively, you can save the block's original state
++ * by calling the HGetState function, lock the block by calling
++ * HLock, and then restore the original settings by calling
++ * HSetState.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * hand1:
++ * A handle to the first relocatable block, whose contents do not
++ * change but are concatenated to the end of the second
++ * relocatable block.
++ *
++ * hand2:
++ * A handle to the second relocatable block, whose size the Memory
++ * Manager expands so that it can concatenate the information from
++ * aHndl to the end of the contents of this block.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HandAndHand(
++ Handle hand1,
++ Handle hand2) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * PtrAndHand()
++ *
++ * Summary:
++ * Concatenates part or all of a memory block to the end of a
++ * relocatable block.
++ *
++ * Discussion:
++ * The PtrAndHand function takes the number of bytes specified by
++ * the size parameter, beginning at the location specified by ptr1,
++ * and concatenates them onto the end of the relocatable block to
++ * which hand2 is a handle. The contents of the source block remain
++ * unchanged.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Parameters:
++ *
++ * ptr1:
++ * a pointer to the beginning of the data that the Memory Manager
++ * is to concatenate onto the end of the relocatable block.
++ *
++ * hand2:
++ * a handle to the relocatable block, whose size the Memory
++ * Manager expands so that it can concatenate the information from
++ * ptr1 onto the end of this block.
++ *
++ * size:
++ * the number of bytes of the block referenced by ptr1 to copy.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++PtrAndHand(
++ const void * ptr1,
++ Handle hand2,
++ long size) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++#if !__LP64__
++/*
++ * MoreMasters() *** DEPRECATED ***
++ *
++ * Discussion:
++ * On Mac OS X and later, master pointers do not need to be
++ * pre-allocated.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++MoreMasters(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * MoreMasterPointers() *** DEPRECATED ***
++ *
++ * Discussion:
++ * On Mac OS X and later, master pointers do not need to be
++ * pre-allocated.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * inCount:
++ * the number of master pointers to preallocate
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern void
++MoreMasterPointers(UInt32 inCount) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* Temporary Memory routines renamed, but obsolete, in System 7.0 and later. */
++/*
++ * TempHLock() *** DEPRECATED ***
++ *
++ * Discussion:
++ * This function has been deprecated for many years; replace it with
++ * HLock()
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++TempHLock(
++ Handle h,
++ OSErr * resultCode) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * TempHUnlock() *** DEPRECATED ***
++ *
++ * Discussion:
++ * This function has been deprecated for many years; replace it with
++ * HUnlock()
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++TempHUnlock(
++ Handle h,
++ OSErr * resultCode) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * TempDisposeHandle() *** DEPRECATED ***
++ *
++ * Discussion:
++ * This function has been deprecated for many years; replace it with
++ * DisposeHandle()
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++TempDisposeHandle(
++ Handle h,
++ OSErr * resultCode) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5;
++
++
++/*
++ * TempTopMem() *** DEPRECATED ***
++ *
++ * Discussion:
++ * Mac OS X and later does not have a seperate temporary memory
++ * heap. This function returns NULL.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Ptr
++TempTopMem(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * HoldMemory() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Mac OS X has never supported HoldMemory. The functions in
++ * ./sys/mman.h may be useful for replacing usage of these
++ * functions, although Mac OS X does not allow the same level of
++ * control over whether pages are held in memory or resident as Mac
++ * OS 9.x did.
++ * If you define a macro __MAC_OS_X_MEMORY_MANAGER_CLEAN__ in your
++ * sources before you include MacMemory.h, then any calls to
++ * HoldMemory() in your program will essentially be removed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++HoldMemory(
++ void * address,
++ unsigned long count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * UnholdMemory() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Mac OS X has never supported MakeMemoryResident. See the comment
++ * above UnholdMemory for more information.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.1 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++UnholdMemory(
++ void * address,
++ unsigned long count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * MakeMemoryResident() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Mac OS X has never supported MakeMemoryResident. See the comment
++ * above UnholdMemory for more information.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * address:
++ * the address to make resident
++ *
++ * count:
++ * the count of pages to make make resident
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++MakeMemoryResident(
++ void * address,
++ unsigned long count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ReleaseMemoryData() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Mac OS X has never supported MakeMemoryResident. See the comment
++ * above UnholdMemory for more information.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * address:
++ * the address to make release
++ *
++ * count:
++ * the count of pages to make make release
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++ReleaseMemoryData(
++ void * address,
++ unsigned long count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * MakeMemoryNonResident() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Mac OS X has never supported MakeMemoryResident. See the comment
++ * above UnholdMemory for more information.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * address:
++ * the address to make non-resident
++ *
++ * count:
++ * the count of pages to make make non-resident
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++MakeMemoryNonResident(
++ void * address,
++ unsigned long count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * FlushMemory() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Mac OS X has never supported MakeMemoryResident. See the comment
++ * above UnholdMemory for more information.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * address:
++ * the address to flush
++ *
++ * count:
++ * the count of pages to make flush
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern OSErr
++FlushMemory(
++ void * address,
++ unsigned long count) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++/*
++ * GZSaveHnd() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X and always returns NULL.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Handle
++GZSaveHnd(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * TopMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X and always returns NULL.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Ptr
++TopMem(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ReserveMem() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++ReserveMem(Size cbNeeded) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PurgeSpace() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Discussion:
++ * On Mac OS X and later, heaps are never purged and therefore
++ * PurgeSpace will always return a large value for both the total
++ * space available and the largest block available. You can assume
++ * that any reasonable memory allocation will succeed.
++ *
++ * If you define a macro __MAC_OS_X_MEMORY_MANAGER_CLEAN__ in your
++ * sources before you include MacMemory.h, then any calls to
++ * PurgeSpace() in your program will essentially be removed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++PurgeSpace(
++ long * total,
++ long * contig) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PurgeSpaceTotal() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Discussion:
++ * On Mac OS X and later, heaps are never purged and therefore
++ * PurgeSpaceTotal will always return a large value. You can assume
++ * that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern long
++PurgeSpaceTotal(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * PurgeSpaceContiguous() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Discussion:
++ * On Mac OS X and later, heaps are never purged and therefore
++ * PurgeSpaceContiguous will always return a large value. You can
++ * assume that any reasonable memory allocation will succeed.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 8.5 and later
++ */
++extern long
++PurgeSpaceContiguous(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++/* Carbon routines to aid in debugging. */
++/*
++ * CheckAllHeaps() *** DEPRECATED ***
++ *
++ * Summary:
++ * Check all known heaps for validity. Deprecated on Mac OS X,
++ * since there really aren't heaps. Use IsHeapValid() if you really
++ * want this functionality.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern Boolean
++CheckAllHeaps(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++#endif /* !__LP64__ */
++
++/*
++ * IsHeapValid()
++ *
++ * Summary:
++ * Check if the heap is valid.
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.4
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern Boolean
++IsHeapValid(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/* It is invalid to pass a NULL or an empty Handle to IsHandleValid */
++/*
++ * IsHandleValid()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern Boolean
++IsHandleValid(Handle h) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/* It is invalid to pass a NULL Pointer to IsPointerValid */
++/*
++ * IsPointerValid()
++ *
++ * Mac OS X threading:
++ * Thread safe since version 10.3
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: not available
++ */
++extern Boolean
++IsPointerValid(Ptr p) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++#if !__LP64__
++#if OLDROUTINENAMES
++#define ApplicZone() ApplicationZone()
++#define MFTempNewHandle(logicalSize, resultCode) TempNewHandle(logicalSize, resultCode)
++#define MFMaxMem(grow) TempMaxMem(grow)
++#define MFFreeMem() TempFreeMem()
++#define MFTempHLock(h, resultCode) TempHLock(h, resultCode)
++#define MFTempHUnlock(h, resultCode) TempHUnlock(h, resultCode)
++#define MFTempDisposHandle(h, resultCode) TempDisposeHandle(h, resultCode)
++#define MFTopMem() TempTopMem()
++#define ResrvMem(cbNeeded) ReserveMem(cbNeeded)
++#define DisposPtr(p) DisposePtr(p)
++#define DisposHandle(h) DisposeHandle(h)
++#define ReallocHandle(h, byteCount) ReallocateHandle(h, byteCount)
++#endif /* OLDROUTINENAMES */
++
++#endif /* !__LP64__ */
++
++#if !__LP64__
++/*
++ * LMGetSysZone() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern THz
++LMGetSysZone(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * LMSetSysZone() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++LMSetSysZone(THz value) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * LMGetApplZone() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern THz
++LMGetApplZone(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * LMSetApplZone() *** DEPRECATED ***
++ *
++ * Summary:
++ * This function is deprecated on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++LMSetApplZone(THz value) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++#endif /* !__LP64__ */
++
++#if __MAC_OS_X_MEMORY_MANAGER_CLEAN__
++
++#ifdef __cplusplus
++ inline void HLock(Handle ) { LMSetMemErr(0); }
++ inline void HLockHi(Handle ) { LMSetMemErr(0); }
++ inline void HUnlock(Handle ) { LMSetMemErr(0); }
++ inline void HSetRBit(Handle ) { LMSetMemErr(0); }
++ inline void HClrRBit(Handle ) { LMSetMemErr(0); }
++ inline SInt8 HGetState(Handle ) { LMSetMemErr(0); return 0; }
++ inline void HSetState(Handle , SInt8 ) { LMSetMemErr(0); }
++#if !__LP64__
++ inline void HPurge(Handle ) { LMSetMemErr(0); }
++ inline void HNoPurge(Handle ) { LMSetMemErr(0); }
++ inline void MoveHHi(Handle ) { LMSetMemErr(0); }
++ inline void TempHLock(Handle , OSErr *resultCode) { LMSetMemErr(0), *resultCode = 0; }
++ inline void TempHUnlock(Handle , OSErr *resultCode) { LMSetMemErr(0), *resultCode = 0; }
++
++ inline OSErr HoldMemory(void *, unsigned long ) { return noErr; }
++ inline OSErr UnholdMemory(void *, unsigned long ) { return noErr; }
++ inline OSErr MakeMemoryResident(void *, unsigned long ) { return noErr; }
++ inline OSErr ReleaseMemoryData(void *, unsigned long ) { return noErr; }
++ inline OSErr MakeMemoryNonResident(void *, unsigned long ) { return noErr; }
++ inline OSErr FlushMemory(void *, unsigned long ) { return noErr; }
++ inline void ReserveMem(Size ) { LMSetMemErr(0); }
++ inline void PurgeSpace(long *, long *) { LMSetMemErr(0); }
++ inline long PurgeSpaceTotal() { LMSetMemErr(0); }
++ inline long PurgeSpaceContiguous() { LMSetMemErr(0); }
++#endif
++
++
++#else
++ #define HLock(h) { LMSetMemErr(0); }
++ #define HLockHi(h) { LMSetMemErr(0); }
++ #define HUnlock(h) { LMSetMemErr(0); }
++ #define HSetRBit(h) { LMSetMemErr(0); }
++ #define HClrRBit(h) { LMSetMemErr(0); }
++ #define HGetState(h) ( LMSetMemErr(0), 0 )
++ #define HSetState(h, flags) { LMSetMemErr(0); }
++#if !__LP64__
++ #define HPurge(h) { LMSetMemErr(0); }
++ #define HNoPurge(h) { LMSetMemErr(0); }
++ #define MoveHHi(h) { LMSetMemErr(0); }
++ #define TempHLock(h, resultCode) { LMSetMemErr(0) ; *resultCode = 0; }
++ #define TempHUnlock(h, resultCode) { LMSetMemErr(0) ; *resultCode = 0; }
++
++ #define HoldMemory(address, count) ( address, count, noErr)
++ #define UnholdMemory(address, count) ( address, count, noErr)
++ #define MakeMemoryResident(address, count) ( address, count, noErr)
++ #define ReleaseMemoryData(address, count) ( address, count, noErr)
++ #define MakeMemoryNonResident(address, count) ( address, count, noErr)
++ #define FlushMemory(address, count) ( address, count, noErr)
++
++ #define ReserveMem(cbNeeded) { LMSetMemErr(0) }
++ #define PurgeSpace(total, contig) { LMSetMemErr(0); }
++ #define PurgeSpaceTotal() ( LMSetMemErr(0), 0 )
++ #define PurgeSpaceContiguous() ( LMSetMemErr(0), 0 )
++#endif
++#endif
++
++#endif /* __MAC_OS_X_MEMORY_MANAGER_CLEAN__ */
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __MACMEMORY__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/MacTypes.h ./MacTypes.h
+--- ../CarbonHeaders-18.1.orig/MacTypes.h 2009-09-29 13:46:25.000000000 -0700
++++ ./MacTypes.h 2009-09-29 14:01:07.000000000 -0700
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1985-2008 by Apple Inc.. All rights reserved.
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+@@ -20,14 +20,15 @@
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+-
+ /*
+- File: MacTypes.h
++ File: CarbonCore/MacTypes.h
+
+ Contains: Basic Macintosh data types.
+
+- Version: CarbonCore-769~1
+-
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1985-2008 by Apple Computer, Inc., all rights reserved.
++
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+@@ -38,7 +39,7 @@
+ #define __MACTYPES__
+
+ #ifndef __CONDITIONALMACROS__
+-#include <ConditionalMacros.h>
++#include <CarbonCore/ConditionalMacros.h>
+ #endif
+
+ #include <stdbool.h>
+diff -Nru ../CarbonHeaders-18.1.orig/Makefile ./Makefile
+--- ../CarbonHeaders-18.1.orig/Makefile 2009-09-29 13:46:25.000000000 -0700
++++ ./Makefile 2009-09-29 13:57:39.000000000 -0700
+@@ -4,7 +4,7 @@
+ CONFIG_IPHONE = 0
+ CONFIG_IPHONE_SIMULATOR= 0
+ KERNEL_SYLINKS = install_kernel_symlinks
+-DO_CARBON_CORE_FILES =
++DO_CARBON_CORE_FILES = install_carbon_core_headers
+
+ SRCROOT ?= $(shell pwd)
+ OBJROOT ?= $(SRCROOT)/obj
+@@ -16,7 +16,14 @@
+ TargetConditionals.h AssertMacros.h
+
+ # These files in SRCROOT get copied into /usr/include/ only for the phone builds
+-CCFILES=ConditionalMacros.h Endian.h MacErrors.h MacTypes.h
++# for open source builds, put headers in CarbonCore sub-framework
++CCFILES=Aliases.h ConditionalMacros.h DateTimeUtils.h Endian.h Files.h Finder.h MacErrors.h MacMemory.h MacTypes.h MixedMode.h OSUtils.h TextCommon.h UTCUtils.h
++CCDEST=/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers
++CCLINK=/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Headers
++CSDEST=/System/Library/Frameworks/CoreServices.framework/Versions/A/Headers
++CS_FRAMEWORKS=/System/Library/Frameworks/CoreServices.framework/Frameworks
++CS_HEADERS=/System/Library/Frameworks/CoreServices.framework/Headers
++
+ DEST=$(INSTALL_PREFIX)/usr/include
+
+
+@@ -33,10 +40,14 @@
+ done
+
+ install_carbon_core_headers:
+- mkdir -p $(DSTROOT)/$(DEST)
++ mkdir -p $(DSTROOT)/$(CCDEST)
++ mkdir -p $(DSTROOT)/$(CSDEST)
++ ln -s Versions/A/Headers $(DSTROOT)/$(CCLINK)
++ ln -s Versions/A/Frameworks $(DSTROOT)/$(CS_FRAMEWORKS)
++ ln -s Versions/A/Headers $(DSTROOT)/$(CS_HEADERS)
+ for i in $(CCFILES); do \
+- cp $(SRCROOT)/$$i $(DSTROOT)/$(DEST)/$$i; \
+- chmod 644 $(DSTROOT)/$(DEST)/$$i; \
++ cp $(SRCROOT)/$$i $(DSTROOT)/$(CCDEST)/$$i; \
++ chmod 644 $(DSTROOT)/$(CCDEST)/$$i; \
+ done
+
+ install_kernel_symlinks:
+diff -Nru ../CarbonHeaders-18.1.orig/MixedMode.h ./MixedMode.h
+--- ../CarbonHeaders-18.1.orig/MixedMode.h 1969-12-31 16:00:00.000000000 -0800
++++ ./MixedMode.h 2009-09-29 14:01:17.000000000 -0700
+@@ -0,0 +1,558 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++
++/*
++ File: CarbonCore/MixedMode.h
++
++ Contains: Mixed Mode Manager Interfaces.
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1992-2008 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 __MIXEDMODE__
++#define __MIXEDMODE__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#pragma pack(push, 2)
++
++/*
++ ===========================================================================
++
++ Notes on Mixed Mode and Mac OS X
++
++ Mac OS X doesn't have mixed mode, nor the Mixed Mode Manager, because
++ everything running is PowerPC code. Therefore, there is little need for
++ anything in this file unless the code still needs to run on Mac OS 9.x
++ CarbonLib, and on Mac OS X.
++
++ ===========================================================================
++*/
++/* Mixed Mode constants */
++/* Current Routine Descriptor Version */
++enum {
++ kRoutineDescriptorVersion = 7
++};
++
++/* MixedModeMagic Magic Cookie/Trap number */
++enum {
++ _MixedModeMagic = 0xAAFE
++};
++
++/* MixedModeState Version for CFM68K Mixed Mode */
++enum {
++ kCurrentMixedModeStateRecord = 1
++};
++
++/* Calling Conventions */
++typedef unsigned short CallingConventionType;
++enum {
++ kPascalStackBased = 0,
++ kCStackBased = 1,
++ kRegisterBased = 2,
++ kD0DispatchedPascalStackBased = 8,
++ kD1DispatchedPascalStackBased = 12,
++ kD0DispatchedCStackBased = 9,
++ kStackDispatchedPascalStackBased = 14,
++ kThinkCStackBased = 5
++};
++
++/* ISA Types */
++typedef SInt8 ISAType;
++enum {
++ kM68kISA = 0,
++ kPowerPCISA = 1
++};
++
++enum {
++ kX86ISA = 2
++};
++
++/* RTA Types */
++typedef SInt8 RTAType;
++enum {
++ kOld68kRTA = 0 << 4,
++ kPowerPCRTA = 0 << 4,
++ kCFM68kRTA = 1 << 4
++};
++
++enum {
++ kX86RTA = 2 << 4
++};
++
++
++#if TARGET_OS_MAC
++ #if TARGET_CPU_PPC
++ #define GetCurrentISA() ((ISAType) kPowerPCISA)
++ #define GetCurrentRTA() ((RTAType) kPowerPCRTA)
++
++ #elif TARGET_CPU_X86
++ #define GetCurrentISA() ((ISAType) kX86ISA)
++ #define GetCurrentRTA() ((RTAType) kX86RTA)
++
++ #endif
++ #define GetCurrentArchitecture() (GetCurrentISA() | GetCurrentRTA())
++#else
++ #define GetCurrentArchitecture() 0
++#endif
++
++/* Constants for specifing 68k registers */
++enum {
++ kRegisterD0 = 0,
++ kRegisterD1 = 1,
++ kRegisterD2 = 2,
++ kRegisterD3 = 3,
++ kRegisterD4 = 8,
++ kRegisterD5 = 9,
++ kRegisterD6 = 10,
++ kRegisterD7 = 11,
++ kRegisterA0 = 4,
++ kRegisterA1 = 5,
++ kRegisterA2 = 6,
++ kRegisterA3 = 7,
++ kRegisterA4 = 12,
++ kRegisterA5 = 13,
++ kRegisterA6 = 14, /* A7 is the same as the PowerPC SP */
++ kCCRegisterCBit = 16,
++ kCCRegisterVBit = 17,
++ kCCRegisterZBit = 18,
++ kCCRegisterNBit = 19,
++ kCCRegisterXBit = 20
++};
++
++typedef unsigned short registerSelectorType;
++/* SizeCodes we use everywhere */
++enum {
++ kNoByteCode = 0,
++ kOneByteCode = 1,
++ kTwoByteCode = 2,
++ kFourByteCode = 3
++};
++
++/* Mixed Mode Routine Records */
++typedef unsigned long ProcInfoType;
++/* Routine Flag Bits */
++typedef unsigned short RoutineFlagsType;
++enum {
++ kProcDescriptorIsAbsolute = 0x00,
++ kProcDescriptorIsRelative = 0x01
++};
++
++enum {
++ kFragmentIsPrepared = 0x00,
++ kFragmentNeedsPreparing = 0x02
++};
++
++enum {
++ kUseCurrentISA = 0x00,
++ kUseNativeISA = 0x04
++};
++
++enum {
++ kPassSelector = 0x00,
++ kDontPassSelector = 0x08
++};
++
++enum {
++ kRoutineIsNotDispatchedDefaultRoutine = 0x00,
++ kRoutineIsDispatchedDefaultRoutine = 0x10
++};
++
++enum {
++ kProcDescriptorIsProcPtr = 0x00,
++ kProcDescriptorIsIndex = 0x20
++};
++
++struct RoutineRecord {
++ ProcInfoType procInfo; /* calling conventions */
++ SInt8 reserved1; /* Must be 0 */
++ ISAType ISA; /* Instruction Set Architecture */
++ RoutineFlagsType routineFlags; /* Flags for each routine */
++ ProcPtr procDescriptor; /* Where is the thing we\xD5re calling? */
++ UInt32 reserved2; /* Must be 0 */
++ UInt32 selector; /* For dispatched routines, the selector */
++};
++typedef struct RoutineRecord RoutineRecord;
++typedef RoutineRecord * RoutineRecordPtr;
++typedef RoutineRecordPtr * RoutineRecordHandle;
++/* Mixed Mode Routine Descriptors */
++/* Definitions of the Routine Descriptor Flag Bits */
++typedef UInt8 RDFlagsType;
++enum {
++ kSelectorsAreNotIndexable = 0x00,
++ kSelectorsAreIndexable = 0x01
++};
++
++/* Routine Descriptor Structure */
++struct RoutineDescriptor {
++ UInt16 goMixedModeTrap; /* Our A-Trap */
++ SInt8 version; /* Current Routine Descriptor version */
++ RDFlagsType routineDescriptorFlags; /* Routine Descriptor Flags */
++ UInt32 reserved1; /* Unused, must be zero */
++ UInt8 reserved2; /* Unused, must be zero */
++ UInt8 selectorInfo; /* If a dispatched routine, calling convention, else 0 */
++ UInt16 routineCount; /* Number of routines in this RD */
++ RoutineRecord routineRecords[1]; /* The individual routines */
++};
++typedef struct RoutineDescriptor RoutineDescriptor;
++typedef RoutineDescriptor * RoutineDescriptorPtr;
++typedef RoutineDescriptorPtr * RoutineDescriptorHandle;
++/* 68K MixedModeStateRecord */
++struct MixedModeStateRecord {
++ UInt32 state1;
++ UInt32 state2;
++ UInt32 state3;
++ UInt32 state4;
++};
++typedef struct MixedModeStateRecord MixedModeStateRecord;
++/*
++ * NewRoutineDescriptor() *** DEPRECATED ***
++ *
++ * Discussion:
++ * This function is deprecated on Mac OS X and in CarbonLib because
++ * routine descriptors existed to allow 68k code and PowerPC code to
++ * call each other and get parameter marshalling and other OS
++ * services. Mac OS X is entirely PowerPC native, and does not
++ * require the use of mixed mode.
++ * You should remove any calls to NewRoutineDescriptor() from your
++ * sources, and replace them with theProc parameter itself.
++ *
++ * Availability:
++ * Mac OS X: not available but deprecated in 10.4
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++/*
++ * DisposeRoutineDescriptor() *** DEPRECATED ***
++ *
++ * Discussion:
++ * DisposeRoutineDescriptor() is deprecated on Mac OS X.
++ * RoutineDescriptors are no longer used.
++ * You should delete any calls to DisposeRoutineDescriptor() from
++ * your sources.
++ *
++ * Availability:
++ * Mac OS X: not available but deprecated in 10.4
++ * CarbonLib: not available
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++
++
++
++ #define NewRoutineDescriptor(theProc, procInfo, isa) ((UniversalProcPtr) theProc)
++ #define DisposeRoutineDescriptor(upp)
++
++
++
++/* Mixed Mode ProcInfos */
++enum {
++ /* Calling Convention Offsets */
++ kCallingConventionWidth = 4,
++ kCallingConventionPhase = 0,
++ kCallingConventionMask = 0x0F, /* Result Offsets */
++ kResultSizeWidth = 2,
++ kResultSizePhase = kCallingConventionWidth,
++ kResultSizeMask = 0x30, /* Parameter offsets & widths */
++ kStackParameterWidth = 2,
++ kStackParameterPhase = (kCallingConventionWidth + kResultSizeWidth),
++ kStackParameterMask = (int)0xFFFFFFC0, /* Register Result Location offsets & widths */
++ kRegisterResultLocationWidth = 5,
++ kRegisterResultLocationPhase = (kCallingConventionWidth + kResultSizeWidth), /* Register Parameter offsets & widths */
++ kRegisterParameterWidth = 5,
++ kRegisterParameterPhase = (kCallingConventionWidth + kResultSizeWidth + kRegisterResultLocationWidth),
++ kRegisterParameterMask = 0x7FFFF800,
++ kRegisterParameterSizePhase = 0,
++ kRegisterParameterSizeWidth = 2,
++ kRegisterParameterWhichPhase = kRegisterParameterSizeWidth,
++ kRegisterParameterWhichWidth = 3, /* Dispatched Stack Routine Selector offsets & widths */
++ kDispatchedSelectorSizeWidth = 2,
++ kDispatchedSelectorSizePhase = (kCallingConventionWidth + kResultSizeWidth), /* Dispatched Stack Routine Parameter offsets */
++ kDispatchedParameterPhase = (kCallingConventionWidth + kResultSizeWidth + kDispatchedSelectorSizeWidth), /* Special Case offsets & widths */
++ kSpecialCaseSelectorWidth = 6,
++ kSpecialCaseSelectorPhase = kCallingConventionWidth,
++ kSpecialCaseSelectorMask = 0x03F0
++};
++
++enum {
++ kSpecialCase = 0x000F /* (CallingConventionType) */
++};
++
++enum {
++ /* all of the special cases enumerated. The selector field is 6 bits wide */
++ kSpecialCaseHighHook = 0,
++ kSpecialCaseCaretHook = 0, /* same as kSpecialCaseHighHook */
++ kSpecialCaseEOLHook = 1,
++ kSpecialCaseWidthHook = 2,
++ kSpecialCaseTextWidthHook = 2, /* same as kSpecialCaseWidthHook */
++ kSpecialCaseNWidthHook = 3,
++ kSpecialCaseDrawHook = 4,
++ kSpecialCaseHitTestHook = 5,
++ kSpecialCaseTEFindWord = 6,
++ kSpecialCaseProtocolHandler = 7,
++ kSpecialCaseSocketListener = 8,
++ kSpecialCaseTERecalc = 9,
++ kSpecialCaseTEDoText = 10,
++ kSpecialCaseGNEFilterProc = 11,
++ kSpecialCaseMBarHook = 12
++};
++
++
++/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
++ *
++ * Macros for building ProcInfos. Examples:
++ *
++ *
++ * uppModalFilterProcInfo = kPascalStackBased
++ * | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
++ * | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogRef)))
++ * | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*)))
++ * | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*))),
++ *
++ * uppDeskHookProcInfo = kRegisterBased
++ * | REGISTER_ROUTINE_PARAMETER(1, kRegisterD0, SIZE_CODE(sizeof(Boolean)))
++ * | REGISTER_ROUTINE_PARAMETER(2, kRegisterA0, SIZE_CODE(sizeof(EventRecord*)))
++ *
++ * uppGXSpoolResourceProcInfo = kCStackBased
++ * | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
++ * | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(gxSpoolFile)))
++ * | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle)))
++ * | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ResType)))
++ * | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
++ *
++ * uppTEFindWordProcInfo = SPECIAL_CASE_PROCINFO( 6 ),
++ *
++ */
++
++
++/* * * * * * * * * * * * * *
++ * SIZE_CODE - Return the size code for an object, given its size in bytes.
++ * size - size of an object in bytes
++ */
++#define SIZE_CODE(size) \
++ (((size) == 4) ? kFourByteCode : (((size) == 2) ? kTwoByteCode : (((size) == 1) ? kOneByteCode : 0)))
++
++
++/* * * * * * * * * * * * * *
++ * RESULT_SIZE - Return the result field of a ProcInfo, given the return object\xD5s size.
++ * This is the same for all ProcInfos
++ * sizeCode - size code
++ */
++#define RESULT_SIZE(sizeCode) \
++ ((ProcInfoType)(sizeCode) << kResultSizePhase)
++
++
++/* * * * * * * * * * * * * *
++ * STACK_ROUTINE_PARAMETER - Return a parameter field of a ProcInfo, for a simple,
++ * non-dispatched, stack based routine.
++ * whichParam - which parameter
++ * sizeCode - size code
++ */
++#define STACK_ROUTINE_PARAMETER(whichParam, sizeCode) \
++ ((ProcInfoType)(sizeCode) << (kStackParameterPhase + (((whichParam) - 1) * kStackParameterWidth)))
++
++
++/* * * * * * * * * * * * * *
++ * DISPATCHED_STACK_ROUTINE_PARAMETER - Return a parameter field of a ProcInfo, for
++ * a dispatched, stack based routine. The same
++ * macro is used regardless of the type of
++ * dispatching.
++ * whichParam - which parameter
++ * sizeCode - size code
++ */
++#define DISPATCHED_STACK_ROUTINE_PARAMETER(whichParam, sizeCode) \
++ ((ProcInfoType)(sizeCode) << (kDispatchedParameterPhase + (((whichParam) - 1) * kStackParameterWidth)))
++
++
++/* * * * * * * * * * * * * *
++ * DISPATCHED_STACK_ROUTINE_SELECTOR_SIZE - Return a the selector size field of a ProcInfo
++ * for a dispatched, stack based routine. The
++ * same macro is used regardless of the type of
++ * dispatching.
++ * sizeCode - size code
++ */
++#define DISPATCHED_STACK_ROUTINE_SELECTOR_SIZE(sizeCode) \
++ ((ProcInfoType)(sizeCode) << kDispatchedSelectorSizePhase)
++
++
++/* * * * * * * * * * * * * *
++ * REGISTER_RESULT_LOCATION - Return the Result Location field of a ProcInfo,
++ * given the location.
++ * whichReg - which register
++ */
++#define REGISTER_RESULT_LOCATION(whichReg) \
++ ((ProcInfoType)(whichReg) << kRegisterResultLocationPhase)
++
++
++/* * * * * * * * * * * * * *
++ * REGISTER_ROUTINE_PARAMETER - Return a parameter field of a ProcInfo for a
++ * register based routine.
++ */
++#define REGISTER_ROUTINE_PARAMETER(whichParam, whichReg, sizeCode) \
++ ((((ProcInfoType)(sizeCode) << kRegisterParameterSizePhase) | ((ProcInfoType)(whichReg) << kRegisterParameterWhichPhase)) << \
++ (kRegisterParameterPhase + (((whichParam) - 1) * kRegisterParameterWidth)))
++
++
++/* * * * * * * * * * * * * *
++ *
++ * SPECIAL_CASE_PROCINFO - Returns the procInfo constant for the following special cases:
++ *
++ * High Hook & Caret Hook - (see I-379)
++ * C calling conventions, Rect on stack, pointer in A3, no return value
++ * EOL Hook - (see VI-15-26)
++ * Register-based; inputs in D0, A3, A4;
++ * output is Z flag of status register
++ * Width Hook - (see VI-15-27)
++ * Register-based; inputs in D0, D1, A0, A3, A4; output in D1
++ * NWidth Hook - (see VI-15-27)
++ * Register-based; inputs in D0, D1, D2, A0, A2, A3, A4; output in D1
++ * TextWidthHook - (see VI-15-28)
++ * Register-based; inputs in D0, D1, A0, A3, A4; output in D1
++ * DrawHook - (see VI-15-28)
++ * Register-based; inputs in D0, D1, A0, A3, A4; no output
++ * HitTestHook - (See VI-15-29)
++ * Register-based; inputs in D0, D1, D2, A0, A3, A4; outputs in D0, D1, D2
++ * FindWord - (see VI-15-30)
++ * Register-based; inputs in D0, D2, A3, A4; outputs in D0, D1
++ * ADBRoutines - (see V-371)
++ * Register-based; inputs in A0, A1, A2, D0; no outputs
++ * ProtocolHandler - (see II-326)
++ * Register-based; inputs in A0, A1, A2, A3, A4, D1.w; output in Z
++ * SocketListener - (see II-329)
++ * Register-based; inputs in A0, A1, A2, A3, A4, D0.b, D1.w; output in Z
++ * Reclac - (see I-391)
++ * Register-based; inputs in A3, D7; outputs in D2, D3, D4
++ * DoText - (see I-391)
++ * Register-based; inputs in A3, D3, D4, D7; outputs in A0, D0
++ * GNEFilterProc - (see tech note 85)
++ * Register & Stack Based; inputs in A1, D0 & on the stack; outputs on the stack
++ * MenuBarHook - (see I-356)
++ * Register & Stack Based; input on the stack; output in D0
++*/
++#define SPECIAL_CASE_PROCINFO(specialCaseCode) \
++ (kSpecialCase | ((ProcInfoType)(specialCaseCode) << 4))
++
++
++/* * * * * * * * * * * * * * *
++ * STACK_UPP_TYPE - used in typedefs to create \xC5UPP type
++ * REGISTER_UPP_TYPE - used in typedefs to create \xC5UPP type
++ * TVECTOR_UPP_TYPE - used in typedefs to create \xC5UPP type
++ *
++ * Example:
++ *
++ * typedef STACK_UPP_TYPE(ModalFilterProcPtr) ModalFilterUPP;
++ * typedef REGISTER_UPP_TYPE(IOCompletionProcPtr) IOCompletionUPP;
++ *
++ */
++#if TARGET_OS_MAC && TARGET_RT_MAC_CFM
++ /* PowerPC and CFM68K runtime */
++ #if OPAQUE_UPP_TYPES
++ #define STACK_UPP_TYPE(name) struct Opaque##name##*
++ #define REGISTER_UPP_TYPE(name) struct Opaque##name##*
++ #define TVECTOR_UPP_TYPE(name) struct Opaque##name##*
++ #else
++ #define STACK_UPP_TYPE(name) UniversalProcPtr
++ #define REGISTER_UPP_TYPE(name) UniversalProcPtr
++ #define TVECTOR_UPP_TYPE(name) name
++ #endif
++#elif TARGET_OS_MAC && TARGET_RT_MAC_MACHO
++ /* Mac OS X runtime */
++ #define STACK_UPP_TYPE(name) name
++ #define REGISTER_UPP_TYPE(name) name
++ #define TVECTOR_UPP_TYPE(name) name
++#else
++ /* other runtimes */
++ #define STACK_UPP_TYPE(name) name
++ #define REGISTER_UPP_TYPE(name) name
++ #define TVECTOR_UPP_TYPE(name) name
++#endif
++
++
++/* * * * * * * * * * * * * * *
++ * CALL_\xC5_PARAMETER_UPP - used in Call\xC5Proc macros
++ *
++ * Example:
++ *
++ * #define CallIOCompletionProc(userRoutine, paramBlock) \
++ * CALL_TWO_PARAMETER_UPP((userRoutine), uppIOCompletionProcInfo, (paramBlock))
++ *
++ */
++#if TARGET_OS_MAC && TARGET_RT_MAC_CFM
++ #define CALL_ZERO_PARAMETER_UPP( upp, procInfo) CallUniversalProc(upp, procInfo)
++ #define CALL_ONE_PARAMETER_UPP( upp, procInfo, p1) CallUniversalProc(upp, procInfo, (p1))
++ #define CALL_TWO_PARAMETER_UPP( upp, procInfo, p1, p2) CallUniversalProc(upp, procInfo, (p1), (p2))
++ #define CALL_THREE_PARAMETER_UPP( upp, procInfo, p1, p2, p3) CallUniversalProc(upp, procInfo, (p1), (p2), (p3))
++ #define CALL_FOUR_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4))
++ #define CALL_FIVE_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5))
++ #define CALL_SIX_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6))
++ #define CALL_SEVEN_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7))
++ #define CALL_EIGHT_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8))
++ #define CALL_NINE_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9))
++ #define CALL_TEN_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10))
++ #define CALL_ELEVEN_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10), (p11))
++ #define CALL_TWELVE_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10), (p11), (p12))
++ #define CALL_THIRTEEN_PARAMETER_UPP(upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) CallUniversalProc(upp, procInfo, (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10), (p11), (p12), (p13))
++#else
++ #define CALL_ZERO_PARAMETER_UPP( upp, procInfo) (*(upp))()
++ #define CALL_ONE_PARAMETER_UPP( upp, procInfo, p1) (*(upp))((p1))
++ #define CALL_TWO_PARAMETER_UPP( upp, procInfo, p1, p2) (*(upp))((p1), (p2))
++ #define CALL_THREE_PARAMETER_UPP( upp, procInfo, p1, p2, p3) (*(upp))((p1), (p2), (p3))
++ #define CALL_FOUR_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4) (*(upp))((p1), (p2), (p3), (p4))
++ #define CALL_FIVE_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5) (*(upp))((p1), (p2), (p3), (p4), (p5))
++ #define CALL_SIX_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6))
++ #define CALL_SEVEN_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7))
++ #define CALL_EIGHT_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8))
++ #define CALL_NINE_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9))
++ #define CALL_TEN_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10))
++ #define CALL_ELEVEN_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10), (p11))
++ #define CALL_TWELVE_PARAMETER_UPP( upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10), (p11), (p12))
++ #define CALL_THIRTEEN_PARAMETER_UPP(upp, procInfo, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) (*(upp))((p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10), (p11), (p12), (p13))
++#endif
++
++
++
++
++
++#pragma pack(pop)
++
++
++#endif /* __MIXEDMODE__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/OSUtils.h ./OSUtils.h
+--- ../CarbonHeaders-18.1.orig/OSUtils.h 1969-12-31 16:00:00.000000000 -0800
++++ ./OSUtils.h 2009-09-29 14:01:24.000000000 -0700
+@@ -0,0 +1,814 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/OSUtils.h
++
++ Contains: OS Utilities Interfaces.
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1985-2008 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 __OSUTILS__
++#define __OSUTILS__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++#ifndef __MIXEDMODE__
++#include <CarbonCore/MixedMode.h>
++#endif
++
++/* HandToHand and other memory utilties were moved to MacMemory.h */
++#ifndef __MACMEMORY__
++#include <CarbonCore/MacMemory.h>
++#endif
++
++/* Date and Time utilties were moved to DateTimeUtils.h */
++#ifndef __DATETIMEUTILS__
++#include <CarbonCore/DateTimeUtils.h>
++#endif
++
++#ifndef __CFSTRING__
++#include <CoreFoundation/CFString.h>
++#endif
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++enum {
++ /* result types for RelString Call */
++ sortsBefore = -1, /*first string < second string*/
++ sortsEqual = 0, /*first string = second string*/
++ sortsAfter = 1 /*first string > second string*/
++};
++
++enum {
++ dummyType = 0,
++ vType = 1,
++ ioQType = 2,
++ drvQType = 3,
++ evType = 4,
++ fsQType = 5,
++ sIQType = 6,
++ dtQType = 7,
++ nmType = 8
++};
++
++typedef SignedByte QTypes;
++struct QElem {
++ struct QElem * qLink;
++ short qType;
++ short qData[1];
++};
++typedef struct QElem QElem;
++typedef QElem * QElemPtr;
++struct QHdr {
++ volatile short qFlags;
++ volatile QElemPtr qHead;
++ volatile QElemPtr qTail;
++};
++typedef struct QHdr QHdr;
++typedef QHdr * QHdrPtr;
++/*
++ In order for MachineLocation to be endian-safe, a new member
++ has been added to the 'u' union in the structure. You are
++ encouraged to use the new member instead of the old one.
++
++ If your code looked like this:
++
++ MachineLocation.u.dlsDelta = isDLS? 0x80: 0x00;
++
++ you should change it to this:
++
++ MachineLocation.u.dls.Delta = isDLS? 0x80: 0x00;
++
++ to be endian safe. The gmtDelta remains the same; the low 24-bits
++ are used. Remember that order of assignment DOES matter:
++
++ This will overwrite results:
++
++ MachineLocation.u.dls.Delta = 0xAA; // u = 0xAAGGGGGG; G=Garbage
++ MachineLocation.u.gmtDelta = 0xBBBBBB; // u = 0x00BBBBBB;
++
++ when in fact reversing the assignment would have preserved the values:
++
++ MachineLocation.u.gmtDelta = 0xBBBBBB; // u = 0x00BBBBBB;
++ MachineLocation.u.dls.Delta = 0xAA; // u = 0xAABBBBBB;
++
++ NOTE: The information regarding dlsDelta in Inside Mac is INCORRECT.
++ It's always 0x80 for daylight-saving time or 0x00 for standard time.
++*/
++struct MachineLocation {
++ Fract latitude;
++ Fract longitude;
++ union {
++ #if TARGET_RT_BIG_ENDIAN
++ SInt8 dlsDelta;
++ #endif
++ long gmtDelta; /* use low 24-bits only */
++ struct {
++ #if TARGET_RT_LITTLE_ENDIAN
++ SInt8 pad[3];
++ #endif
++ SInt8 Delta; /* signed byte; daylight savings delta */
++ } dls;
++ } u;
++};
++typedef struct MachineLocation MachineLocation;
++/*
++ * IsMetric()
++ *
++ * Summary:
++ * Verifies whether the current script system is using the metric
++ * system or the English system of measurement.
++ *
++ * Discussion:
++ * The IsMetric function examines the metricSys field of the
++ * numeric-format resource (resource type 'itl0') to determine if
++ * the current script is using the metric system. A value of 255 in
++ * the metricSys field indicates that the metric system
++ * (centimeters, kilometers, milligrams, degrees Celsius, and so on)
++ * is being used. A value of 0 in the metricSys field indicates that
++ * the English system of measurement (inches, miles, ounces, degrees
++ * Fahrenheit, and so on) is used.
++ * If you want to use units of measurement different from that of
++ * the current script, you need to override the value of the
++ * metricSys field in the current numeric-format resource. You can
++ * do this by using your own version of the numeric-format resource
++ * instead of the current script system\xD5s default international
++ * resource.
++ * The IsMetric function is the same as the IUMetric function, which
++ * was previously available with the International Utilities Package.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Result:
++ * TRUE if the metric system is being used; FALSE if the English
++ * system is being used.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern Boolean
++IsMetric(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * Delay()
++ *
++ * Summary:
++ * Delays execture for the specified amount of time.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Parameters:
++ *
++ * numTicks:
++ * the number of ticks to delay for
++ *
++ * finalTicks:
++ * on return, if not NULL, will contain the value of TickCount()
++ * at the end of the delay period
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++Delay(
++ unsigned long numTicks,
++ unsigned long * finalTicks) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * Enqueue()
++ *
++ * Summary:
++ * Atomically adds a queue element to the given queue
++ *
++ * Discussion:
++ * A queue ( represented by a QHdrPtr ) is a singly linked list of
++ * elements. Enqueue inserts the given element into the queue in a
++ * multi-thread safe way. If the element is already in the queue,
++ * or in some other queue, the data structures will be corrupted and
++ * will likely cause a crash or infinite loop.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Parameters:
++ *
++ * qElement:
++ * a pointer to the element to be inserted
++ *
++ * qHeader:
++ * a pointer to the queue header.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++Enqueue(
++ QElemPtr qElement,
++ QHdrPtr qHeader) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * Dequeue()
++ *
++ * Summary:
++ * Atomically removes a queue element from the given queue
++ *
++ * Discussion:
++ * A queue ( represented by a QHdrPtr ) is a singly linked list of
++ * elements. Dequeue removes the given element from the queue in a
++ * multi-thread safe way. If the element is not in the queue, qErr
++ * is returned.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Parameters:
++ *
++ * qElement:
++ * a pointer to the element to be removed
++ *
++ * qHeader:
++ * a pointer to the queue header.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++Dequeue(
++ QElemPtr qElement,
++ QHdrPtr qHeader) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++#if !__LP64__
++/*
++ * MakeDataExecutable()
++ *
++ * Summary:
++ * Notifies the system that the specified data is subject to
++ * execution.
++ *
++ * Discussion:
++ * On some computer architectures it is necessary to tell the
++ * processor that an area of memory should be made executable. This
++ * function does the necessary operations ( if possible ) to make it
++ * possible to execute code in the given address range.
++ * MakeDataExecutable is not supported for 64-bit applications. Use
++ * sys_icache_invalidate(3) and/or mprotect(2) as appropriate.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Parameters:
++ *
++ * baseAddress:
++ * the starting address to be made executable
++ *
++ * length:
++ * the length of the data pointed to by the baseAddress parameter.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only]
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.5 and later
++ */
++extern void
++MakeDataExecutable(
++ void * baseAddress,
++ unsigned long length) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++#endif /* !__LP64__ */
++
++/*
++ * ReadLocation()
++ *
++ * Summary:
++ * Obtains information about a geographic location or time zone.
++ *
++ * Discussion:
++ * The latitude and longitude are stored as Fract values, giving
++ * accuracy to within one foot. For example, a Fract value of 1.0
++ * equals 90 degrees \xD01.0 equals \xD090 degrees and \xD02.0 equals \xD0180
++ * degrees.
++ * To convert these values to a degrees format, you need to convert
++ * the Fract values first to the Fixed data type, then to the
++ * LongInt data type. Use the Mathematical and Logical Utilities
++ * functions Fract2Fix and Fix2Long to accomplish this task.
++ * The DST value is a signed byte value that specifies the offset
++ * for the hour field\xD1whether to add one hour, subtract one hour, or
++ * make no change at all.
++ * The GMT value is in seconds east of GMT. For example, San
++ * Francisco is at \xD028,800 seconds (8 hours * 3,600 seconds per
++ * hour) east of GMT. The gmtDelta field is a 3-byte value contained
++ * in a long word, so you must take care to get it properly.
++ * For more information on the Fract data type and the conversion
++ * routines Long2Fix, Fix2Fract, Fract2Fix, and Fix2Long, see
++ * Mathematical and Logical Utilities.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Parameters:
++ *
++ * loc:
++ * On return, the fields of the geographic location structure
++ * containing the geographic location and the time-zone
++ * information.
++ * You can get values for the latitude, longitude, daylight
++ * savings time (DST), or Greenwich mean time (GMT). If the
++ * geographic location record has never been set, all fields
++ * contain 0.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++ReadLocation(MachineLocation * loc) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * TickCount()
++ *
++ * Summary:
++ * Obtains the current number of ticks (a tick is approximately 1/60
++ * of a second) approximately since the system last started up.
++ *
++ * Discussion:
++ * The TickCount function returns an unsigned 32-bit integer that
++ * indicates the current number of ticks since the system last
++ * started up. You can use this value to compare the number of ticks
++ * that have elapsed since a given event or other action occurred.
++ * For example, you could compare the current value returned by
++ * TickCount with the value of the when field of an event
++ * structure.
++ * The tick count rolls over in approximately 2 years 3 months,
++ * which means you should not use this to time intervals which may
++ * exceed ( or even approach ) this interval.
++ * Do not rely on the tick count being exact; it is usually accurate
++ * to within one tick, but this level of accuracy is not guaranteed.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Result:
++ * the tick count
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern UInt32
++TickCount(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * CSCopyUserName()
++ *
++ * Summary:
++ * Returns a reference to the CFString that represents the user name.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Parameters:
++ *
++ * useShortName:
++ * A Boolean value that specifies whether to return the short name
++ * or full name of the user.
++ *
++ * Result:
++ * the requested name in a CFStringRef. You should release this
++ * when you are done with it.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.5 and later
++ * Non-Carbon CFM: not available
++ */
++extern CFStringRef
++CSCopyUserName(Boolean useShortName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * CSCopyMachineName()
++ *
++ * Summary:
++ * Returns a reference to the CFString that represents the computer
++ * name.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Result:
++ * the name of this machine in a CFStringRef. You should release
++ * this when you are done with it.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.5 and later
++ * Non-Carbon CFM: not available
++ */
++extern CFStringRef
++CSCopyMachineName(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++enum {
++ useFree = 0,
++ useATalk = 1,
++ useAsync = 2,
++ useExtClk = 3, /*Externally clocked*/
++ useMIDI = 4
++};
++
++enum {
++ false32b = 0, /*24 bit addressing error*/
++ true32b = 1 /*32 bit addressing error*/
++};
++
++#if ALLOW_OBSOLETE_CARBON_OSUTILS
++struct SysParmType {
++ UInt8 valid;
++ UInt8 aTalkA;
++ UInt8 aTalkB;
++ UInt8 config;
++ short portA;
++ short portB;
++ long alarm;
++ short font;
++ short kbdPrint;
++ short volClik;
++ short misc;
++};
++typedef struct SysParmType SysParmType;
++typedef SysParmType * SysPPtr;
++#else
++typedef void * SysPPtr;
++#endif /* ALLOW_OBSOLETE_CARBON_OSUTILS */
++
++#if TARGET_API_MAC_CARBON
++#define GetMMUMode() ((SInt8)true32b)
++#define SwapMMUMode(x) (*(SInt8*)(x) = true32b)
++#endif
++#if !__LP64__
++/*
++ * GetSysPPtr() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * Don't use this function; it always returns NULL on Mac OS X.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern SysPPtr
++GetSysPPtr(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++
++/*
++ NOTE: SysBeep() has been moved to Sound.h.
++ We could not automatically #include Sound.h in this file
++ because Sound.h indirectly #include's OSUtils.h which
++ would make a circular include.
++ */
++#endif /* !__LP64__ */
++
++typedef CALLBACK_API( void , DeferredTaskProcPtr )(long dtParam);
++typedef STACK_UPP_TYPE(DeferredTaskProcPtr) DeferredTaskUPP;
++/*
++ * NewDeferredTaskUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern DeferredTaskUPP
++NewDeferredTaskUPP(DeferredTaskProcPtr userRoutine) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++/*
++ * DisposeDeferredTaskUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++DisposeDeferredTaskUPP(DeferredTaskUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++/*
++ * InvokeDeferredTaskUPP()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: available as macro/inline
++ */
++extern void
++InvokeDeferredTaskUPP(
++ long dtParam,
++ DeferredTaskUPP userUPP) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++#if __MACH__
++ #ifdef __cplusplus
++ inline DeferredTaskUPP NewDeferredTaskUPP(DeferredTaskProcPtr userRoutine) { return userRoutine; }
++ inline void DisposeDeferredTaskUPP(DeferredTaskUPP) { }
++ inline void InvokeDeferredTaskUPP(long dtParam, DeferredTaskUPP userUPP) { (*userUPP)(dtParam); }
++ #else
++ #define NewDeferredTaskUPP(userRoutine) ((DeferredTaskUPP)userRoutine)
++ #define DisposeDeferredTaskUPP(userUPP)
++ #define InvokeDeferredTaskUPP(dtParam, userUPP) (*userUPP)(dtParam)
++ #endif
++#endif
++
++struct DeferredTask {
++ volatile QElemPtr qLink;
++ short qType;
++ volatile short dtFlags;
++ DeferredTaskUPP dtAddr;
++ long dtParam;
++ long dtReserved;
++};
++typedef struct DeferredTask DeferredTask;
++typedef DeferredTask * DeferredTaskPtr;
++#if !__LP64__
++/*
++ * DTInstall() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * The Deferred Task Manager is deprecated. Look into restructuring
++ * your code to use threads, or MPTasks, or some other threading
++ * solution.
++ *
++ * Summary:
++ * Adds the specified task record to the deferred-task queue.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++DTInstall(DeferredTaskPtr dtTaskPtr) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * DTUninstall() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * The Deferred Task Manager is deprecated. Look into restructuring
++ * your code to use threads, or MPTasks, or some other threading
++ * solution.
++ *
++ * Summary:
++ * Adds the specified task record to the deferred-task queue.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: not available
++ * Non-Carbon CFM: not available
++ */
++extern OSErr
++DTUninstall(DeferredTaskPtr dtTaskPtr) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * SetCurrentA5() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * You no longer need to use SetCurrentA5() on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern long
++SetCurrentA5(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * SetA5() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * You no longer need to use SetA5() on Mac OS X.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern long
++SetA5(long newA5) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * InitUtil() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * It is not necessary to call InitUtil on Mac OS X. You should
++ * remove all calls to this from your code.
++ *
++ * Mac OS X threading:
++ * Thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.3
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++InitUtil(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
++
++
++/*
++ * WriteParam() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * This function no longer does anything on Mac OS X; you should
++ * remove all calls to it from your code.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern OSErr
++WriteParam(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * WriteLocation() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * WriteLocation can not be used to set the geographic information
++ * on Mac OS X. You should remove all calls to this function from
++ * your code.
++ *
++ * Mac OS X threading:
++ * Not thread safe
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.0
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in InterfaceLib 7.1 and later
++ */
++extern void
++WriteLocation(const MachineLocation * loc) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED;
++
++
++#endif /* !__LP64__ */
++
++#if OLDROUTINENAMES
++#define IUMetric() IsMetric()
++#endif /* OLDROUTINENAMES */
++
++#if ALLOW_OBSOLETE_CARBON_OSUTILS
++/*
++ NOTE: SysEnvirons is obsolete. You should be using Gestalt.
++*/
++/* Environs Equates */
++enum {
++ curSysEnvVers = 2 /*Updated to equal latest SysEnvirons version*/
++};
++
++struct SysEnvRec {
++ short environsVersion;
++ short machineType;
++ short systemVersion;
++ short processor;
++ Boolean hasFPU;
++ Boolean hasColorQD;
++ short keyBoardType;
++ short atDrvrVersNum;
++ short sysVRefNum;
++};
++typedef struct SysEnvRec SysEnvRec;
++enum {
++ /* Machine Types */
++ envMac = -1,
++ envXL = -2,
++ envMachUnknown = 0,
++ env512KE = 1,
++ envMacPlus = 2,
++ envSE = 3,
++ envMacII = 4,
++ envMacIIx = 5,
++ envMacIIcx = 6,
++ envSE30 = 7,
++ envPortable = 8,
++ envMacIIci = 9,
++ envMacIIfx = 11
++};
++
++enum {
++ /* CPU types */
++ envCPUUnknown = 0,
++ env68000 = 1,
++ env68010 = 2,
++ env68020 = 3,
++ env68030 = 4,
++ env68040 = 5
++};
++
++enum {
++ /* Keyboard types */
++ envUnknownKbd = 0,
++ envMacKbd = 1,
++ envMacAndPad = 2,
++ envMacPlusKbd = 3,
++ envAExtendKbd = 4,
++ envStandADBKbd = 5,
++ envPrtblADBKbd = 6,
++ envPrtblISOKbd = 7,
++ envStdISOADBKbd = 8,
++ envExtISOADBKbd = 9
++};
++
++#endif /* ALLOW_OBSOLETE_CARBON_OSUTILS */
++
++
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __OSUTILS__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/TextCommon.h ./TextCommon.h
+--- ../CarbonHeaders-18.1.orig/TextCommon.h 1969-12-31 16:00:00.000000000 -0800
++++ ./TextCommon.h 2009-09-29 14:01:30.000000000 -0700
+@@ -0,0 +1,1165 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++
++/*
++ File: CarbonCore/TextCommon.h
++
++ Contains: TextEncoding-related types and constants, and prototypes for related functions
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1995-2008 Apple Inc. All rights reserved.
++
++ Bugs?: For bug reports, consult the following page on
++ the World Wide Web:
++
++ http://developer.apple.com/bugreporter/
++
++*/
++#ifndef __TEXTCOMMON__
++#define __TEXTCOMMON__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++
++/*
++ * Generic Text Alignment Constants
++ *
++ * Summary:
++ * These constants are implemented to supplant the old TextEdit
++ * Manager constants ( teFlushDefault, teCenter teFlushRight,
++ * teFlushLeft ) These constants are used outside the context of the
++ * legacy TextEdit Manager Framework. Use these as you would use the
++ * old TextEdit.h constants to specify how text should be justified
++ * (word aligned.) The new constants use the same values as the the
++ * old TextEdit ones, for backwards compatibility.
++ */
++enum {
++
++ /*
++ * Flush according to the line direction
++ */
++ kTextFlushDefault = 0,
++
++ /*
++ * Center justify (word alignment)
++ */
++ kTextCenter = 1,
++
++ /*
++ * Flush right
++ */
++ kTextFlushRight = -1,
++
++ /*
++ * Flush left
++ */
++ kTextFlushLeft = -2
++};
++
++/* TextEncodingBase type & values */
++/* (values 0-32 correspond to the Script Codes defined in Inside Macintosh: Text pages 6-52 and 6-53 */
++typedef UInt32 TextEncodingBase;
++enum {
++ /* Mac OS encodings*/
++ kTextEncodingMacRoman = 0,
++ kTextEncodingMacJapanese = 1,
++ kTextEncodingMacChineseTrad = 2,
++ kTextEncodingMacKorean = 3,
++ kTextEncodingMacArabic = 4,
++ kTextEncodingMacHebrew = 5,
++ kTextEncodingMacGreek = 6,
++ kTextEncodingMacCyrillic = 7,
++ kTextEncodingMacDevanagari = 9,
++ kTextEncodingMacGurmukhi = 10,
++ kTextEncodingMacGujarati = 11,
++ kTextEncodingMacOriya = 12,
++ kTextEncodingMacBengali = 13,
++ kTextEncodingMacTamil = 14,
++ kTextEncodingMacTelugu = 15,
++ kTextEncodingMacKannada = 16,
++ kTextEncodingMacMalayalam = 17,
++ kTextEncodingMacSinhalese = 18,
++ kTextEncodingMacBurmese = 19,
++ kTextEncodingMacKhmer = 20,
++ kTextEncodingMacThai = 21,
++ kTextEncodingMacLaotian = 22,
++ kTextEncodingMacGeorgian = 23,
++ kTextEncodingMacArmenian = 24,
++ kTextEncodingMacChineseSimp = 25,
++ kTextEncodingMacTibetan = 26,
++ kTextEncodingMacMongolian = 27,
++ kTextEncodingMacEthiopic = 28,
++ kTextEncodingMacCentralEurRoman = 29,
++ kTextEncodingMacVietnamese = 30,
++ kTextEncodingMacExtArabic = 31, /* The following use script code 0, smRoman*/
++ kTextEncodingMacSymbol = 33,
++ kTextEncodingMacDingbats = 34,
++ kTextEncodingMacTurkish = 35,
++ kTextEncodingMacCroatian = 36,
++ kTextEncodingMacIcelandic = 37,
++ kTextEncodingMacRomanian = 38,
++ kTextEncodingMacCeltic = 39,
++ kTextEncodingMacGaelic = 40,
++ kTextEncodingMacKeyboardGlyphs = 41
++};
++
++/* The following are older names for backward compatibility*/
++enum {
++ kTextEncodingMacTradChinese = kTextEncodingMacChineseTrad,
++ kTextEncodingMacRSymbol = 8,
++ kTextEncodingMacSimpChinese = kTextEncodingMacChineseSimp,
++ kTextEncodingMacGeez = kTextEncodingMacEthiopic,
++ kTextEncodingMacEastEurRoman = kTextEncodingMacCentralEurRoman,
++ kTextEncodingMacUninterp = 32
++};
++
++
++/*
++ Beginning in Mac OS 8.5, the following meta-value is used to indicate Unicode in some parts
++ of the Mac OS which previously only expected a Mac OS script code. In some of these places,
++ only 7 bits are available to indicate encoding (script code), so kTextEncodingUnicodeDefault
++ cannot be used. For example, kTextEncodingMacUnicode can be used to indicate Unicode in the
++ 7-bit script code field of a Unicode input method's ComponentDescription.componentFlags field;
++ it can also be used to indicate Unicode in the 16-bit script code field of an AppleEvent's
++ typeIntlWritingCode text tag.
++*/
++enum {
++ kTextEncodingMacUnicode = 0x7E /* Meta-value, Unicode as a Mac encoding*/
++};
++
++/* Variant Mac OS encodings that use script codes other than 0*/
++enum {
++ /* The following use script code 4, smArabic*/
++ kTextEncodingMacFarsi = 0x8C, /* Like MacArabic but uses Farsi digits*/
++ /* The following use script code 7, smCyrillic*/
++ kTextEncodingMacUkrainian = 0x98, /* Meta-value in TEC 1.5 & later; maps to kTextEncodingMacCyrillic variant */
++ /* The following use script code 28, smEthiopic*/
++ kTextEncodingMacInuit = 0xEC, /* The following use script code 32, smUnimplemented*/
++ kTextEncodingMacVT100 = 0xFC /* VT100/102 font from Comm Toolbox: Latin-1 repertoire + box drawing etc*/
++};
++
++/* Special Mac OS encodings*/
++enum {
++ kTextEncodingMacHFS = 0xFF /* Meta-value, should never appear in a table.*/
++};
++
++/* Unicode & ISO UCS encodings begin at 0x100*/
++enum {
++ kTextEncodingUnicodeDefault = 0x0100, /* Meta-value, should never appear in a table.*/
++ kTextEncodingUnicodeV1_1 = 0x0101,
++ kTextEncodingISO10646_1993 = 0x0101, /* Code points identical to Unicode 1.1*/
++ kTextEncodingUnicodeV2_0 = 0x0103, /* New location for Korean Hangul*/
++ kTextEncodingUnicodeV2_1 = 0x0103, /* We treat both Unicode 2.0 and Unicode 2.1 as 2.1*/
++ kTextEncodingUnicodeV3_0 = 0x0104,
++ kTextEncodingUnicodeV3_1 = 0x0105, /* Adds characters requiring surrogate pairs in UTF-16*/
++ kTextEncodingUnicodeV3_2 = 0x0106,
++ kTextEncodingUnicodeV4_0 = 0x0108,
++ kTextEncodingUnicodeV5_0 = 0x010A,
++ kTextEncodingUnicodeV5_1 = 0x010B
++};
++
++/* ISO 8-bit and 7-bit encodings begin at 0x200*/
++enum {
++ kTextEncodingISOLatin1 = 0x0201, /* ISO 8859-1, Western European*/
++ kTextEncodingISOLatin2 = 0x0202, /* ISO 8859-2, Central European*/
++ kTextEncodingISOLatin3 = 0x0203, /* ISO 8859-3, South European (Maltese...)*/
++ kTextEncodingISOLatin4 = 0x0204, /* ISO 8859-4, North European & some Baltic*/
++ kTextEncodingISOLatinCyrillic = 0x0205, /* ISO 8859-5*/
++ kTextEncodingISOLatinArabic = 0x0206, /* ISO 8859-6, = ASMO 708, =DOS CP 708*/
++ kTextEncodingISOLatinGreek = 0x0207, /* ISO 8859-7*/
++ kTextEncodingISOLatinHebrew = 0x0208, /* ISO 8859-8*/
++ kTextEncodingISOLatin5 = 0x0209, /* ISO 8859-9, Turkish*/
++ kTextEncodingISOLatin6 = 0x020A, /* ISO 8859-10, Nordic */
++ kTextEncodingISOLatin7 = 0x020D, /* ISO 8859-13, Baltic Rim */
++ kTextEncodingISOLatin8 = 0x020E, /* ISO 8859-14, Celtic */
++ kTextEncodingISOLatin9 = 0x020F, /* ISO 8859-15, 8859-1 changed for EURO & CP1252 letters */
++ kTextEncodingISOLatin10 = 0x0210 /* ISO 8859-16, Romanian*/
++};
++
++/* MS-DOS & Windows encodings begin at 0x400*/
++enum {
++ kTextEncodingDOSLatinUS = 0x0400, /* code page 437*/
++ kTextEncodingDOSGreek = 0x0405, /* code page 737 (formerly code page 437G)*/
++ kTextEncodingDOSBalticRim = 0x0406, /* code page 775*/
++ kTextEncodingDOSLatin1 = 0x0410, /* code page 850, "Multilingual"*/
++ kTextEncodingDOSGreek1 = 0x0411, /* code page 851*/
++ kTextEncodingDOSLatin2 = 0x0412, /* code page 852, Slavic*/
++ kTextEncodingDOSCyrillic = 0x0413, /* code page 855, IBM Cyrillic*/
++ kTextEncodingDOSTurkish = 0x0414, /* code page 857, IBM Turkish*/
++ kTextEncodingDOSPortuguese = 0x0415, /* code page 860*/
++ kTextEncodingDOSIcelandic = 0x0416, /* code page 861*/
++ kTextEncodingDOSHebrew = 0x0417, /* code page 862*/
++ kTextEncodingDOSCanadianFrench = 0x0418, /* code page 863*/
++ kTextEncodingDOSArabic = 0x0419, /* code page 864*/
++ kTextEncodingDOSNordic = 0x041A, /* code page 865*/
++ kTextEncodingDOSRussian = 0x041B, /* code page 866*/
++ kTextEncodingDOSGreek2 = 0x041C, /* code page 869, IBM Modern Greek*/
++ kTextEncodingDOSThai = 0x041D, /* code page 874, also for Windows*/
++ kTextEncodingDOSJapanese = 0x0420, /* code page 932, also for Windows; Shift-JIS with additions*/
++ kTextEncodingDOSChineseSimplif = 0x0421, /* code page 936, also for Windows; was EUC-CN, now GBK (EUC-CN extended)*/
++ kTextEncodingDOSKorean = 0x0422, /* code page 949, also for Windows; Unified Hangul Code (EUC-KR extended)*/
++ kTextEncodingDOSChineseTrad = 0x0423, /* code page 950, also for Windows; Big-5*/
++ kTextEncodingWindowsLatin1 = 0x0500, /* code page 1252*/
++ kTextEncodingWindowsANSI = 0x0500, /* code page 1252 (alternate name)*/
++ kTextEncodingWindowsLatin2 = 0x0501, /* code page 1250, Central Europe*/
++ kTextEncodingWindowsCyrillic = 0x0502, /* code page 1251, Slavic Cyrillic*/
++ kTextEncodingWindowsGreek = 0x0503, /* code page 1253*/
++ kTextEncodingWindowsLatin5 = 0x0504, /* code page 1254, Turkish*/
++ kTextEncodingWindowsHebrew = 0x0505, /* code page 1255*/
++ kTextEncodingWindowsArabic = 0x0506, /* code page 1256*/
++ kTextEncodingWindowsBalticRim = 0x0507, /* code page 1257*/
++ kTextEncodingWindowsVietnamese = 0x0508, /* code page 1258*/
++ kTextEncodingWindowsKoreanJohab = 0x0510 /* code page 1361, for Windows NT*/
++};
++
++/* Various national standards begin at 0x600*/
++enum {
++ kTextEncodingUS_ASCII = 0x0600,
++ kTextEncodingANSEL = 0x0601, /* ANSEL (ANSI Z39.47) for library use*/
++ kTextEncodingJIS_X0201_76 = 0x0620, /* JIS Roman and 1-byte katakana (halfwidth)*/
++ kTextEncodingJIS_X0208_83 = 0x0621,
++ kTextEncodingJIS_X0208_90 = 0x0622,
++ kTextEncodingJIS_X0212_90 = 0x0623,
++ kTextEncodingJIS_C6226_78 = 0x0624,
++ kTextEncodingShiftJIS_X0213 = 0x0628, /* Shift-JIS format encoding of JIS X0213 planes 1 and 2*/
++ kTextEncodingJIS_X0213_MenKuTen = 0x0629, /* JIS X0213 in plane-row-column notation (3 bytes)*/
++ kTextEncodingGB_2312_80 = 0x0630,
++ kTextEncodingGBK_95 = 0x0631, /* annex to GB 13000-93; for Windows 95; EUC-CN extended*/
++ kTextEncodingGB_18030_2000 = 0x0632,
++ kTextEncodingKSC_5601_87 = 0x0640, /* same as KSC 5601-92 without Johab annex*/
++ kTextEncodingKSC_5601_92_Johab = 0x0641, /* KSC 5601-92 Johab annex*/
++ kTextEncodingCNS_11643_92_P1 = 0x0651, /* CNS 11643-1992 plane 1*/
++ kTextEncodingCNS_11643_92_P2 = 0x0652, /* CNS 11643-1992 plane 2*/
++ kTextEncodingCNS_11643_92_P3 = 0x0653 /* CNS 11643-1992 plane 3 (was plane 14 in 1986 version)*/
++};
++
++/* ISO 2022 collections begin at 0x800*/
++enum {
++ kTextEncodingISO_2022_JP = 0x0820, /* RFC 1468*/
++ kTextEncodingISO_2022_JP_2 = 0x0821, /* RFC 1554*/
++ kTextEncodingISO_2022_JP_1 = 0x0822, /* RFC 2237*/
++ kTextEncodingISO_2022_JP_3 = 0x0823, /* JIS X0213*/
++ kTextEncodingISO_2022_CN = 0x0830, /* RFC 1922*/
++ kTextEncodingISO_2022_CN_EXT = 0x0831, /* RFC 1922*/
++ kTextEncodingISO_2022_KR = 0x0840 /* RFC 1557*/
++};
++
++/* EUC collections begin at 0x900*/
++enum {
++ kTextEncodingEUC_JP = 0x0920, /* ISO 646, 1-byte katakana, JIS 208, JIS 212*/
++ kTextEncodingEUC_CN = 0x0930, /* ISO 646, GB 2312-80*/
++ kTextEncodingEUC_TW = 0x0931, /* ISO 646, CNS 11643-1992 Planes 1-16*/
++ kTextEncodingEUC_KR = 0x0940 /* RFC 1557: ISO 646, KS C 5601-1987*/
++};
++
++/* Misc standards begin at 0xA00*/
++enum {
++ kTextEncodingShiftJIS = 0x0A01, /* plain Shift-JIS*/
++ kTextEncodingKOI8_R = 0x0A02, /* RFC 1489, Russian internet standard*/
++ kTextEncodingBig5 = 0x0A03, /* Big-5 (has variants)*/
++ kTextEncodingMacRomanLatin1 = 0x0A04, /* Mac OS Roman permuted to align with ISO Latin-1*/
++ kTextEncodingHZ_GB_2312 = 0x0A05, /* HZ (RFC 1842, for Chinese mail & news)*/
++ kTextEncodingBig5_HKSCS_1999 = 0x0A06, /* Big-5 with Hong Kong special char set supplement*/
++ kTextEncodingVISCII = 0x0A07, /* RFC 1456, Vietnamese*/
++ kTextEncodingKOI8_U = 0x0A08, /* RFC 2319, Ukrainian*/
++ kTextEncodingBig5_E = 0x0A09 /* Taiwan Big-5E standard*/
++};
++
++/* Other platform encodings*/
++enum {
++ kTextEncodingNextStepLatin = 0x0B01, /* NextStep Latin encoding*/
++ kTextEncodingNextStepJapanese = 0x0B02 /* NextStep Japanese encoding (variant of EUC-JP)*/
++};
++
++/* EBCDIC & IBM host encodings begin at 0xC00*/
++enum {
++ kTextEncodingEBCDIC_LatinCore = 0x0C01, /* Common base subset of EBCDIC Latin encodings*/
++ kTextEncodingEBCDIC_CP037 = 0x0C02 /* code page 037, extended EBCDIC (Latin-1 set) for US,Canada...*/
++};
++
++/* Special values*/
++enum {
++ kTextEncodingMultiRun = 0x0FFF, /* Multi-encoding text with external run info*/
++ kTextEncodingUnknown = 0xFFFF /* Unknown or unspecified */
++};
++
++/* The following are older names for backward compatibility*/
++enum {
++ kTextEncodingEBCDIC_US = 0x0C01
++};
++
++
++/* TextEncodingVariant type & values */
++typedef UInt32 TextEncodingVariant;
++/* Default TextEncodingVariant, for any TextEncodingBase*/
++enum {
++ kTextEncodingDefaultVariant = 0
++};
++
++/* Variants of kTextEncodingMacRoman */
++enum {
++ kMacRomanDefaultVariant = 0, /* meta value, maps to 1 or 2 depending on System */
++ kMacRomanCurrencySignVariant = 1, /* Mac OS version < 8.5, 0xDB is CURRENCY SIGN*/
++ kMacRomanEuroSignVariant = 2 /* Mac OS version >= 8.5, 0xDB is EURO SIGN */
++};
++
++/* Variants of kTextEncodingMacCyrillic (for TEC 1.5 and later) */
++enum {
++ kMacCyrillicDefaultVariant = 0, /* meta value, maps to 1, 2, or 3 depending on System*/
++ kMacCyrillicCurrSignStdVariant = 1, /* Mac OS < 9.0 (RU,BG), 0xFF = CURRENCY SIGN, 0xA2/0xB6 = CENT / PARTIAL DIFF.*/
++ kMacCyrillicCurrSignUkrVariant = 2, /* Mac OS < 9.0 (UA,LangKit), 0xFF = CURRENCY SIGN, 0xA2/0xB6 = GHE WITH UPTURN*/
++ kMacCyrillicEuroSignVariant = 3 /* Mac OS >= 9.0, 0xFF is EURO SIGN, 0xA2/0xB6 = GHE WITH UPTURN*/
++};
++
++/* Variants of kTextEncodingMacIcelandic */
++enum {
++ kMacIcelandicStdDefaultVariant = 0, /* meta value, maps to 2 or 4 depending on System */
++ kMacIcelandicTTDefaultVariant = 1, /* meta value, maps to 3 or 5 depending on System */
++ /* The following are for Mac OS version < 8.5, 0xDB is CURRENCY SIGN */
++ kMacIcelandicStdCurrSignVariant = 2, /* 0xBB/0xBC are fem./masc. ordinal indicators*/
++ kMacIcelandicTTCurrSignVariant = 3, /* 0xBB/0xBC are fi/fl ligatures*/
++ /* The following are for Mac OS version >= 8.5, 0xDB is EURO SIGN */
++ kMacIcelandicStdEuroSignVariant = 4, /* 0xBB/0xBC are fem./masc. ordinal indicators*/
++ kMacIcelandicTTEuroSignVariant = 5 /* 0xBB/0xBC are fi/fl ligatures*/
++};
++
++/* Variants of kTextEncodingMacCroatian */
++enum {
++ kMacCroatianDefaultVariant = 0, /* meta value, maps to 1 or 2 depending on System */
++ kMacCroatianCurrencySignVariant = 1, /* Mac OS version < 8.5, 0xDB is CURRENCY SIGN */
++ kMacCroatianEuroSignVariant = 2 /* Mac OS version >= 8.5, 0xDB is EURO SIGN */
++};
++
++
++/* Variants of kTextEncodingMacRomanian */
++enum {
++ kMacRomanianDefaultVariant = 0, /* meta value, maps to 1 or 2 depending on System */
++ kMacRomanianCurrencySignVariant = 1, /* Mac OS version < 8.5, 0xDB is CURRENCY SIGN */
++ kMacRomanianEuroSignVariant = 2 /* Mac OS version >= 8.5, 0xDB is EURO SIGN */
++};
++
++
++/* Variants of kTextEncodingMacJapanese*/
++enum {
++ kMacJapaneseStandardVariant = 0,
++ kMacJapaneseStdNoVerticalsVariant = 1,
++ kMacJapaneseBasicVariant = 2,
++ kMacJapanesePostScriptScrnVariant = 3,
++ kMacJapanesePostScriptPrintVariant = 4,
++ kMacJapaneseVertAtKuPlusTenVariant = 5
++};
++
++/* Variants of kTextEncodingMacArabic*/
++enum {
++ kMacArabicStandardVariant = 0, /* 0xC0 is 8-spoke asterisk, 0x2A & 0xAA are asterisk (e.g. Cairo)*/
++ kMacArabicTrueTypeVariant = 1, /* 0xC0 is asterisk, 0x2A & 0xAA are multiply signs (e.g. Baghdad)*/
++ kMacArabicThuluthVariant = 2, /* 0xC0 is Arabic five-point star, 0x2A & 0xAA are multiply signs*/
++ kMacArabicAlBayanVariant = 3 /* 8-spoke asterisk, multiply sign, Koranic ligatures & parens*/
++};
++
++/* Variants of kTextEncodingMacFarsi*/
++enum {
++ kMacFarsiStandardVariant = 0, /* 0xC0 is 8-spoke asterisk, 0x2A & 0xAA are asterisk (e.g. Tehran)*/
++ kMacFarsiTrueTypeVariant = 1 /* asterisk, multiply signs, Koranic ligatures, geometric shapes*/
++};
++
++/* Variants of kTextEncodingMacHebrew*/
++enum {
++ kMacHebrewStandardVariant = 0,
++ kMacHebrewFigureSpaceVariant = 1
++};
++
++/* Variants of kTextEncodingMacGreek*/
++enum {
++ kMacGreekDefaultVariant = 0, /* meta value, maps to 1 or 2 depending on System*/
++ kMacGreekNoEuroSignVariant = 1, /* Mac OS version < 9.2.2, 0x9C is SOFT HYPHEN, 0xFF is undefined*/
++ kMacGreekEuroSignVariant = 2 /* Mac OS version >= 9.2.2, 0x9C is EURO SIGN, 0xFF is SOFT HYPHEN*/
++};
++
++/* Variants of kTextEncodingMacVT100 */
++enum {
++ kMacVT100DefaultVariant = 0, /* meta value, maps to 1 or 2 depending on System */
++ kMacVT100CurrencySignVariant = 1, /* Mac OS version < 8.5, 0xDB is CURRENCY SIGN */
++ kMacVT100EuroSignVariant = 2 /* Mac OS version >= 8.5, 0xDB is EURO SIGN */
++};
++
++/* Variants of Unicode & ISO 10646 encodings*/
++enum {
++ kUnicodeNoSubset = 0,
++ kUnicodeNormalizationFormD = 5, /* canonical decomposition (NFD); excludes composed chars*/
++ kUnicodeNormalizationFormC = 3, /* canonical composition (NFC); uses the composed chars as of Unicode 3.1*/
++ kUnicodeHFSPlusDecompVariant = 8, /* decomposition for HFS+; doesn't decompose in 2000-2FFF, F900-FAFF, 2F800-2FAFF*/
++ kUnicodeHFSPlusCompVariant = 9 /* composition based on HFS+ decomposition*/
++};
++
++/* Variants of kTextEncodingISOLatin1*/
++enum {
++ kISOLatin1StandardVariant = 0,
++ kISOLatin1MusicCDVariant = 1
++};
++
++/*
++ Variants of kTextEncodingISOLatinArabic, kTextEncodingISOLatinHebrew.
++ Per RFC 1556 and ECMA TR/53, there are three ways of handling bidirectional text
++ in the ISO character sets 8859-6 (Arabic) and 8859-8 (Hebrew).
++ 1. Implicit or Logical order is "a presentation method in which the direction is
++ determined by an algorithm according to the type of characters and their position
++ relative to the adjacent characters and according to their primary direction." This
++ is the method normally used for Unicode and for the Mac OS and Windows Arabic and
++ Hebrew encodings.
++ 2. Visual order assumes the text is already ordered such that it can be displayed
++ in a left-to-right display direction with no further directional processing. This
++ is equivalent to treating all characters as having strong left-right directionality.
++ This is the default assumed for internet Hebrew text encoded in ISO 8859-8, unless
++ the charset label suffix specifically indicates implicit (-i) or explicit (-e)
++ ordering.
++ 3. Explicit order is "a presentation method in which the direction is explicitly
++ defined by using control sequences which are interleaved within the text and are
++ used for direction determination."
++*/
++enum {
++ kISOLatinArabicImplicitOrderVariant = 0,
++ kISOLatinArabicVisualOrderVariant = 1,
++ kISOLatinArabicExplicitOrderVariant = 2
++};
++
++enum {
++ kISOLatinHebrewImplicitOrderVariant = 0,
++ kISOLatinHebrewVisualOrderVariant = 1,
++ kISOLatinHebrewExplicitOrderVariant = 2
++};
++
++/* Variants of kTextEncodingWindowsLatin1*/
++enum {
++ kWindowsLatin1StandardVariant = 0,
++ kWindowsLatin1PalmVariant = 1 /* PalmSource variant of cp1252*/
++};
++
++/* Variants of kTextEncodingDOSJapanese*/
++enum {
++ kDOSJapaneseStandardVariant = 0,
++ kDOSJapanesePalmVariant = 1 /* PalmSource variant of cp932*/
++};
++
++/*
++ Variants of EUC_CN
++ The DOSVariant is like kTextEncodingDOSChineseSimplif, but with the
++ basic EUC_CN part mapped as per kTextEncodingEUC_CN.
++*/
++enum {
++ kEUC_CN_BasicVariant = 0,
++ kEUC_CN_DOSVariant = 1
++};
++
++/*
++ Variants of EUC_KR
++ The DOSVariant is like kTextEncodingDOSKorean, but with the
++ basic EUC_KR part mapped as per kTextEncodingEUC_KR.
++*/
++enum {
++ kEUC_KR_BasicVariant = 0,
++ kEUC_KR_DOSVariant = 1
++};
++
++/*
++ Variants of ShiftJIS
++ The DOSVariant is like kTextEncodingDOSJapanese, but with the
++ basic ShiftJIS part mapped as per kTextEncodingShiftJIS.
++*/
++enum {
++ kShiftJIS_BasicVariant = 0,
++ kShiftJIS_DOSVariant = 1,
++ kShiftJIS_MusicCDVariant = 2 /* MusicShiftJIS, per RIS-506 (RIAJ)*/
++};
++
++/*
++ Variants of Big-5 encoding
++ The DOSVariant is like kTextEncodingDOSChineseTrad, but with the
++ basic Big5 part mapped as per kTextEncodingBig5.
++*/
++enum {
++ kBig5_BasicVariant = 0,
++ kBig5_StandardVariant = 1, /* 0xC6A1-0xC7FC: kana, Cyrillic, enclosed numerics*/
++ kBig5_ETenVariant = 2, /* adds kana, Cyrillic, radicals, etc with hi bytes C6-C8,F9*/
++ kBig5_DOSVariant = 3
++};
++
++/* Variants of MacRomanLatin1 */
++enum {
++ kMacRomanLatin1DefaultVariant = 0, /* meta value, maps to others depending on System*/
++ kMacRomanLatin1StandardVariant = 2, /* permuted MacRoman, EuroSignVariant*/
++ kMacRomanLatin1TurkishVariant = 6, /* permuted MacTurkish*/
++ kMacRomanLatin1CroatianVariant = 8, /* permuted MacCroatian, EuroSignVariant*/
++ kMacRomanLatin1IcelandicVariant = 11, /* permuted MacIcelandic, StdEuroSignVariant*/
++ kMacRomanLatin1RomanianVariant = 14 /* permuted MacRomanian, EuroSignVariant*/
++};
++
++/* Unicode variants not yet supported (and not fully defined)*/
++enum {
++ kUnicodeNoCompatibilityVariant = 1,
++ kUnicodeNoCorporateVariant = 4
++};
++
++/* The following are older names for backward compatibility*/
++enum {
++ kMacRomanStandardVariant = 0,
++ kMacIcelandicStandardVariant = 0,
++ kMacIcelandicTrueTypeVariant = 1,
++ kJapaneseStandardVariant = 0,
++ kJapaneseStdNoVerticalsVariant = 1,
++ kJapaneseBasicVariant = 2,
++ kJapanesePostScriptScrnVariant = 3,
++ kJapanesePostScriptPrintVariant = 4,
++ kJapaneseVertAtKuPlusTenVariant = 5,
++ kTextEncodingShiftJIS_X0213_00 = 0x0628, /* Shift-JIS format encoding of JIS X0213 planes 1 and 2*/
++ /* kJapaneseStdNoOneByteKanaVariant = 6, // replaced by kJapaneseNoOneByteKanaOption*/
++ /* kJapaneseBasicNoOneByteKanaVariant = 7, // replaced by kJapaneseNoOneByteKanaOption */
++ kHebrewStandardVariant = 0,
++ kHebrewFigureSpaceVariant = 1, /* Old Unicode variants. Variant 2 (kUnicodeCanonicalDecompVariant, kUnicodeMaxDecomposedVariant) is ambiguous and means*/
++ /* different things in different contexts. When normalizing (using ConvertFromUnicodeToText to convert from arbitrary*/
++ /* Unicode to a normalized form), Unicode variant 2 means the same thing as kUnicodeNormalizationFormD (i.e. NFD).*/
++ /* However, when converting between Unicode and traditional Mac OS encodings, Unicode variant 2 means the same thing as*/
++ /* kUnicodeHFSPlusDecompVariant (i.e. the special HFS decomposition which excludes some character ranges from normalization).*/
++ /* For clarity, please use the less ambiguous constants: kUnicodeNormalizationFormD = 5, kUnicodeHFSPlusDecompVariant = 8.*/
++ /* */
++ kUnicodeCanonicalDecompVariant = 2, /* use kUnicodeNormalizationFormD or kUnicodeHFSPlusDecompVariant*/
++ kUnicodeMaxDecomposedVariant = 2, /* use kUnicodeNormalizationFormD or kUnicodeHFSPlusDecompVariant*/
++ kUnicodeCanonicalCompVariant = 3, /* replaced by kUnicodeNormalizationFormC*/
++ kUnicodeNoComposedVariant = 3 /* this really meant NoComposing; replaced by kUnicodeNormalizationFormC*/
++};
++
++/* TextEncodingFormat type & values */
++typedef UInt32 TextEncodingFormat;
++enum {
++ /* Default TextEncodingFormat for any TextEncodingBase*/
++ kTextEncodingDefaultFormat = 0, /* Formats for Unicode & ISO 10646*/
++ kUnicodeUTF16Format = 0, /* UTF16 form (16-bit units), native or external byte order (see below)*/
++ kUnicodeUTF7Format = 1, /* UTF7 form*/
++ kUnicodeUTF8Format = 2, /* UTF8 form*/
++ kUnicodeUTF32Format = 3, /* UTF32 form (32-bit units), native or external byte order (see below)*/
++ kUnicodeUTF16BEFormat = 4, /* UTF16 form, explicit big-endian byte order, no BOM*/
++ kUnicodeUTF16LEFormat = 5, /* UTF16 form, explicit little-endian byte order, no BOM*/
++ kUnicodeUTF32BEFormat = 6, /* UTF32 form, explicit big-endian byte order, no BOM*/
++ kUnicodeUTF32LEFormat = 7, /* UTF32 form, explicit little-endian byte order, no BOM*/
++ kUnicodeSCSUFormat = 8, /* Std. Compression Scheme for Unicode, Unicode Tech Std. #6*/
++ /* Note for kUnicodeUTF16Format and kUnicodeUTF32Format:*/
++ /* - An array of UTF16Char (UniChar) or UTF32Char is normally understood to use "internal" or*/
++ /* platform-native byte ordering for kUnicodeUTF16Format and kUnicodeUTF32Format; the array MAY*/
++ /* begin with byte-order mark (BOM), but the BOM should match the internal ordering.*/
++ /* - If an array of bytes (such as char *) that can be in various encodings is specified to be*/
++ /* in Unicode with kUnicodeUTF16Format or kUnicodeUTF32Format (not explicitly BE or LE), then it*/
++ /* is assumed to use "external" byte ordering, which means: If there is a BOM at the beginning*/
++ /* of text, the BOM specifies the byte ordering, otherwise big-endian is assumed.*/
++ /* Synonyms for some Unicode formats*/
++ kUnicode16BitFormat = 0,
++ kUnicode32BitFormat = 3
++};
++
++/* TextEncoding type */
++typedef UInt32 TextEncoding;
++/* name part selector for GetTextEncodingName*/
++typedef UInt32 TextEncodingNameSelector;
++enum {
++ kTextEncodingFullName = 0,
++ kTextEncodingBaseName = 1,
++ kTextEncodingVariantName = 2,
++ kTextEncodingFormatName = 3
++};
++
++/* Types used in conversion */
++struct TextEncodingRun {
++ ByteOffset offset;
++ TextEncoding textEncoding;
++};
++typedef struct TextEncodingRun TextEncodingRun;
++typedef TextEncodingRun * TextEncodingRunPtr;
++typedef const TextEncodingRun * ConstTextEncodingRunPtr;
++struct ScriptCodeRun {
++ ByteOffset offset;
++ ScriptCode script;
++};
++typedef struct ScriptCodeRun ScriptCodeRun;
++typedef ScriptCodeRun * ScriptCodeRunPtr;
++typedef const ScriptCodeRun * ConstScriptCodeRunPtr;
++typedef UInt8 * TextPtr;
++typedef const UInt8 * ConstTextPtr;
++/* Basic types for Unicode characters and strings:*/
++typedef UniChar * UniCharArrayPtr;
++typedef const UniChar * ConstUniCharArrayPtr;
++/*
++ UniCharArrayHandle is a handle type to correspond to UniCharArrayPtr,
++ i.e. a handle to an array of UniChars (UInt16s).
++*/
++typedef UniCharArrayPtr * UniCharArrayHandle;
++/*
++ UniCharArrayOffset is used to indicate an edge offset in an array
++ of UniChars (UInt16s).
++*/
++typedef unsigned long UniCharArrayOffset;
++/* enums for TextEncoding Conversion routines*/
++enum {
++ kTextScriptDontCare = -128,
++ kTextLanguageDontCare = -128,
++ kTextRegionDontCare = -128
++};
++
++/* struct for TECGetInfo*/
++
++struct TECInfo {
++ UInt16 format; /* format code for this struct*/
++ UInt16 tecVersion; /* TEC version in BCD, e.g. 0x0121 for 1.2.1*/
++ UInt32 tecTextConverterFeatures; /* bitmask indicating TEC features/fixes*/
++ UInt32 tecUnicodeConverterFeatures; /* bitmask indicating UnicodeConverter features/fixes*/
++ UInt32 tecTextCommonFeatures; /* bitmask indicating TextCommon features/fixes*/
++ Str31 tecTextEncodingsFolderName; /* localized name of Text Encodings folder (pascal string)*/
++ Str31 tecExtensionFileName; /* localized name of TEC extension (pascal string)*/
++ UInt16 tecLowestTEFileVersion; /* Lowest version (BCD) of all files in Text Encodings folder*/
++ UInt16 tecHighestTEFileVersion; /* Highest version (BCD) of all files in Text Encodings folder*/
++};
++typedef struct TECInfo TECInfo;
++typedef TECInfo * TECInfoPtr;
++typedef TECInfoPtr * TECInfoHandle;
++/* Value for TECInfo format code*/
++enum {
++ kTECInfoCurrentFormat = 2 /* any future formats will just add fields at the end*/
++};
++
++/*
++ Defined feature/fix bits for tecUnicodeConverterFeatures field
++ Bit: Meaning if set:
++ ---- ---------------
++ kTECKeepInfoFixBit Unicode Converter no longer ignores other control flags if
++ kUnicodeKeepInfoBit is set. Bug fix in TEC Manager 1.2.1.
++ kTECFallbackTextLengthFixBit Unicode Converter honors the *srcConvLen and *destConvLen
++ returned by caller-supplied fallback handler for any status it
++ returns except for kTECUnmappableElementErr (previously it only
++ honored these values if noErr was returned). Bug fix in TEC
++ Manager 1.2.1.
++ kTECTextRunBitClearFixBit ConvertFromUnicodeToTextRun & ConvertFromUnicodeToScriptCodeRun
++ function correctly if the kUnicodeTextRunBit is set (previously
++ their determination of best target encoding was incorrect). Bug
++ fix in TEC Manager 1.3.
++ kTECTextToUnicodeScanFixBit ConvertFromTextToUnicode uses an improved scanner and maintains
++ some resulting state information, which it uses for mapping.
++ This has several effects:
++ - Improved mapping of 0x30-0x39 digits in Mac OS Arabic, fewer
++ direction overrides when mapping Mac OS Arabic & Hebrew, and
++ improved mapping of certain characters in Indic encodings.
++ - Malformed input produces kTextMalformedInputErr.
++ - ConvertFromTextToUnicode accepts and uses the control flags
++ kUnicodeKeepInfoMask and kUnicodeStringUnterminatedMask.
++ Bug fix and enhancement in TEC Manager 1.3.
++ kTECAddForceASCIIChangesBit Define new control flag bits kUnicodeForceASCIIRangeBit and
++ kUnicodeNoHalfwidthCharsBit for use with
++ ConvertFromTextToUnicode, ConvertFromUnicodeToText, etc.
++ Enhancement in TEC Manager 1.4.
++ kTECPreferredEncodingFixBit CreateUnicodeToTextRunInfo and related functions fix a problem
++ that occurred when a preferred encoding was specified that did
++ not match the System script; the preferred script was not
++ actually placed first in the ordered list of encodings to use.
++ Bug fix in TEC Manager 1.4.
++ kTECAddTextRunHeuristicsBit Define new control flag bit kUnicodeTextRunHeuristicsBit for
++ use with ConvertFromUnicodeToTextRun.
++ kTECAddFallbackInterruptBit Define new option kUnicodeFallbackInterruptSafeMask for use
++ with SetFallbackUnicodeToText. If a client fallback handler is
++ installed without specifying this bit, ConvertFromUnicodeToText
++ will HLock the tables it uses (in case the fallback handler
++ moves memory); otherwise, it won't.
++*/
++
++enum {
++ kTECKeepInfoFixBit = 0,
++ kTECFallbackTextLengthFixBit = 1,
++ kTECTextRunBitClearFixBit = 2,
++ kTECTextToUnicodeScanFixBit = 3,
++ kTECAddForceASCIIChangesBit = 4,
++ kTECPreferredEncodingFixBit = 5,
++ kTECAddTextRunHeuristicsBit = 6,
++ kTECAddFallbackInterruptBit = 7
++};
++
++enum {
++ kTECKeepInfoFixMask = 1L << kTECKeepInfoFixBit,
++ kTECFallbackTextLengthFixMask = 1L << kTECFallbackTextLengthFixBit,
++ kTECTextRunBitClearFixMask = 1L << kTECTextRunBitClearFixBit,
++ kTECTextToUnicodeScanFixMask = 1L << kTECTextToUnicodeScanFixBit,
++ kTECAddForceASCIIChangesMask = 1L << kTECAddForceASCIIChangesBit,
++ kTECPreferredEncodingFixMask = 1L << kTECPreferredEncodingFixBit,
++ kTECAddTextRunHeuristicsMask = 1L << kTECAddTextRunHeuristicsBit,
++ kTECAddFallbackInterruptMask = 1L << kTECAddFallbackInterruptBit
++};
++
++/*
++ -------------------------------------------------------------------------------------------------
++ CONSTANTS for common and special Unicode code values
++ -------------------------------------------------------------------------------------------------
++*/
++
++enum {
++ kUnicodeByteOrderMark = 0xFEFF,
++ kUnicodeObjectReplacement = 0xFFFC, /* placeholder for non-text object*/
++ kUnicodeReplacementChar = 0xFFFD, /* Unicode replacement for unconvertable input char*/
++ kUnicodeSwappedByteOrderMark = 0xFFFE, /* not a Unicode char; byte-swapped version of FEFF*/
++ kUnicodeNotAChar = 0xFFFF /* not a Unicode char; may be used as a terminator*/
++};
++
++
++/*
++ -------------------------------------------------------------------------------------------------
++ CONSTANTS & DATA STRUCTURES for Unicode Properties
++ -------------------------------------------------------------------------------------------------
++*/
++
++typedef SInt32 UCCharPropertyType;
++enum {
++ kUCCharPropTypeGenlCategory = 1, /* requests enumeration value*/
++ kUCCharPropTypeCombiningClass = 2, /* requests numeric value 0..255*/
++ kUCCharPropTypeBidiCategory = 3, /* requests enumeration value*/
++ kUCCharPropTypeDecimalDigitValue = 4 /* requests numeric value 0..9 for decimal digit chars (get err for others)*/
++};
++
++typedef UInt32 UCCharPropertyValue;
++/* General Category enumeration values (requested by kUCCharPropTypeGenlCategory)*/
++enum {
++ /* Normative categories:*/
++ kUCGenlCatOtherNotAssigned = 0, /* Cn Other, Not Assigned*/
++ kUCGenlCatOtherControl = 1, /* Cc Other, Control*/
++ kUCGenlCatOtherFormat = 2, /* Cf Other, Format*/
++ kUCGenlCatOtherSurrogate = 3, /* Cs Other, Surrogate*/
++ kUCGenlCatOtherPrivateUse = 4, /* Co Other, Private Use*/
++ kUCGenlCatMarkNonSpacing = 5, /* Mn Mark, Non-Spacing*/
++ kUCGenlCatMarkSpacingCombining = 6, /* Mc Mark, Spacing Combining*/
++ kUCGenlCatMarkEnclosing = 7, /* Me Mark, Enclosing*/
++ kUCGenlCatNumberDecimalDigit = 8, /* Nd Number, Decimal Digit*/
++ kUCGenlCatNumberLetter = 9, /* Nl Number, Letter*/
++ kUCGenlCatNumberOther = 10, /* No Number, Other*/
++ kUCGenlCatSeparatorSpace = 11, /* Zs Separator, Space*/
++ kUCGenlCatSeparatorLine = 12, /* Zl Separator, Line*/
++ kUCGenlCatSeparatorParagraph = 13, /* Zp Separator, Paragraph*/
++ kUCGenlCatLetterUppercase = 14, /* Lu Letter, Uppercase*/
++ kUCGenlCatLetterLowercase = 15, /* Ll Letter, Lowercase*/
++ kUCGenlCatLetterTitlecase = 16, /* Lt Letter, Titlecase*/
++ /* Informative categories:*/
++ kUCGenlCatLetterModifier = 17, /* Lm Letter, Modifier*/
++ kUCGenlCatLetterOther = 18, /* Lo Letter, Other*/
++ kUCGenlCatPunctConnector = 20, /* Pc Punctuation, Connector*/
++ kUCGenlCatPunctDash = 21, /* Pd Punctuation, Dash*/
++ kUCGenlCatPunctOpen = 22, /* Ps Punctuation, Open*/
++ kUCGenlCatPunctClose = 23, /* Pe Punctuation, Close*/
++ kUCGenlCatPunctInitialQuote = 24, /* Pi Punctuation, Initial quote*/
++ kUCGenlCatPunctFinalQuote = 25, /* Pf Punctuation, Final quote*/
++ kUCGenlCatPunctOther = 26, /* Po Punctuation, Other*/
++ kUCGenlCatSymbolMath = 28, /* Sm Symbol, Math*/
++ kUCGenlCatSymbolCurrency = 29, /* Sc Symbol, Currency*/
++ kUCGenlCatSymbolModifier = 30, /* Sk Symbol, Modifier*/
++ kUCGenlCatSymbolOther = 31 /* So Symbol, Other*/
++};
++
++/* Bidirectional Category enumeration values (requested by kUCCharPropTypeBidiCategory)*/
++enum {
++ kUCBidiCatNotApplicable = 0, /* for now use this for unassigned*/
++ /* Strong types:*/
++ kUCBidiCatLeftRight = 1, /* L Left-to-Right*/
++ kUCBidiCatRightLeft = 2, /* R Right-to-Left*/
++ /* Weak types:*/
++ kUCBidiCatEuroNumber = 3, /* EN European Number*/
++ kUCBidiCatEuroNumberSeparator = 4, /* ES European Number Separator*/
++ kUCBidiCatEuroNumberTerminator = 5, /* ET European Number Terminator*/
++ kUCBidiCatArabicNumber = 6, /* AN Arabic Number*/
++ kUCBidiCatCommonNumberSeparator = 7, /* CS Common Number Separator*/
++ /* Separators:*/
++ kUCBidiCatBlockSeparator = 8, /* B Paragraph Separator (was Block Separator)*/
++ kUCBidiCatSegmentSeparator = 9, /* S Segment Separator*/
++ /* Neutrals:*/
++ kUCBidiCatWhitespace = 10, /* WS Whitespace*/
++ kUCBidiCatOtherNeutral = 11, /* ON Other Neutrals (unassigned codes could use this)*/
++ /* New categories for Unicode 3.0*/
++ kUCBidiCatRightLeftArabic = 12, /* AL Right-to-Left Arabic (was Arabic Letter)*/
++ kUCBidiCatLeftRightEmbedding = 13, /* LRE Left-to-Right Embedding*/
++ kUCBidiCatRightLeftEmbedding = 14, /* RLE Right-to-Left Embedding*/
++ kUCBidiCatLeftRightOverride = 15, /* LRO Left-to-Right Override*/
++ kUCBidiCatRightLeftOverride = 16, /* RLO Right-to-Left Override*/
++ kUCBidiCatPopDirectionalFormat = 17, /* PDF Pop Directional Format*/
++ kUCBidiCatNonSpacingMark = 18, /* NSM Non-Spacing Mark*/
++ kUCBidiCatBoundaryNeutral = 19 /* BN Boundary Neutral*/
++};
++
++
++/*
++ -------------------------------------------------------------------------------------------------
++ Prototypes for TextEncoding functions
++ -------------------------------------------------------------------------------------------------
++*/
++
++
++/*
++ * CreateTextEncoding()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern TextEncoding
++CreateTextEncoding(
++ TextEncodingBase encodingBase,
++ TextEncodingVariant encodingVariant,
++ TextEncodingFormat encodingFormat) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetTextEncodingBase()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern TextEncodingBase
++GetTextEncodingBase(TextEncoding encoding) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetTextEncodingVariant()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern TextEncodingVariant
++GetTextEncodingVariant(TextEncoding encoding) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetTextEncodingFormat()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern TextEncodingFormat
++GetTextEncodingFormat(TextEncoding encoding) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * ResolveDefaultTextEncoding()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern TextEncoding
++ResolveDefaultTextEncoding(TextEncoding encoding) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetTextEncodingName()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern OSStatus
++GetTextEncodingName(
++ TextEncoding iEncoding,
++ TextEncodingNameSelector iNamePartSelector,
++ RegionCode iPreferredRegion,
++ TextEncoding iPreferredEncoding,
++ ByteCount iOutputBufLen,
++ ByteCount * oNameLength,
++ RegionCode * oActualRegion, /* can be NULL */
++ TextEncoding * oActualEncoding, /* can be NULL */
++ TextPtr oEncodingName) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * TECGetInfo()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.2.1 and later
++ */
++extern OSStatus
++TECGetInfo(TECInfoHandle * tecInfo) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ * UpgradeScriptInfoToTextEncoding()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern OSStatus
++UpgradeScriptInfoToTextEncoding(
++ ScriptCode iTextScriptID,
++ LangCode iTextLanguageID,
++ RegionCode iRegionID,
++ ConstStr255Param iTextFontname,
++ TextEncoding * oEncoding) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * RevertTextEncodingToScriptInfo()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.1 and later
++ */
++extern OSStatus
++RevertTextEncodingToScriptInfo(
++ TextEncoding iEncoding,
++ ScriptCode * oTextScriptID,
++ LangCode * oTextLanguageID, /* can be NULL */
++ Str255 oTextFontname) /* can be NULL */ AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * GetTextEncodingFromScriptInfo()
++ *
++ * Summary:
++ * Converts any combination of a Mac OS script code, a language
++ * code, and a region code to a text encoding.
++ *
++ * Discussion:
++ * This function is almost identical to
++ * UpgradeScriptInfoToTextEncoding except it doesn't take a font
++ * name and it is available in CoreServices.
++ *
++ * Parameters:
++ *
++ * iTextScriptID:
++ * A valid Script Manager script code. The Mac OS Script Manager
++ * defines constants for script codes using this format: smXxx. To
++ * designate the system script, specify the meta-value of
++ * smSystemScript. To indicate that you do not want to provide a
++ * script code for this parameter, specify the constant
++ * kTextScriptDontCare.
++ *
++ * iTextLanguageID:
++ * A valid Script Manager language code. The Mac OS Script Manager
++ * defines constants for language codes using this format:
++ * langXxx. To indicate that you do not want to provide a language
++ * code for this parameter, specify the constant
++ * kTextLanguageDontCare.
++ *
++ * iTextRegionID:
++ * A valid Script Manager region code. The Mac OS Script Manager
++ * defines constants for region codes using this format: verXxx.
++ * To indicate that you do not want to provide a region code for
++ * this parameter, specify the constant kTextRegionDontCare.
++ *
++ * oEncoding:
++ * A pointer to a value of type TextEncoding. On return, this
++ * value holds the text encoding specification that the function
++ * created from the other values you provided.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++GetTextEncodingFromScriptInfo(
++ ScriptCode iTextScriptID,
++ LangCode iTextLanguageID,
++ RegionCode iTextRegionID,
++ TextEncoding * oEncoding) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++/*
++ * GetScriptInfoFromTextEncoding()
++ *
++ * Summary:
++ * Converts the given Mac OS text encoding specification to the
++ * corresponding script code and, if possible, language code.
++ *
++ * Discussion:
++ * This function is almost identical to
++ * RevertTextEncodingToScriptInfo except it doesn't return a font
++ * name and it is available in CoreServices.
++ *
++ * Parameters:
++ *
++ * iEncoding:
++ * The text encoding specification to be converted.
++ *
++ * oTextScriptID:
++ * A pointer to a value of type ScriptCode. On return, a Mac OS
++ * script code that corresponds to the text encoding specification
++ * you identified in the iEncoding parameter. If you do not pass a
++ * pointer for this parameter, the function returns a paramErr
++ * result code.
++ *
++ * oTextLanguageID:
++ * A pointer to a value of type LangCode. On input, if you do not
++ * want the function to return the language code, specify NULL as
++ * the value of this parameter. On return, the appropriate
++ * language code, if the language can be unambiguously derived
++ * from the text encoding specification, for example, Japanese,
++ * and you did not set the parameter to NULL. If you do not
++ * specify NULL on input and the language is ambiguous\xD1that is,
++ * the function cannot accurately derive it from the text encoding
++ * specification\xD1the function returns a value of
++ * kTextLanguageDontCare.
++ *
++ * Availability:
++ * Mac OS X: in version 10.2 and later in CoreServices.framework
++ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
++ * Non-Carbon CFM: not available
++ */
++extern OSStatus
++GetScriptInfoFromTextEncoding(
++ TextEncoding iEncoding,
++ ScriptCode * oTextScriptID,
++ LangCode * oTextLanguageID) /* can be NULL */ AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
++
++
++
++/*
++ * NearestMacTextEncodings()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.5 and later
++ */
++extern OSStatus
++NearestMacTextEncodings(
++ TextEncoding generalEncoding,
++ TextEncoding * bestMacEncoding,
++ TextEncoding * alternateMacEncoding) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++/*
++ * UCGetCharProperty()
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework
++ * CarbonLib: in CarbonLib 1.0 and later
++ * Non-Carbon CFM: in TextCommon 1.5 and later
++ */
++extern OSStatus
++UCGetCharProperty(
++ const UniChar * charPtr,
++ UniCharCount textLength,
++ UCCharPropertyType propType,
++ UCCharPropertyValue * propValue) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
++
++
++
++/*
++ -------------------------------------------------------------------------------------------------
++ Surrogate pair utilities
++ -------------------------------------------------------------------------------------------------
++*/
++
++
++
++#if !defined(UC_INLINE)
++ #if defined(__GNUC__)
++ #define UC_INLINE static __inline__
++ #elif defined(__MWERKS__) || defined(__cplusplus)
++ #define UC_INLINE static inline
++ #endif
++#endif
++
++// surrogate ranges
++enum {
++ kUCHighSurrogateRangeStart = 0xD800,
++ kUCHighSurrogateRangeEnd = 0xDBFF,
++ kUCLowSurrogateRangeStart = 0xDC00,
++ kUCLowSurrogateRangeEnd = 0xDFFF
++};
++
++
++/*!
++ @function UCIsSurrogateHighCharacter
++ Reports whether or not the character is a high surrogate.
++ @param character The character to be checked.
++ @result true, if character is a high surrogate, otherwise false.
++*/
++UC_INLINE Boolean UCIsSurrogateHighCharacter( UniChar character ) {
++ /* return ( ( character >= kUCHighSurrogateRangeStart ) && (character <= kUCHighSurrogateRangeEnd ) ? true : false ); */
++ return ( ( character & 0xFC00 ) == kUCHighSurrogateRangeStart );
++}
++
++/*!
++ @function UCIsSurrogateLowCharacter
++ Reports whether or not the character is a low surrogate.
++ @param character The character to be checked.
++ @result true, if character is a low surrogate, otherwise false.
++*/
++UC_INLINE Boolean UCIsSurrogateLowCharacter( UniChar character ) {
++ /* return ( ( character >= kUCLowSurrogateRangeStart ) && ( character <= kUCLowSurrogateRangeEnd ) ? true : false ); */
++ return ( ( character & 0xFC00 ) == kUCLowSurrogateRangeStart );
++}
++
++/*!
++ @function UCGetUnicodeScalarValueForSurrogatePair
++ Returns the UTF-32 value corresponding to the surrogate pair passed in.
++ @param surrogateHigh The high surrogate character. If this parameter
++ is not a valid high surrogate character, the behavior is undefined.
++ @param surrogateLow The low surrogate character. If this parameter
++ is not a valid low surrogate character, the behavior is undefined.
++ @result The UTF-32 value for the surrogate pair.
++*/
++UC_INLINE UnicodeScalarValue UCGetUnicodeScalarValueForSurrogatePair( UniChar surrogateHigh, UniChar surrogateLow ) {
++ return ( ( surrogateHigh - kUCHighSurrogateRangeStart ) << 10 ) + ( surrogateLow - kUCLowSurrogateRangeStart ) + 0x0010000;
++}
++
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __TEXTCOMMON__ */
++
+diff -Nru ../CarbonHeaders-18.1.orig/UTCUtils.h ./UTCUtils.h
+--- ../CarbonHeaders-18.1.orig/UTCUtils.h 1969-12-31 16:00:00.000000000 -0800
++++ ./UTCUtils.h 2009-09-29 14:01:35.000000000 -0700
+@@ -0,0 +1,278 @@
++/*
++ * Copyright (c) 2007-2009 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++/*
++ File: CarbonCore/UTCUtils.h
++
++ Contains: Interface for UTC to Local Time conversion and 64 Bit Clock routines
++
++ Version: CarbonCore-859.2~1
++
++ Copyright: \xA9 1999-2008 by Apple Inc., all rights reserved.
++
++ Bugs?: For bug reports, consult the following page on
++ the World Wide Web:
++
++ http://developer.apple.com/bugreporter/
++
++*/
++#ifndef __UTCUTILS__
++#define __UTCUTILS__
++
++#ifndef __MACTYPES__
++#include <CarbonCore/MacTypes.h>
++#endif
++
++#ifndef __MACERRORS__
++#include <CarbonCore/MacErrors.h>
++#endif
++
++
++
++#include <AvailabilityMacros.h>
++
++#if PRAGMA_ONCE
++#pragma once
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#pragma pack(push, 2)
++
++/* Options for Set & Get DateTime Routines */
++enum {
++ kUTCDefaultOptions = 0
++};
++
++/* 64 Bit Clock Typedefs */
++struct UTCDateTime {
++ UInt16 highSeconds;
++ UInt32 lowSeconds;
++ UInt16 fraction;
++};
++typedef struct UTCDateTime UTCDateTime;
++typedef UTCDateTime * UTCDateTimePtr;
++typedef UTCDateTimePtr * UTCDateTimeHandle;
++struct LocalDateTime {
++ UInt16 highSeconds;
++ UInt32 lowSeconds;
++ UInt16 fraction;
++};
++typedef struct LocalDateTime LocalDateTime;
++typedef LocalDateTime * LocalDateTimePtr;
++typedef LocalDateTimePtr * LocalDateTimeHandle;
++/* Classic 32 bit clock conversion routines */
++#if !__LP64__
++/*
++ * ConvertLocalTimeToUTC() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use
++ * UCConvertUTCDateTimeToCFAbsoluteTime/CFTimeZoneGetSecondsFromGMT
++ * instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * UCConvertUTCDateTimeToCFAbsoluteTime and
++ * CFTimeZoneGetSecondsFromGMT instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++ConvertLocalTimeToUTC(
++ UInt32 localSeconds,
++ UInt32 * utcSeconds) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ConvertUTCToLocalTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use
++ * UCConvertUTCDateTimeToCFAbsoluteTime/CFTimeZoneGetSecondsFromGMT
++ * instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * UCConvertUTCDateTimeToCFAbsoluteTime and
++ * CFTimeZoneGetSecondsFromGMT instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++ConvertUTCToLocalTime(
++ UInt32 utcSeconds,
++ UInt32 * localSeconds) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* 64 bit clock conversion routines */
++/*
++ * ConvertUTCToLocalDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use
++ * UCConvertUTCDateTimeToCFAbsoluteTime/CFTimeZoneGetSecondsFromGMT
++ * instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * UCConvertUTCDateTimeToCFAbsoluteTime and
++ * CFTimeZoneGetSecondsFromGMT instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++ConvertUTCToLocalDateTime(
++ const UTCDateTime * utcDateTime,
++ LocalDateTime * localDateTime) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * ConvertLocalToUTCDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use
++ * UCConvertUTCDateTimeToCFAbsoluteTime/CFTimeZoneGetSecondsFromGMT
++ * instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * UCConvertUTCDateTimeToCFAbsoluteTime and
++ * CFTimeZoneGetSecondsFromGMT instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++ConvertLocalToUTCDateTime(
++ const LocalDateTime * localDateTime,
++ UTCDateTime * utcDateTime) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/* Getter and Setter Clock routines using 64 Bit values */
++/*
++ * GetUTCDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFAbsoluteTimeGetCurrent instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFAbsoluteTimeGetCurrent instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++GetUTCDateTime(
++ UTCDateTime * utcDateTime,
++ OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * SetUTCDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use settimeofday (2) instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Setting the time requires
++ * root privileges. If you must, use settimeofday (2)
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++SetUTCDateTime(
++ const UTCDateTime * utcDateTime,
++ OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * GetLocalDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * use CFAbsoluteTimeGetCurrent/CFTimeZoneGetSecondsFromGMT instead.
++ *
++ * Discussion:
++ * This function is no longer recommended. Please use
++ * CFAbsoluteTimeGetCurrent and CFTimeZoneGetSecondsFromGMT instead.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++GetLocalDateTime(
++ LocalDateTime * localDateTime,
++ OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++/*
++ * SetLocalDateTime() *** DEPRECATED ***
++ *
++ * Deprecated:
++ * it without replacement
++ *
++ * Discussion:
++ * This function is no longer recommended. There is no replacement.
++ *
++ * Availability:
++ * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.4
++ * CarbonLib: in CarbonLib 1.0.2 and later
++ * Non-Carbon CFM: in UTCUtils 1.0 and later
++ */
++extern OSStatus
++SetLocalDateTime(
++ const LocalDateTime * localDateTime,
++ OptionBits options) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4;
++
++
++#endif /* !__LP64__ */
++
++
++#pragma pack(pop)
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __UTCUTILS__ */
++
Added: trunk/patches/IOKitUser-502.nohidevent.patch
===================================================================
--- trunk/patches/IOKitUser-502.nohidevent.patch (rev 0)
+++ trunk/patches/IOKitUser-502.nohidevent.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,32 @@
+Only in ./IOKitUser.xcodeproj: local.pbxuser
+diff -ru ../IOKitUser-502.orig/IOKitUser.xcodeproj/project.pbxproj ./IOKitUser.xcodeproj/project.pbxproj
+--- ../IOKitUser-502.orig/IOKitUser.xcodeproj/project.pbxproj 2009-09-08 15:09:09.000000000 -0700
++++ ./IOKitUser.xcodeproj/project.pbxproj 2009-09-08 15:12:01.000000000 -0700
+@@ -349,9 +349,6 @@
+ 8472D5770CFA183F003111DE /* IOUSBDeviceDataPrivate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8472D46E0CFA0E38003111DE /* IOUSBDeviceDataPrivate.h */; };
+ 8472D57B0CFA1888003111DE /* IOUSBDeviceData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8472D46D0CFA0E38003111DE /* IOUSBDeviceData.h */; };
+ 8473A6B60D06351300DD8515 /* IOHIDEventSystemPrivate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 847A12500C07C3A400F3CCDB /* IOHIDEventSystemPrivate.h */; };
+- 847A125C0C07C3A400F3CCDB /* IOHIDEventSystem.c in Sources */ = {isa = PBXBuildFile; fileRef = 847A124A0C07C3A400F3CCDB /* IOHIDEventSystem.c */; };
+- 847A125D0C07C3A400F3CCDB /* IOHIDEventSystem.defs in Sources */ = {isa = PBXBuildFile; fileRef = 847A124B0C07C3A400F3CCDB /* IOHIDEventSystem.defs */; settings = {ATTRIBUTES = (Client, Server, ); }; };
+- 847A125E0C07C3A400F3CCDB /* IOHIDEventSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 847A124C0C07C3A400F3CCDB /* IOHIDEventSystem.h */; };
+ 847A125F0C07C3A400F3CCDB /* IOHIDEventSystemClient.c in Sources */ = {isa = PBXBuildFile; fileRef = 847A124D0C07C3A400F3CCDB /* IOHIDEventSystemClient.c */; };
+ 847A12600C07C3A400F3CCDB /* IOHIDEventSystemClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 847A124E0C07C3A400F3CCDB /* IOHIDEventSystemClient.h */; };
+ 847A12610C07C3A400F3CCDB /* IOHIDEventSystemKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 847A124F0C07C3A400F3CCDB /* IOHIDEventSystemKeys.h */; };
+@@ -2042,7 +2039,6 @@
+ 843C1FF00C0790410009057F /* IOHIDEvent.h in Headers */,
+ 843C1FF90C0792DB0009057F /* IOHIDServicePlugIn.h in Headers */,
+ 843C1FFC0C0792FA0009057F /* IOHIDServiceKeys.h in Headers */,
+- 847A125E0C07C3A400F3CCDB /* IOHIDEventSystem.h in Headers */,
+ 847A12600C07C3A400F3CCDB /* IOHIDEventSystemClient.h in Headers */,
+ 847A12610C07C3A400F3CCDB /* IOHIDEventSystemKeys.h in Headers */,
+ 847A12620C07C3A400F3CCDB /* IOHIDEventSystemPrivate.h in Headers */,
+@@ -2457,8 +2453,6 @@
+ 844A55E50A54A92E00FAE0BC /* IOHIDQueue.c in Sources */,
+ 844A55E60A54A92E00FAE0BC /* IOHIDTransaction.c in Sources */,
+ 843C1FEF0C0790410009057F /* IOHIDEvent.c in Sources */,
+- 847A125C0C07C3A400F3CCDB /* IOHIDEventSystem.c in Sources */,
+- 847A125D0C07C3A400F3CCDB /* IOHIDEventSystem.defs in Sources */,
+ 847A125F0C07C3A400F3CCDB /* IOHIDEventSystemClient.c in Sources */,
+ 847A12630C07C3A400F3CCDB /* IOHIDNotification.c in Sources */,
+ 847A12650C07C3A400F3CCDB /* IOHIDService.c in Sources */,
+Only in ./: build
Added: trunk/patches/PowerManagement-209.1.unused_symbols.patch
===================================================================
--- trunk/patches/PowerManagement-209.1.unused_symbols.patch (rev 0)
+++ trunk/patches/PowerManagement-209.1.unused_symbols.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,112 @@
+diff -ru ../PowerManagement-209.1.orig/AppleSmartBatteryManager/AppleSmartBattery.cpp ./AppleSmartBatteryManager/AppleSmartBattery.cpp
+--- ../PowerManagement-209.1.orig/AppleSmartBatteryManager/AppleSmartBattery.cpp 2009-09-08 18:52:54.000000000 -0700
++++ ./AppleSmartBatteryManager/AppleSmartBattery.cpp 2009-09-08 18:53:54.000000000 -0700
+@@ -601,8 +601,6 @@
+ // scratch variables
+ int16_t my_signed_16;
+ uint16_t my_unsigned_16;
+- OSNumber *writeNum;
+- unsigned long long writeByte;
+ OSNumber *cell_volt_num = NULL;
+ OSNumber *pfstatus_num = NULL;
+
+diff -ru ../PowerManagement-209.1.orig/pmconfigd/PrivateLib.c ./pmconfigd/PrivateLib.c
+--- ../PowerManagement-209.1.orig/pmconfigd/PrivateLib.c 2009-09-08 18:52:55.000000000 -0700
++++ ./pmconfigd/PrivateLib.c 2009-09-08 19:08:53.000000000 -0700
+@@ -337,12 +337,6 @@
+ return found;
+ }
+
+-
+-static int _designCycleCountForBattery(IOPMBattery *b)
+-{
+- return 300;
+-}
+-
+ static void _unpackBatteryState(IOPMBattery *b, CFDictionaryRef prop)
+ {
+ CFBooleanRef boo;
+diff -ru ../PowerManagement-209.1.orig/pmconfigd/pmconfigd.c ./pmconfigd/pmconfigd.c
+--- ../PowerManagement-209.1.orig/pmconfigd/pmconfigd.c 2009-09-08 18:52:55.000000000 -0700
++++ ./pmconfigd/pmconfigd.c 2009-09-08 19:08:29.000000000 -0700
+@@ -140,9 +140,6 @@
+
+ static void pushNewSleepWakeUUID(void);
+ static void persistentlyStoreCurrentUUID(void);
+-static IOReturn copyPersistentlyStoredUUID(
+- CFStringRef *outUUID,
+- CFDateRef *outTimestamp);
+
+ static void calendarRTCDidResync(
+ CFMachPortRef port,
+@@ -901,59 +898,6 @@
+ return;
+ }
+
+-/* copyPersistentlyStoredUUID
+- *
+- * Returns kIOReturn on success. If successful, both arguments are pointers to CF objects, and
+- * it is the caller's responsibility to release them.
+- * If an IO error is returned, both pointers will be set to NULL and should not be released.
+- */
+-static IOReturn copyPersistentlyStoredUUID(CFStringRef *outUUID, CFDateRef *outTimestamp)
+-{
+- CFDictionaryRef lastKnownDictionary = NULL;
+- CFStringRef lastKnownUUID = NULL;
+- CFDateRef lastKnownDate = NULL;
+- SCPreferencesRef prefs = NULL;
+- IOReturn ret = kIOReturnSuccess;
+-
+- if (NULL == outUUID || NULL == outTimestamp) {
+- ret = kIOReturnBadArgument;
+- goto exit;
+- }
+-
+- *outUUID = NULL;
+- *outTimestamp = NULL;
+-
+- prefs = SCPreferencesCreate(0, CFSTR("PowerManagement UUID Temp Storage"),
+- CFSTR("com.apple.PowerManagement.plist"));
+- if (!prefs) {
+- ret = kIOReturnError;
+- goto exit;
+- }
+- lastKnownDictionary = isA_CFDictionary(SCPreferencesGetValue(prefs, CFSTR(kPMSettingsCachedUUIDKey)));
+- if (!lastKnownDictionary) {
+- ret = kIOReturnNotFound;
+- goto exit;
+- }
+-
+- lastKnownUUID = isA_CFString(CFDictionaryGetValue(lastKnownDictionary,
+- CFSTR(kPMSettingsDictionaryUUIDKey)));
+- lastKnownDate = isA_CFDate(CFDictionaryGetValue(lastKnownDictionary,
+- CFSTR(kPMSettingsDictionaryDateKey)));
+-
+- if (lastKnownUUID && lastKnownDate)
+- {
+- *outUUID = CFRetain(lastKnownUUID);
+- *outTimestamp = CFRetain(lastKnownDate);
+- } else {
+- ret = kIOReturnInternalError;
+- }
+-
+-exit:
+- if (prefs)
+- CFRelease(prefs);
+- return ret;
+-}
+-
+ static boolean_t
+ pm_mig_demux(
+ mach_msg_header_t * request,
+diff -ru ../PowerManagement-209.1.orig/pmset/pmset.c ./pmset/pmset.c
+--- ../PowerManagement-209.1.orig/pmset/pmset.c 2009-09-08 18:52:55.000000000 -0700
++++ ./pmset/pmset.c 2009-09-08 19:10:45.000000000 -0700
+@@ -2272,7 +2272,6 @@
+ int cur_cap = -1;
+ int max_cap = -1;
+ int cur_cycles = -1;
+- int max_cycles = -1;
+ CFMutableDictionaryRef prop = NULL;
+ IOReturn ret;
+
Added: trunk/patches/SmartCardServices-34733.MacTypes.patch
===================================================================
--- trunk/patches/SmartCardServices-34733.MacTypes.patch (rev 0)
+++ trunk/patches/SmartCardServices-34733.MacTypes.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,88 @@
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/PCSCDevice.h ./src/PCSC/PCSCDevice.h
+--- ../SmartCardServices-34733.orig/src/PCSC/PCSCDevice.h 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/PCSCDevice.h 2009-07-08 15:39:08.000000000 -0700
+@@ -30,6 +30,7 @@
+ #ifndef _H_PCSCDEVICE
+ #define _H_PCSCDEVICE
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/iodevices.h>
+ #include <security_utilities/refcount.h>
+
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/PCSCDriverBundle.h ./src/PCSC/PCSCDriverBundle.h
+--- ../SmartCardServices-34733.orig/src/PCSC/PCSCDriverBundle.h 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/PCSCDriverBundle.h 2009-07-08 15:41:29.000000000 -0700
+@@ -31,6 +31,7 @@
+
+ #include <string>
+ #include <vector>
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/refcount.h>
+ #include <security_utilities/osxcode.h>
+ #include "PCSCDevice.h"
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/hotplug_macosx.cpp ./src/PCSC/hotplug_macosx.cpp
+--- ../SmartCardServices-34733.orig/src/PCSC/hotplug_macosx.cpp 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/hotplug_macosx.cpp 2009-07-08 15:38:14.000000000 -0700
+@@ -29,6 +29,7 @@
+
+ ********************************************************************/
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include "wintypes.h"
+
+ #include "hotplug.h"
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/pcscdmonitor.h ./src/PCSC/pcscdmonitor.h
+--- ../SmartCardServices-34733.orig/src/PCSC/pcscdmonitor.h 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/pcscdmonitor.h 2009-07-08 15:40:40.000000000 -0700
+@@ -28,6 +28,7 @@
+ #ifndef _H_PCSCDMONITOR
+ #define _H_PCSCDMONITOR
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/powerwatch.h>
+ #include <security_utilities/pcsc++.h>
+ #include <security_utilities/refcount.h>
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/pcscdserver.h ./src/PCSC/pcscdserver.h
+--- ../SmartCardServices-34733.orig/src/PCSC/pcscdserver.h 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/pcscdserver.h 2009-07-08 15:39:59.000000000 -0700
+@@ -27,6 +27,7 @@
+ #ifndef _H_PCSCDSERVER
+ #define _H_PCSCDSERVER
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/machserver.h>
+ #include <security_utilities/powerwatch.h>
+ #include <map>
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/reader.h ./src/PCSC/reader.h
+--- ../SmartCardServices-34733.orig/src/PCSC/reader.h 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/reader.h 2009-07-08 15:40:55.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _H_PCSCD_READER
+ #define _H_PCSCD_READER
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include "wintypes.h"
+ #include "pcsclite.h"
+ #include "readerfactory.h"
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/readerstate.h ./src/PCSC/readerstate.h
+--- ../SmartCardServices-34733.orig/src/PCSC/readerstate.h 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/readerstate.h 2009-07-08 14:41:10.000000000 -0700
+@@ -33,6 +33,7 @@
+ #include "pcsclite.h"
+ #include "readerfactory.h"
+ #include "eventhandler.h"
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+
+ #ifdef __cplusplus
+ extern "C"
+diff -ru ../SmartCardServices-34733.orig/src/PCSC/sys_macosx.cpp ./src/PCSC/sys_macosx.cpp
+--- ../SmartCardServices-34733.orig/src/PCSC/sys_macosx.cpp 2009-07-08 14:40:32.000000000 -0700
++++ ./src/PCSC/sys_macosx.cpp 2009-07-08 15:36:59.000000000 -0700
+@@ -44,6 +44,7 @@
+ #include <stdlib.h>
+ #include <signal.h>
+ #include <time.h>
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include "pcscexport.h"
+ #include "debug.h"
+
Added: trunk/patches/Tokend-35209.MacTypes.patch
===================================================================
--- trunk/patches/Tokend-35209.MacTypes.patch (rev 0)
+++ trunk/patches/Tokend-35209.MacTypes.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,167 @@
+diff -ru ../Tokend-35209.orig/PIV/PIVDefines.h ./PIV/PIVDefines.h
+--- ../Tokend-35209.orig/PIV/PIVDefines.h 2008-10-02 15:03:39.000000000 -0700
++++ ./PIV/PIVDefines.h 2009-05-18 14:18:32.000000000 -0700
+@@ -29,6 +29,8 @@
+ #ifndef _PIVDEFINES_H_
+ #define _PIVDEFINES_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
++
+ /*
+ For the PIV tokend, refer to NIST Specical Publication 800-73-1, "Interfaces
+ for Personal Identity Verification". The define for CLA_STANDARD comes from 2.3.3.1.1. [SP800731]
+diff -ru ../Tokend-35209.orig/PIV/byte_string.h ./PIV/byte_string.h
+--- ../Tokend-35209.orig/PIV/byte_string.h 2008-10-02 15:03:39.000000000 -0700
++++ ./PIV/byte_string.h 2009-05-18 14:19:06.000000000 -0700
+@@ -23,6 +23,8 @@
+
+ #ifndef BYTE_STRING
+ #define BYTE_STRING
++
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <vector>
+
+ /** Utility definition and additional operators to make working with
+diff -ru ../Tokend-35209.orig/Tokend/Adornment.h ./Tokend/Adornment.h
+--- ../Tokend-35209.orig/Tokend/Adornment.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/Adornment.h 2009-05-18 13:50:09.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_ADORNMENT_H_
+ #define _TOKEND_ADORNMENT_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/adornments.h>
+ #include <security_utilities/refcount.h>
+ #include <Security/SecCertificate.h>
+diff -ru ../Tokend-35209.orig/Tokend/Attribute.h ./Tokend/Attribute.h
+--- ../Tokend-35209.orig/Tokend/Attribute.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/Attribute.h 2009-05-18 13:50:09.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_ATTRIBUTE_H_
+ #define _TOKEND_ATTRIBUTE_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <Security/cssmtype.h>
+ #include <security_cdsa_utilities/cssmdb.h>
+ #include <string>
+diff -ru ../Tokend-35209.orig/Tokend/AttributeCoder.h ./Tokend/AttributeCoder.h
+--- ../Tokend-35209.orig/Tokend/AttributeCoder.h 2008-10-02 15:03:39.000000000 -0700
++++ ./Tokend/AttributeCoder.h 2009-05-18 13:56:14.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_ATTRIBUTECODER_H_
+ #define _TOKEND_ATTRIBUTECODER_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/utilities.h>
+ #include <Security/cssmtype.h>
+
+diff -ru ../Tokend-35209.orig/Tokend/DbValue.h ./Tokend/DbValue.h
+--- ../Tokend-35209.orig/Tokend/DbValue.h 2008-10-02 15:03:39.000000000 -0700
++++ ./Tokend/DbValue.h 2009-05-18 13:50:09.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_DBVALUE_H_
+ #define _TOKEND_DBVALUE_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_cdsa_utilities/cssmdata.h>
+ #include <security_cdsa_utilities/cssmdb.h>
+ #include <Security/cssmerr.h>
+diff -ru ../Tokend-35209.orig/Tokend/MetaRecord.h ./Tokend/MetaRecord.h
+--- ../Tokend-35209.orig/Tokend/MetaRecord.h 2008-10-02 15:03:39.000000000 -0700
++++ ./Tokend/MetaRecord.h 2009-05-18 13:50:09.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_METARECORD_H_
+ #define _TOKEND_METARECORD_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_cdsa_utilities/cssmdata.h>
+ #include <map>
+ #include <string>
+diff -ru ../Tokend-35209.orig/Tokend/PKCS11Object.h ./Tokend/PKCS11Object.h
+--- ../Tokend-35209.orig/Tokend/PKCS11Object.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/PKCS11Object.h 2009-05-18 13:57:46.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_PKCS11OBJECT_H_
+ #define _TOKEND_PKCS11OBJECT_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <stdint.h>
+ #include <map>
+ #include <security_utilities/debugging.h>
+diff -ru ../Tokend-35209.orig/Tokend/Record.h ./Tokend/Record.h
+--- ../Tokend-35209.orig/Tokend/Record.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/Record.h 2009-05-18 13:50:09.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_RECORD_H_
+ #define _TOKEND_RECORD_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include "AttributeCoder.h"
+ #include "MetaRecord.h"
+ #include "Attribute.h"
+diff -ru ../Tokend-35209.orig/Tokend/RecordHandle.h ./Tokend/RecordHandle.h
+--- ../Tokend-35209.orig/Tokend/RecordHandle.h 2008-10-02 15:03:39.000000000 -0700
++++ ./Tokend/RecordHandle.h 2009-05-18 13:50:09.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_RECORDHANDLE_H_
+ #define _TOKEND_RECORDHANDLE_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_cdsa_utilities/handleobject.h>
+ #include <security_utilities/refcount.h>
+ #include <security_cdsa_utilities/cssmaclpod.h>
+diff -ru ../Tokend-35209.orig/Tokend/SCardError.h ./Tokend/SCardError.h
+--- ../Tokend-35209.orig/Tokend/SCardError.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/SCardError.h 2009-05-18 13:49:37.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_SCARDERROR_H_
+ #define _TOKEND_SCARDERROR_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/debugging.h>
+ #include <security_utilities/errors.h>
+
+diff -ru ../Tokend-35209.orig/Tokend/Schema.h ./Tokend/Schema.h
+--- ../Tokend-35209.orig/Tokend/Schema.h 2008-10-02 15:03:39.000000000 -0700
++++ ./Tokend/Schema.h 2009-05-18 13:49:48.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_SCHEMA_H_
+ #define _TOKEND_SCHEMA_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_cdsa_utilities/cssmdata.h>
+ #include <security_cdsa_utilities/cssmdb.h>
+ #include <map>
+diff -ru ../Tokend-35209.orig/Tokend/SelectionPredicate.h ./Tokend/SelectionPredicate.h
+--- ../Tokend-35209.orig/Tokend/SelectionPredicate.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/SelectionPredicate.h 2009-05-18 13:49:59.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_SELECTIONPREDICATE_H_
+ #define _TOKEND_SELECTIONPREDICATE_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_cdsa_utilities/cssmdata.h>
+
+ namespace Tokend
+diff -ru ../Tokend-35209.orig/Tokend/Token.h ./Tokend/Token.h
+--- ../Tokend-35209.orig/Tokend/Token.h 2008-10-02 15:03:38.000000000 -0700
++++ ./Tokend/Token.h 2009-05-18 13:53:04.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_TOKEN_H_
+ #define _TOKEND_TOKEN_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <SecurityTokend/SecTokend.h>
+ #include <security_utilities/osxcode.h>
+ #include <security_cdsa_utilities/context.h>
+diff -ru ../Tokend-35209.orig/Tokend/TokenContext.h ./Tokend/TokenContext.h
+--- ../Tokend-35209.orig/Tokend/TokenContext.h 2008-10-02 15:03:39.000000000 -0700
++++ ./Tokend/TokenContext.h 2009-05-18 13:53:22.000000000 -0700
+@@ -29,6 +29,7 @@
+ #ifndef _TOKEND_TOKENCONTEXT_H_
+ #define _TOKEND_TOKENCONTEXT_H_
+
++#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+ #include <security_utilities/utilities.h>
+
+ namespace Tokend
Added: trunk/patches/clamav-125.noupdate.patch
===================================================================
--- trunk/patches/clamav-125.noupdate.patch (rev 0)
+++ trunk/patches/clamav-125.noupdate.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,14 @@
+diff -ru ../clamav-125.orig/Makefile ../clamav-125/Makefile
+--- ../clamav-125.orig/Makefile 2009-09-11 18:30:19.000000000 -0700
++++ ../clamav-125/Makefile 2009-09-11 18:31:00.000000000 -0700
+@@ -128,9 +128,6 @@
+ fi
+ $(SILENT) ($(CD) "$(SRCROOT)$(CLAMAV_BUILD_DIR)" && make CFLAGS="$(CFLAGS)")
+ $(SILENT) ($(CD) "$(SRCROOT)$(CLAMAV_BUILD_DIR)" && make "DESTDIR=$(SRCROOT)/$(TEMP_DIR)" CFLAGS="$(CFLAGS)" install)
+- install -m 0755 "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/UpgradeClamAV" \
+- "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/66_clamav_migrator"
+- $(SILENT) ($(RM) -rf "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/UpgradeClamAV")
+
+ # Create install directories
+ install -d -m 0755 "$(DSTROOT)$(ETC_DIR)"
+
Added: trunk/patches/launchd-258.22.CFNotification.patch
===================================================================
--- trunk/patches/launchd-258.22.CFNotification.patch (rev 0)
+++ trunk/patches/launchd-258.22.CFNotification.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,18 @@
+Only in ./: build
+diff -ru ../launchd-258.22.orig/launchd/src/SystemStarter.c ./launchd/src/SystemStarter.c
+--- ../launchd-258.22.orig/launchd/src/SystemStarter.c 2009-07-16 15:30:00.000000000 -0700
++++ ./launchd/src/SystemStarter.c 2009-07-16 15:36:37.000000000 -0700
+@@ -152,12 +152,6 @@
+ fwexec(_PATH_BSHELL, "/etc/rc.local", NULL);
+ }
+
+- CFNotificationCenterPostNotificationWithOptions(
+- CFNotificationCenterGetDistributedCenter(),
+- CFSTR("com.apple.startupitems.completed"),
+- NULL, NULL,
+- kCFNotificationDeliverImmediately | kCFNotificationPostToAllSessions);
+-
+ r = kevent(kq, NULL, 0, &kev, 1, NULL);
+ assert(r != -1);
+ assert(kev.filter == EVFILT_SIGNAL && kev.ident == SIGTERM);
+Only in ./launchd.xcodeproj: wms.pbxuser
Added: trunk/patches/ppp-412.xauthvendor.patch
===================================================================
--- trunk/patches/ppp-412.xauthvendor.patch (rev 0)
+++ trunk/patches/ppp-412.xauthvendor.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,11 @@
+diff -ru ../ppp-412.orig/Controller/ipsec_manager.c ./Controller/ipsec_manager.c
+--- ../ppp-412.orig/Controller/ipsec_manager.c 2009-09-09 18:46:52.000000000 -0700
++++ ./Controller/ipsec_manager.c 2009-09-09 18:48:10.000000000 -0700
+@@ -308,7 +308,6 @@
+ case XAUTH_STATUS: return "XAUTH_STATUS";
+ case XAUTH_NEXT_PIN: return "XAUTH_NEXT_PIN";
+ case XAUTH_ANSWER: return "XAUTH_ANSWER";
+- case XAUTH_VENDOR: return "XAUTH_VENDOR";
+ }
+ return "XAUTH_TYPE unknown type";
+ }
Added: trunk/patches/system_cmds-433.8.patch
===================================================================
--- trunk/patches/system_cmds-433.8.patch (rev 0)
+++ trunk/patches/system_cmds-433.8.patch 2009-09-29 22:46:10 UTC (rev 582)
@@ -0,0 +1,295 @@
+diff -ru ../system_cmds-433.8.orig/arch.tproj/Makefile ./arch.tproj/Makefile
+--- ../system_cmds-433.8.orig/arch.tproj/Makefile 2009-07-10 19:54:16.000000000 -0700
++++ ./arch.tproj/Makefile 2009-07-10 21:21:45.000000000 -0700
+@@ -1,18 +1,16 @@
+ Project = arch
+ Install_Dir = /usr/bin
+
+-MFILES = arch.m
+-Extra_Frameworks = -framework Foundation
+-
+ MANPAGES = arch.1 machine.1
+
+-Extra_CC_Flags = -DARCH_PROG=\"arch\" -DMACHINE_PROG=\"machine\"
+-
+ include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
+
+ HELPERDIR = /AppleInternal/Developer/Tools
+ after_install:
+- @-$(RM) -f $(DSTROOT)$(INSTALLDIR)/machine
++ echo "#!/bin/sh" > $(DSTROOT)$(Install_Dir)/arch
++ echo "uname -m" >> $(DSTROOT)$(Install_Dir)/arch
++ /bin/chmod a+x $(DSTROOT)$(Install_Dir)/arch
++ @-$(RM) -f $(DSTROOT)$(Install_Dir)/machine
+ $(LN) -h $(DSTROOT)$(Install_Dir)/arch $(DSTROOT)$(Install_Dir)/machine
+ $(INSTALL_DIRECTORY) -d $(DSTROOT)$(HELPERDIR)
+ $(INSTALL_SCRIPT) arch_helper.pl $(DSTROOT)$(HELPERDIR)
+diff -ru ../system_cmds-433.8.orig/iostat.tproj/iostat.c ./iostat.tproj/iostat.c
+--- ../system_cmds-433.8.orig/iostat.tproj/iostat.c 2009-07-10 19:54:16.000000000 -0700
++++ ./iostat.tproj/iostat.c 2009-07-10 21:36:53.000000000 -0700
+@@ -169,7 +169,7 @@
+
+ static int num_devices;
+ static int maxshowdevs;
+-static int dflag = 0, Iflag = 0, Cflag = 0, Tflag = 0, oflag = 0, Uflag = 0, Kflag = 0;
++static int dflag = 0, Iflag = 0, Cflag = 0, Tflag = 0, oflag = 0, Uflag = 0, Kflag = 0, kNilOptions = 0;
+ static volatile sig_atomic_t phdr_flag = 0;
+ static IONotificationPortRef notifyPort;
+
+diff -ru ../system_cmds-433.8.orig/reboot.tproj/Makefile ./reboot.tproj/Makefile
+--- ../system_cmds-433.8.orig/reboot.tproj/Makefile 2009-07-10 19:54:16.000000000 -0700
++++ ./reboot.tproj/Makefile 2009-07-15 22:44:41.000000000 -0700
+@@ -5,9 +5,6 @@
+ MANPAGES = reboot.8
+
+ Embedded = $(shell tconf --test TARGET_OS_EMBEDDED)
+-ifeq ($(Embedded),NO)
+-USERDEFS = kextmanager.defs
+-endif
+
+ include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
+
+diff -ru ../system_cmds-433.8.orig/reboot.tproj/reboot.c ./reboot.tproj/reboot.c
+--- ../system_cmds-433.8.orig/reboot.tproj/reboot.c 2009-07-10 19:54:16.000000000 -0700
++++ ./reboot.tproj/reboot.c 2009-07-15 22:47:02.000000000 -0700
+@@ -59,10 +59,6 @@
+
+ #ifdef __APPLE__
+ #include <TargetConditionals.h>
+-#if !TARGET_OS_EMBEDDED
+-#include "kextmanager.h"
+-#include <IOKit/kext/kextmanager_types.h>
+-#endif
+ #include <mach/mach_port.h> // allocate
+ #include <mach/mach.h> // task_self, etc
+ #include <servers/bootstrap.h> // bootstrap
+@@ -71,9 +67,6 @@
+
+ void usage(void);
+ u_int get_pageins(void);
+-#if defined(__APPLE__) && !TARGET_OS_EMBEDDED
+-int reserve_reboot(void);
+-#endif
+
+ int dohalt;
+
+@@ -149,12 +142,6 @@
+ err(1, NULL);
+ }
+
+-#if defined(__APPLE__) && !TARGET_OS_EMBEDDED
+- if (!lflag) { // shutdown(8) has already checked w/kextd
+- if ((errno = reserve_reboot()) && !qflag)
+- err(1, "couldn't lock for reboot");
+- }
+-#endif
+
+ if (qflag) {
+ #ifdef __APPLE__
+@@ -291,62 +278,3 @@
+ return pageins;
+ }
+
+-#if defined(__APPLE__) && !TARGET_OS_EMBEDDED
+-// XX this routine is also in shutdown.tproj; it would be nice to share
+-
+-#define WAITFORLOCK 1
+-/*
+- * contact kextd to lock for reboot
+- */
+-int
+-reserve_reboot()
+-{
+- int rval = ELAST + 1;
+- kern_return_t macherr = KERN_FAILURE;
+- mach_port_t kxport, tport = MACH_PORT_NULL, myport = MACH_PORT_NULL;
+- int busyStatus = ELAST + 1;
+- mountpoint_t busyVol;
+-
+- macherr = bootstrap_look_up(bootstrap_port, KEXTD_SERVER_NAME, &kxport);
+- if (macherr) goto finish;
+-
+- // allocate a port to pass to kextd (in case we die)
+- tport = mach_task_self();
+- if (tport == MACH_PORT_NULL) goto finish;
+- macherr = mach_port_allocate(tport, MACH_PORT_RIGHT_RECEIVE, &myport);
+- if (macherr) goto finish;
+-
+- // try to lock for reboot
+- macherr = kextmanager_lock_reboot(kxport, myport, !WAITFORLOCK, busyVol,
+- &busyStatus);
+- if (macherr) goto finish;
+-
+- if (busyStatus == EBUSY) {
+- warnx("%s is busy updating; waiting for lock", busyVol);
+- macherr = kextmanager_lock_reboot(kxport, myport, WAITFORLOCK,
+- busyVol, &busyStatus);
+- if (macherr) goto finish;
+- }
+-
+- if (busyStatus == EALREADY) {
+- // reboot already in progress
+- rval = 0;
+- } else {
+- rval = busyStatus;
+- }
+-
+-finish:
+- // in general, we want to err on the side of allowing the reboot
+- if (macherr) {
+- if (macherr != BOOTSTRAP_UNKNOWN_SERVICE)
+- warnx("WARNING: couldn't lock kext manager for reboot: %s",
+- mach_error_string(macherr));
+- rval = 0;
+- }
+- // unless we got the lock, clean up our port
+- if (busyStatus != 0 && myport != MACH_PORT_NULL)
+- mach_port_mod_refs(tport, myport, MACH_PORT_RIGHT_RECEIVE, -1);
+-
+- return rval;
+-}
+-#endif
+diff -ru ../system_cmds-433.8.orig/sadc.tproj/sadc.c ./sadc.tproj/sadc.c
+--- ../system_cmds-433.8.orig/sadc.tproj/sadc.c 2009-07-10 19:54:16.000000000 -0700
++++ ./sadc.tproj/sadc.c 2009-07-15 22:52:37.000000000 -0700
+@@ -49,6 +49,7 @@
+
+ FILE *data_fp = (FILE *)0; /* raw data output file pointer */
+
++int kNilOptions = 0;
+
+ #define REVISION_HISTORY_DATE 20030718
+
+diff -ru ../system_cmds-433.8.orig/shutdown.tproj/Makefile ./shutdown.tproj/Makefile
+--- ../system_cmds-433.8.orig/shutdown.tproj/Makefile 2009-07-10 19:54:16.000000000 -0700
++++ ./shutdown.tproj/Makefile 2009-07-15 23:08:02.000000000 -0700
+@@ -3,7 +3,6 @@
+
+ HFILES = pathnames.h
+ CFILES = shutdown.c
+-USERDEFS = kextmanager.defs
+ MANPAGES = shutdown.8
+
+ Extra_Frameworks = -framework IOKit
+diff -ru ../system_cmds-433.8.orig/shutdown.tproj/shutdown.c ./shutdown.tproj/shutdown.c
+--- ../system_cmds-433.8.orig/shutdown.tproj/shutdown.c 2009-07-10 19:54:16.000000000 -0700
++++ ./shutdown.tproj/shutdown.c 2009-07-15 22:59:47.000000000 -0700
+@@ -67,8 +67,6 @@
+ #include <bsm/libbsm.h>
+ #include <bsm/audit_uevents.h>
+
+-#include "kextmanager.h"
+-#include <IOKit/kext/kextmanager_types.h>
+ #include <IOKit/pwr_mgt/IOPMLib.h>
+ #include <mach/mach_port.h> // allocate
+ #include <mach/mach.h> // task_self, etc
+@@ -134,7 +132,6 @@
+ void usage(const char *);
+ #ifdef __APPLE__
+ int audit_shutdown(int);
+-int reserve_reboot(void);
+ #endif
+
+ extern const char **environ;
+@@ -406,12 +403,7 @@
+ die_you_gravy_sucking_pig_dog()
+ #endif
+ {
+-#ifndef __APPLE__
+ char *empty_environ[] = { NULL };
+-#else
+- if ((errno = reserve_reboot()))
+- err(1, "couldn't lock for reboot");
+-#endif
+
+ syslog(LOG_NOTICE, "%s%s by %s: %s",
+ #ifndef __APPLE__
+@@ -696,64 +688,5 @@
+ }
+ return 1;
+ }
+-
+-
+-// XX copied from reboot.tproj/reboot.c; it would be nice to share the code
+-
+-#define WAITFORLOCK 1
+-/*
+- * contact kextd to lock for reboot
+- */
+-int
+-reserve_reboot()
+-{
+- int rval = ELAST + 1;
+- kern_return_t macherr = KERN_FAILURE;
+- mach_port_t kxport, tport = MACH_PORT_NULL, myport = MACH_PORT_NULL;
+- int busyStatus = ELAST + 1;
+- mountpoint_t busyVol;
+-
+- macherr = bootstrap_look_up(bootstrap_port, KEXTD_SERVER_NAME, &kxport);
+- if (macherr) goto finish;
+-
+- // allocate a port to pass to kextd (in case we die)
+- tport = mach_task_self();
+- if (tport == MACH_PORT_NULL) goto finish;
+- macherr = mach_port_allocate(tport, MACH_PORT_RIGHT_RECEIVE, &myport);
+- if (macherr) goto finish;
+-
+- // try to lock for reboot
+- macherr = kextmanager_lock_reboot(kxport, myport, !WAITFORLOCK, busyVol,
+- &busyStatus);
+- if (macherr) goto finish;
+-
+- if (busyStatus == EBUSY) {
+- warnx("%s is busy updating; waiting for lock", busyVol);
+- macherr = kextmanager_lock_reboot(kxport, myport, WAITFORLOCK,
+- busyVol, &busyStatus);
+- if (macherr) goto finish;
+- }
+-
+- if (busyStatus == EALREADY) {
+- // reboot already in progress
+- rval = 0;
+- } else {
+- rval = busyStatus;
+- }
+-
+-finish:
+- // in general, we want to err on the side of allowing the reboot
+- if (macherr) {
+- if (macherr != BOOTSTRAP_UNKNOWN_SERVICE)
+- warnx("WARNING: couldn't lock kext manager for reboot: %s",
+- mach_error_string(macherr));
+- rval = 0;
+- }
+- // unless we got the lock, clean up our port
+- if (busyStatus != 0 && myport != MACH_PORT_NULL)
+- mach_port_mod_refs(tport, myport, MACH_PORT_RIGHT_RECEIVE, -1);
+-
+- return rval;
+-}
+-#endif /* __APPLE__ */
++#endif
+
+diff -ru ../system_cmds-433.8.orig/update.tproj/update.c ./update.tproj/update.c
+--- ../system_cmds-433.8.orig/update.tproj/update.c 2009-07-10 19:54:16.000000000 -0700
++++ ./update.tproj/update.c 2009-07-15 22:49:55.000000000 -0700
+@@ -20,7 +20,6 @@
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+-#include <sandbox.h>
+ #include <stdio.h>
+ #include <unistd.h>
+
+@@ -29,11 +28,6 @@
+ {
+ const char* progname = "update";
+ char* errmsg;
+- int res = sandbox_init(progname, SANDBOX_NAMED, &errmsg);
+- if (res) {
+- fprintf(stderr, "%s: sandbox_init: %s\n", progname, errmsg);
+- sandbox_free_error(errmsg);
+- }
+
+ for (;;) {
+ sleep(30);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20090929/4a20776b/attachment-0001.html>
More information about the darwinbuild-changes
mailing list