]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/morefile/MoreFilesExtras.h
renaming
[wxWidgets.git] / src / mac / carbon / morefile / MoreFilesExtras.h
diff --git a/src/mac/carbon/morefile/MoreFilesExtras.h b/src/mac/carbon/morefile/MoreFilesExtras.h
deleted file mode 100644 (file)
index 285dfa7..0000000
+++ /dev/null
@@ -1,3597 +0,0 @@
-/*
-     File:       MoreFilesExtras.h
-     Contains:   A collection of useful high-level File Manager routines.
-     Version:    Technology: MoreFiles
-                 Release:    1.5.2
-     Copyright:  © 1992-2001 by Apple Computer, Inc., all rights reserved.
-     Bugs?:      For bug reports, consult the following page on
-                 the World Wide Web:
-                     http://developer.apple.com/bugreporter/
-*/
-
-/*
-    You may incorporate this sample code into your applications without
-    restriction, though the sample code has been provided "AS IS" and the
-    responsibility for its operation is 100% yours.  However, what you are
-    not permitted to do is to redistribute the source as "DSC Sample Code"
-    after having made changes. If you're going to re-distribute the source,
-    we require that you make it clear in the source that the code was
-    descended from Apple Sample Code, but that you've made changes.
-*/
-
-#ifndef __MOREFILESEXTRAS__
-#define __MOREFILESEXTRAS__
-
-#ifndef __MACTYPES__
-#include <MacTypes.h>
-#endif
-
-#ifndef __FILES__
-#include <Files.h>
-#endif
-
-#include "Optimization.h"
-
-
-#if PRAGMA_ONCE
-#pragma once
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if PRAGMA_IMPORT
-#pragma import on
-#endif
-
-#if PRAGMA_STRUCT_ALIGN
-    #pragma options align=mac68k
-#elif PRAGMA_STRUCT_PACKPUSH
-    #pragma pack(push, 2)
-#elif PRAGMA_STRUCT_PACK
-    #pragma pack(2)
-#endif
-
-/*****************************************************************************/
-
-/*
-**  Bit masks and macros to get common information out of ioACUser returned
-**  by PBGetCatInfo (remember to clear ioACUser before calling PBGetCatInfo
-**  since some file systems don't bother to set this field).
-**
-**  Use the GetDirAccessRestrictions or FSpGetDirAccessRestrictions
-**  functions to retrieve the ioACUser access restrictions byte for
-**  a folder.
-**
-**  Note:   The access restriction byte returned by PBGetCatInfo is the
-**          2's complement of the user's privileges byte returned in
-**          ioACAccess by PBHGetDirAccess.
-*/
-
-enum {
-                                        /* mask for just the access restriction bits */
-  acUserAccessMask              = (kioACUserNoSeeFolderMask + kioACUserNoSeeFilesMask + kioACUserNoMakeChangesMask), /* common access privilege settings */
-  acUserFull                    = 0x00, /* no access restiction bits on */
-  acUserNone                    = acUserAccessMask, /* all access restiction bits on */
-  acUserDropBox                 = kioACUserNoSeeFolderMask + kioACUserNoSeeFilesMask, /* make changes, but not see files or folders */
-  acUserBulletinBoard           = kioACUserNoMakeChangesMask /* see files and folders, but not make changes */
-};
-
-
-/*****************************************************************************/
-
-/*
-**  Deny mode permissions for use with the HOpenAware, HOpenRFAware,
-**  FSpOpenAware, and FSpOpenRFAware functions.
-**  Note: Common settings are the ones with comments.
-*/
-
-enum {
-  dmNone                        = 0x0000,
-  dmNoneDenyRd                  = fsRdDenyPerm,
-  dmNoneDenyWr                  = fsWrDenyPerm,
-  dmNoneDenyRdWr                = (fsRdDenyPerm + fsWrDenyPerm),
-  dmRd                          = fsRdPerm, /* Single writer, multiple readers; the readers */
-  dmRdDenyRd                    = (fsRdPerm + fsRdDenyPerm),
-  dmRdDenyWr                    = (fsRdPerm + fsWrDenyPerm), /* Browsing - equivalent to fsRdPerm */
-  dmRdDenyRdWr                  = (fsRdPerm + fsRdDenyPerm + fsWrDenyPerm),
-  dmWr                          = fsWrPerm,
-  dmWrDenyRd                    = (fsWrPerm + fsRdDenyPerm),
-  dmWrDenyWr                    = (fsWrPerm + fsWrDenyPerm),
-  dmWrDenyRdWr                  = (fsWrPerm + fsRdDenyPerm + fsWrDenyPerm),
-  dmRdWr                        = fsRdWrPerm, /* Shared access - equivalent to fsRdWrShPerm */
-  dmRdWrDenyRd                  = (fsRdWrPerm + fsRdDenyPerm),
-  dmRdWrDenyWr                  = (fsRdWrPerm + fsWrDenyPerm), /* Single writer, multiple readers; the writer */
-  dmRdWrDenyRdWr                = (fsRdWrPerm + fsRdDenyPerm + fsWrDenyPerm) /* Exclusive access - equivalent to fsRdWrPerm */
-};
-
-
-/*****************************************************************************/
-
-/*
-**  For those times where you need to use more than one kind of File Manager parameter
-**  block but don't feel like wasting stack space, here's a parameter block you can reuse.
-*/
-
-
-union UniversalFMPB {
-  ParamBlockRec       PB;
-  CInfoPBRec          ciPB;
-  DTPBRec             dtPB;
-  HParamBlockRec      hPB;
-  CMovePBRec          cmPB;
-  WDPBRec             wdPB;
-  FCBPBRec            fcbPB;
-  XVolumeParam        xPB;
-};
-typedef union UniversalFMPB             UniversalFMPB;
-typedef UniversalFMPB *                 UniversalFMPBPtr;
-typedef UniversalFMPBPtr *              UniversalFMPBHandle;
-
-/*
-**  Used by GetUGEntries to return user or group lists
-*/
-
-struct UGEntry {
-  short               objType;                /* object type: -1 = group; 0 = user */
-  long                objID;                  /* the user or group ID */
-  Str31               name;                   /* the user or group name */
-};
-typedef struct UGEntry                  UGEntry;
-typedef UGEntry *                       UGEntryPtr;
-typedef UGEntryPtr *                    UGEntryHandle;
-
-/*
-**  I use the following records instead of the AFPVolMountInfo and AFPXVolMountInfo structures in Files.h
-*/
-typedef unsigned char                   Str8[9];
-
-struct MyAFPVolMountInfo {
-  short               length;                 /* length of this record */
-  VolumeType          media;                  /* type of media, always AppleShareMediaType */
-  short               flags;                  /* 0 = normal mount; set bit 0 to inhibit greeting messages */
-  char                nbpInterval;            /* NBP interval parameter; 7 is a good choice */
-  char                nbpCount;               /* NBP count parameter; 5 is a good choice */
-  short               uamType;                /* User Authentication Method */
-  short               zoneNameOffset;         /* offset from start of record to zoneName */
-  short               serverNameOffset;       /* offset from start of record to serverName */
-  short               volNameOffset;          /* offset from start of record to volName */
-  short               userNameOffset;         /* offset from start of record to userName */
-  short               userPasswordOffset;     /* offset from start of record to userPassword */
-  short               volPasswordOffset;      /* offset from start of record to volPassword */
-  Str32               zoneName;               /* server's AppleTalk zone name */
-  char                filler1;                /* to word align volPassword */
-  Str32               serverName;             /* server name */
-  char                filler2;                /* to word align volPassword */
-  Str27               volName;                /* volume name */
-  Str31               userName;               /* user name (zero length Pascal string for guest) */
-  Str8                userPassword;           /* user password (zero length Pascal string if no user password) */
-  char                filler3;                /* to word align volPassword */
-  Str8                volPassword;            /* volume password (zero length Pascal string if no volume password) */
-  char                filler4;                /* to end record on word boundry */
-};
-typedef struct MyAFPVolMountInfo        MyAFPVolMountInfo;
-typedef MyAFPVolMountInfo *             MyAFPVolMountInfoPtr;
-typedef MyAFPVolMountInfoPtr *          MyAFPVolMountInfoHandle;
-
-struct MyAFPXVolMountInfo {
-  short               length;                 /* length of this record */
-  VolumeType          media;                  /* type of media, always AppleShareMediaType */
-  short               flags;                  /* bits for no messages, no reconnect, etc */
-  char                nbpInterval;            /* NBP interval parameter; 7 is a good choice */
-  char                nbpCount;               /* NBP count parameter; 5 is a good choice */
-  short               uamType;                /* User Authentication Method */
-  short               zoneNameOffset;         /* offset from start of record to zoneName */
-  short               serverNameOffset;       /* offset from start of record to serverName */
-  short               volNameOffset;          /* offset from start of record to volName */
-  short               userNameOffset;         /* offset from start of record to userName */
-  short               userPasswordOffset;     /* offset from start of record to userPassword */
-  short               volPasswordOffset;      /* offset from start of record to volPassword */
-  short               extendedFlags;          /* extended flags word */
-  short               uamNameOffset;          /* offset to a pascal UAM name string */
-  short               alternateAddressOffset; /* offset to Alternate Addresses in tagged format */
-  Str32               zoneName;               /* server's AppleTalk zone name */
-  char                filler1;                /* to word align volPassword */
-  Str32               serverName;             /* server name */
-  char                filler2;                /* to word align volPassword */
-  Str27               volName;                /* volume name */
-  Str31               userName;               /* user name (zero length Pascal string for guest) */
-  Str8                userPassword;           /* user password (zero length Pascal string if no user password) */
-  char                filler3;                /* to word align volPassword */
-  Str8                volPassword;            /* volume password (zero length Pascal string if no volume password) */
-  char                filler4;                /* to word align uamNameOffset */
-  Str32               uamName;                /* UAM name */
-  char                filler5;                /* to word align alternateAddress */
-  char                alternateAddress[1];    /* AFPAlternateAddress */
-};
-typedef struct MyAFPXVolMountInfo       MyAFPXVolMountInfo;
-typedef MyAFPXVolMountInfo *            MyAFPXVolMountInfoPtr;
-typedef MyAFPXVolMountInfoPtr *         MyAFPXVolMountInfoHandle;
-
-/*****************************************************************************/
-
-/* Functions to get information out of GetVolParmsInfoBuffer. */
-
-/* version 1 field getters */
-
-EXTERN_API( short )
-GetVolParmsInfoVersion(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( long )
-GetVolParmsInfoAttrib(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Handle )
-GetVolParmsInfoLocalHand(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( long )
-GetVolParmsInfoServerAdr(const GetVolParmsInfoBuffer * volParms);
-
-
-
-/* version 2 field getters (assume zero result if version < 2) */
-
-EXTERN_API( long )
-GetVolParmsInfoVolumeGrade(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( long )
-GetVolParmsInfoForeignPrivID(const GetVolParmsInfoBuffer * volParms);
-
-
-
-/* version 3 field getters (assume zero result if version < 3) */
-
-EXTERN_API( long )
-GetVolParmsInfoExtendedAttributes(const GetVolParmsInfoBuffer * volParms);
-
-
-
-/* attribute bits supported by all versions of GetVolParmsInfoBuffer */
-
-EXTERN_API( Boolean )
-isNetworkVolume(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasLimitFCBs(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasLocalWList(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoMiniFndr(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoVNEdit(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoLclSync(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasTrshOffLine(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoSwitchTo(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoDeskItems(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoBootBlks(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasAccessCntl(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasNoSysDir(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasExtFSVol(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasOpenDeny(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasCopyFile(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasMoveRename(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasDesktopMgr(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasShortName(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasFolderLock(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasPersonalAccessPrivileges(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasUserGroupList(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasCatSearch(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasFileIDs(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasBTreeMgr(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-hasBlankAccessPrivileges(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-supportsAsyncRequests(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-supportsTrashVolumeCache(const GetVolParmsInfoBuffer * volParms);
-
-
-
-/* attribute bits supported by version 3 and greater versions of GetVolParmsInfoBuffer */
-
-EXTERN_API( Boolean )
-volIsEjectable(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsHFSPlusAPIs(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsFSCatalogSearch(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsFSExchangeObjects(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupports2TBFiles(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsLongNames(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsMultiScriptNames(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsNamedForks(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volSupportsSubtreeIterators(const GetVolParmsInfoBuffer * volParms);
-
-
-EXTERN_API( Boolean )
-volL2PCanMapFileBlocks(const GetVolParmsInfoBuffer * volParms);
-
-
-
-/*****************************************************************************/
-
-/* Functions for testing ioACUser bits. */
-
-EXTERN_API( Boolean )
-userIsOwner(SInt8 ioACUser);
-
-
-EXTERN_API( Boolean )
-userHasFullAccess(SInt8 ioACUser);
-
-
-EXTERN_API( Boolean )
-userHasDropBoxAccess(SInt8 ioACUser);
-
-
-EXTERN_API( Boolean )
-userHasBulletinBoard(SInt8 ioACUser);
-
-
-EXTERN_API( Boolean )
-userHasNoAccess(SInt8 ioACUser);
-
-
-
-/*****************************************************************************/
-
-EXTERN_API( void )
-TruncPString(
-  StringPtr          destination,
-  ConstStr255Param   source,
-  short              maxLength);
-
-
-/*
-    The TruncPString function copies up to maxLength characters from
-    the source Pascal string to the destination Pascal string. TruncPString
-    ensures that the truncated string ends on a single-byte character, or on
-    the last byte of a multi-byte character.
-    
-    destination     output: destination Pascal string.
-    source          input:  source Pascal string.
-    maxLength       output: The maximum allowable length of the destination
-                            string.
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( Ptr )
-GetTempBuffer(
-  long    buffReqSize,
-  long *  buffActSize);
-
-
-/*
-    The GetTempBuffer function allocates a temporary buffer for file system
-    operations which is at least 1024 bytes (1K) and a multiple of
-    1024 bytes.
-    
-    buffReqSize     input:  Size you'd like the buffer to be.
-    buffActSize     output: Size of buffer allocated.
-    function result output: Pointer to memory allocated or nil if no memory
-                            was available. The caller is responsible for
-                            disposing of this buffer with DisposePtr.
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetVolumeInfoNoName(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  HParmBlkPtr        pb);
-
-
-/*
-    GetVolumeInfoNoName uses pathname and vRefNum to call PBHGetVInfoSync
-    in cases where the returned volume name is not needed by the caller.
-    The pathname and vRefNum parameters are not touched, and the pb
-    parameter is initialized by PBHGetVInfoSync except that ioNamePtr in
-    the parameter block is always returned as NULL (since it might point
-    to GetVolumeInfoNoName's local variable tempPathname).
-
-    I noticed using this code in several places, so here it is once.
-    This reduces the code size of MoreFiles.
-
-    pathName    input:  Pointer to a full pathname or nil.  If you pass in a 
-                        partial pathname, it is ignored. A full pathname to a
-                        volume must end with a colon character (:).
-    vRefNum     input:  Volume specification (volume reference number, working
-                        directory number, drive number, or 0).
-    pb          input:  A pointer to HParamBlockRec.
-                output: The parameter block as filled in by PBHGetVInfoSync
-                        except that ioNamePtr will always be NULL.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume, or pb was NULL
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-XGetVolumeInfoNoName(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  XVolumeParamPtr    pb);
-
-
-/*
-    XGetVolumeInfoNoName uses pathname and vRefNum to call PBXGetVolInfoSync
-    in cases where the returned volume name is not needed by the caller.
-    The pathname and vRefNum parameters are not touched, and the pb
-    parameter is initialized by PBXGetVolInfoSync except that ioNamePtr in
-    the parameter block is always returned as NULL (since it might point
-    to XGetVolumeInfoNoName's local variable tempPathname).
-
-    pathName    input:  Pointer to a full pathname or nil.  If you pass in a 
-                        partial pathname, it is ignored. A full pathname to a
-                        volume must end with a colon character (:).
-    vRefNum     input:  Volume specification (volume reference number, working
-                        directory number, drive number, or 0).
-    pb          input:  A pointer to HParamBlockRec.
-                output: The parameter block as filled in by PBXGetVolInfoSync
-                        except that ioNamePtr will always be NULL.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume, or pb was NULL
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetCatInfoNoName(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  CInfoPBPtr         pb);
-
-
-/*
-    GetCatInfoNoName uses vRefNum, dirID and name to call PBGetCatInfoSync
-    in cases where the returned object is not needed by the caller.
-    The vRefNum, dirID and name parameters are not touched, and the pb
-    parameter is initialized by PBGetCatInfoSync except that ioNamePtr in
-    the parameter block is always returned as NULL (since it might point
-    to GetCatInfoNoName's local variable tempName).
-
-    I noticed using this code in several places, so here it is once.
-    This reduces the code size of MoreFiles.
-
-    vRefNum         input:  Volume specification.
-    dirID           input:  Directory ID.
-    name            input:  Pointer to object name, or nil when dirID
-                            specifies a directory that's the object.
-    pb              input:  A pointer to CInfoPBRec.
-                    output: The parameter block as filled in by
-                            PBGetCatInfoSync except that ioNamePtr will
-                            always be NULL.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-        
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-DetermineVRefNum(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  short *            realVRefNum);
-
-
-/*
-    The DetermineVRefNum function determines the volume reference number of
-    a volume from a pathname, a volume specification, or a combination
-    of the two.
-    WARNING: Volume names on the Macintosh are *not* unique -- Multiple
-    mounted volumes can have the same name. For this reason, the use of a
-    volume name or full pathname to identify a specific volume may not
-    produce the results you expect.  If more than one volume has the same
-    name and a volume name or full pathname is used, the File Manager
-    currently uses the first volume it finds with a matching name in the
-    volume queue.
-
-    pathName    input:  Pointer to a full pathname or nil.  If you pass in a 
-                        partial pathname, it is ignored. A full pathname to a
-                        volume must end with a colon character (:).
-    vRefNum     input:  Volume specification (volume reference number, working
-                        directory number, drive number, or 0).
-    realVRefNum output: The real volume reference number.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-HGetVInfo(
-  short            volReference,
-  StringPtr        volName,
-  short *          vRefNum,
-  unsigned long *  freeBytes,
-  unsigned long *  totalBytes);
-
-
-/*
-    The HGetVInfo function returns the name, volume reference number,
-    available space (in bytes), and total space (in bytes) for the
-    specified volume. You can specify the volume by providing its drive
-    number, volume reference number, or 0 for the default volume.
-    This routine is compatible with volumes up to 4 gigabytes.
-    
-    volReference    input:  The drive number, volume reference number,
-                            or 0 for the default volume.
-    volName         input:  A pointer to a buffer (minimum Str27) where
-                            the volume name is to be returned or must
-                            be nil.
-                    output: The volume name.
-    vRefNum         output: The volume reference number.
-    freeBytes       output: The number of free bytes on the volume.
-                            freeBytes is an unsigned long value.
-    totalBytes      output: The total number of bytes on the volume.
-                            totalBytes is an unsigned long value.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume
-    
-    __________
-    
-    Also see:   XGetVInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-XGetVInfo(
-  short       volReference,
-  StringPtr   volName,
-  short *     vRefNum,
-  UInt64 *    freeBytes,
-  UInt64 *    totalBytes);
-
-
-/*
-    The XGetVInfo function returns the name, volume reference number,
-    available space (in bytes), and total space (in bytes) for the
-    specified volume. You can specify the volume by providing its drive
-    number, volume reference number, or 0 for the default volume.
-    This routine is compatible with volumes up to 2 terabytes.
-    
-    volReference    input:  The drive number, volume reference number,
-                            or 0 for the default volume.
-    volName         input:  A pointer to a buffer (minimum Str27) where
-                            the volume name is to be returned or must
-                            be nil.
-                    output: The volume name.
-    vRefNum         output: The volume reference number.
-    freeBytes       output: The number of free bytes on the volume.
-                            freeBytes is an UnsignedWide value.
-    totalBytes      output: The total number of bytes on the volume.
-                            totalBytes is an UnsignedWide value.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume
-    
-    __________
-    
-    Also see:   HGetVInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-CheckVolLock(
-  ConstStr255Param   pathname,
-  short              vRefNum);
-
-
-/*
-    The CheckVolLock function determines if a volume is locked - either by
-    hardware or by software. If CheckVolLock returns noErr, then the volume
-    is not locked.
-
-    pathName    input:  Pointer to a full pathname or nil.  If you pass in a 
-                        partial pathname, it is ignored. A full pathname to a
-                        volume must end with a colon character (:).
-    vRefNum     input:  Volume specification (volume reference number, working
-                        directory number, drive number, or 0).
-    
-    Result Codes
-        noErr               0       No error - volume not locked
-        nsvErr              -35     No such volume
-        wPrErr              -44     Volume locked by hardware
-        vLckdErr            -46     Volume locked by software
-        paramErr            -50     No default volume
-*/
-
-/*****************************************************************************/
-/*
-**  The following routines call Mac OS routines that are not supported by
-**  Carbon:
-**  
-**      GetDriverName
-**      FindDrive
-**      GetDiskBlocks
-**      GetVolState
-*/
-
-#if !TARGET_API_MAC_CARBON  //  {
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetDriverName(
-  short    driverRefNum,
-  Str255   driverName);
-
-
-/*
-    The GetDriverName function returns a device driver's name.
-
-    driverRefNum    input:  The driver reference number.
-    driverName      output: The driver's name.
-    
-    Result Codes
-        noErr               0       No error
-        badUnitErr          -21     Bad driver reference number
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FindDrive(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  DrvQElPtr *        driveQElementPtr);
-
-
-/*
-    The FindDrive function returns a pointer to a mounted volume's
-    drive queue element.
-
-    pathName            input:  Pointer to a full pathname or nil. If you
-                                pass in a partial pathname, it is ignored.
-                                A full pathname to a volume must end with
-                                a colon character (:).
-    vRefNum             input:  Volume specification (volume reference
-                                number, working directory number, drive
-                                number, or 0).
-    driveQElementPtr    output: Pointer to a volume's drive queue element
-                                in the drive queue. DO NOT change the
-                                DrvQEl.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume
-        nsDrvErr            -56     No such drive
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetDiskBlocks(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  unsigned long *    numBlocks);
-
-
-/*
-    The GetDiskBlocks function returns the number of physical disk
-    blocks on a disk drive. NOTE: This is not the same as volume
-    allocation blocks!
-
-    pathName    input:  Pointer to a full pathname or nil. If you
-                        pass in a partial pathname, it is ignored.
-                        A full pathname to a volume must end with
-                        a colon character (:).
-    vRefNum     input:  Volume specification (volume reference
-                        number, working directory number, drive
-                        number, or 0).
-    numBlocks   output: The number of physical disk blocks on the disk drive.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume, driver reference
-                                    number is zero, ReturnFormatList
-                                    returned zero blocks, DriveStatus
-                                    returned an unknown value, or
-                                    driveQElementPtr->qType is unknown
-        nsDrvErr            -56     No such drive
-        statusErr           Ð18     Driver does not respond to this
-                                    status request
-        badUnitErr          Ð21     Driver reference number does not
-                                    match unit table
-        unitEmptyErr        Ð22     Driver reference number specifies
-                                    a nil handle in unit table
-        abortErr            Ð27     Request aborted by KillIO
-        notOpenErr          Ð28     Driver not open
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetVolState(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  Boolean *          volumeOnline,
-  Boolean *          volumeEjected,
-  Boolean *          driveEjectable,
-  Boolean *          driverWantsEject);
-
-
-/*
-    The GetVolState function determines if a volume is online or offline,
-    if an offline volume is ejected, and if the volume's driver is
-    ejectable or wants eject calls.
-    
-    pathName            input:  Pointer to a full pathname or nil.
-    vRefNum             input:  Volume specification (volume reference number,
-                                working directory number, drive number, or 0).
-    volumeOnline        output: True if the volume is online;
-                                False if the volume is offline.
-    volumeEjected       output: True if the volume is ejected (ejected
-                                volumes are always offline); False if the
-                                volume is not ejected.
-    driveEjectable      output: True if the volume's drive is ejectable;
-                                False if the volume's drive is not ejectable.
-    driverWantsEject    output: True if the volume's driver wants an Eject
-                                request after unmount (even if the drive
-                                is not ejectable); False if the volume's
-                                driver does not need an eject request.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume, or pb was NULL
-*/
-
-/*****************************************************************************/
-
-#endif  //  }   !TARGET_API_MAC_CARBON
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetVolFileSystemID(
-  ConstStr255Param   pathname,
-  short              vRefNum,
-  short *            fileSystemID);
-
-
-/*
-    The GetVolFileSystemID function returned the file system ID of
-    a mounted volume. The file system ID identifies the file system
-    that handles requests to a particular volume. Here's a partial list
-    of file system ID numbers (only Apple's file systems are listed):
-        FSID    File System
-        -----   -----------------------------------------------------
-        $0000   Macintosh HFS or MFS
-        $0100   ProDOS File System
-        $0101   PowerTalk Mail Enclosures
-        $4147   ISO 9660 File Access (through Foreign File Access)
-        $4242   High Sierra File Access (through Foreign File Access)
-        $464D   QuickTake File System (through Foreign File Access)
-        $4953   Macintosh PC Exchange (MS-DOS)
-        $4A48   Audio CD Access (through Foreign File Access)
-        $4D4B   Apple Photo Access (through Foreign File Access)
-    
-    See the Technical Note "FL 35 - Determining Which File System
-    Is Active" and the "Guide to the File System Manager" for more
-    information.
-    
-    pathName        input:  Pointer to a full pathname or nil.  If you pass
-                            in a partial pathname, it is ignored. A full
-                            pathname to a volume must contain at least
-                            one colon character (:) and must not start with
-                            a colon character.
-    vRefNum         input:  Volume specification (volume reference number,
-                            working directory number, drive number, or 0).
-    fileSystemID    output: The volume's file system ID.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        paramErr            -50     No default volume, or pb was NULL
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-UnmountAndEject(
-  ConstStr255Param   pathname,
-  short              vRefNum);
-
-
-/*
-    The UnmountAndEject function unmounts and ejects a volume. The volume
-    is ejected only if it is ejectable and not already ejected.
-    
-    pathName    input:  Pointer to a full pathname or nil.  If you pass in a 
-                        partial pathname, it is ignored. A full pathname to a
-                        volume must end with a colon character (:).
-    vRefNum     input:  Volume specification (volume reference number, working
-                        directory number, drive number, or 0).
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad volume name
-        fBsyErr             -47     One or more files are open
-        paramErr            -50     No default volume
-        nsDrvErr            -56     No such drive
-        extFSErr            -58     External file system error - no file
-                                    system claimed this call.
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-OnLine(
-  FSSpecPtr   volumes,
-  short       reqVolCount,
-  short *     actVolCount,
-  short *     volIndex);
-
-
-/*
-    The OnLine function returns the list of volumes currently mounted in
-    an array of FSSpec records.
-    
-    A noErr result indicates that the volumes array was filled
-    (actVolCount == reqVolCount) and there may be additional volumes
-    mounted. A nsvErr result indicates that the end of the volume list
-    was found and actVolCount volumes were actually found this time.
-
-    volumes     input:  Pointer to array of FSSpec where the volume list
-                        is returned.
-    reqVolCount input:  Maximum number of volumes to return (the number of
-                        elements in the volumes array).
-    actVolCount output: The number of volumes actually returned.
-    volIndex    input:  The current volume index position. Set to 1 to
-                        start with the first volume.
-                output: The volume index position to get the next volume.
-                        Pass this value the next time you call OnLine to
-                        start where you left off.
-    
-    Result Codes
-        noErr               0       No error, but there are more volumes
-                                    to list
-        nsvErr              -35     No more volumes to be listed
-        paramErr            -50     volIndex was <= 0
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-SetDefault(
-  short    newVRefNum,
-  long     newDirID,
-  short *  oldVRefNum,
-  long *   oldDirID);
-
-
-/*
-    The SetDefault function sets the default volume and directory to the
-    volume specified by newVRefNum and the directory specified by newDirID.
-    The current default volume reference number and directory ID are
-    returned in oldVRefNum and oldDir and must be used to restore the
-    default volume and directory to their previous state *as soon as
-    possible* with the RestoreDefault function. These two functions are
-    designed to be used as a wrapper around Standard I/O routines where
-    the location of the file is implied to be the default volume and
-    directory. In other words, this is how you should use these functions:
-    
-        error = SetDefault(newVRefNum, newDirID, &oldVRefNum, &oldDirID);
-        if ( error == noErr )
-        {
-            // call the Stdio functions like remove, rename, tmpfile,
-            // fopen, freopen, etc. or non-ANSI extensions like
-            // fdopen,fsetfileinfo, -- create, open, unlink, etc. here!
-            
-            error = RestoreDefault(oldVRefNum, oldDirID);
-        }
-    
-    By using these functions as a wrapper, you won't need to open a working
-    directory (because SetDefault and RestoreDefault use HSetVol) and you
-    won't have to worry about the effects of using HSetVol (documented in
-    Technical Note "FL 11 - PBHSetVol is Dangerous" and in the
-    Inside Macintosh: Files book in the description of the HSetVol and 
-    PBHSetVol functions) because the default volume/directory is restored
-    before giving up control to code that might be affected by HSetVol.
-    
-    newVRefNum  input:  Volume specification (volume reference number,
-                        working directory number, drive number, or 0) of
-                        the new default volume.
-    newDirID    input:  Directory ID of the new default directory.
-    oldVRefNum  output: The volume specification to save for use with
-                        RestoreDefault.
-    oldDirID    output: The directory ID to save for use with
-                        RestoreDefault.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        bdNamErr            -37     Bad volume name
-        fnfErr              -43     Directory not found
-        paramErr            -50     No default volume
-        afpAccessDenied     -5000   User does not have access to the directory
-    
-    __________
-    
-    Also see:   RestoreDefault
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-RestoreDefault(
-  short   oldVRefNum,
-  long    oldDirID);
-
-
-/*
-    The RestoreDefault function restores the default volume and directory
-    to the volume specified by oldVRefNum and the directory specified by 
-    oldDirID. The oldVRefNum and oldDirID parameters were previously
-    obtained from the SetDefault function. These two functions are designed
-    to be used as a wrapper around Standard C I/O routines where the
-    location of the file is implied to be the default volume and directory.
-    In other words, this is how you should use these functions:
-    
-        error = SetDefault(newVRefNum, newDirID, &oldVRefNum, &oldDirID);
-        if ( error == noErr )
-        {
-            // call the Stdio functions like remove, rename, tmpfile,
-            // fopen, freopen, etc. or non-ANSI extensions like
-            // fdopen,fsetfileinfo, -- create, open, unlink, etc. here!
-            
-            error = RestoreDefault(oldVRefNum, oldDirID);
-        }
-    
-    By using these functions as a wrapper, you won't need to open a working
-    directory (because SetDefault and RestoreDefault use HSetVol) and you
-    won't have to worry about the effects of using HSetVol (documented in
-    Technical Note "FL 11 - PBHSetVol is Dangerous" and in the
-    Inside Macintosh: Files book in the description of the HSetVol and 
-    PBHSetVol functions) because the default volume/directory is restored
-    before giving up control to code that might be affected by HSetVol.
-    
-    oldVRefNum  input: The volume specification to restore.
-    oldDirID    input:  The directory ID to restore.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        bdNamErr            -37     Bad volume name
-        fnfErr              -43     Directory not found
-        paramErr            -50     No default volume
-        rfNumErr            -51     Bad working directory reference number
-        afpAccessDenied     -5000   User does not have access to the directory
-    
-    __________
-    
-    Also see:   SetDefault
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetDInfo(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  DInfo *            fndrInfo);
-
-
-/*
-    The GetDInfo function gets the finder information for a directory.
-
-    vRefNum         input:  Volume specification.
-    dirID           input:  Directory ID.
-    name            input:  Pointer to object name, or nil when dirID
-                            specifies a directory that's the object.
-    fndrInfo        output: If the object is a directory, then its DInfo.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-        
-    __________
-    
-    Also see:   FSpGetDInfo, FSpGetFInfoCompat
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpGetDInfo(
-  const FSSpec *  spec,
-  DInfo *         fndrInfo);
-
-
-/*
-    The FSpGetDInfo function gets the finder information for a directory.
-
-    spec        input:  An FSSpec record specifying the directory.
-    fndrInfo    output: If the object is a directory, then its DInfo.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-        
-    __________
-    
-    Also see:   FSpGetFInfoCompat, GetDInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-SetDInfo(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  const DInfo *      fndrInfo);
-
-
-/*
-    The SetDInfo function sets the finder information for a directory.
-
-    vRefNum         input:  Volume specification.
-    dirID           input:  Directory ID.
-    name            input:  Pointer to object name, or nil when dirID
-                            specifies a directory that's the object.
-    fndrInfo        input:  The DInfo.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    Also see:   FSpSetDInfo, FSpSetFInfoCompat
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpSetDInfo(
-  const FSSpec *  spec,
-  const DInfo *   fndrInfo);
-
-
-/*
-    The FSpSetDInfo function sets the finder information for a directory.
-
-    spec        input:  An FSSpec record specifying the directory.
-    fndrInfo    input:  The DInfo.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    Also see:   FSpSetFInfoCompat, SetDInfo
-*/
-
-/*****************************************************************************/
-
-#if OLDROUTINENAMES
-    #define GetDirID(vRefNum, dirID, name, theDirID, isDirectory) GetDirectoryID(vRefNum, dirID, name, theDirID, isDirectory)
-#endif
-EXTERN_API( OSErr )
-GetDirectoryID(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  long *             theDirID,
-  Boolean *          isDirectory);
-
-
-/*
-    The GetDirectoryID function gets the directory ID number of the
-    directory specified.  If a file is specified, then the parent
-    directory of the file is returned and isDirectory is false.  If
-    a directory is specified, then that directory's ID number is
-    returned and isDirectory is true.
-    WARNING: Volume names on the Macintosh are *not* unique -- Multiple
-    mounted volumes can have the same name. For this reason, the use of a
-    volume name or full pathname to identify a specific volume may not
-    produce the results you expect.  If more than one volume has the same
-    name and a volume name or full pathname is used, the File Manager
-    currently uses the first volume it finds with a matching name in the
-    volume queue.
-    
-    vRefNum         input:  Volume specification.
-    dirID           input:  Directory ID.
-    name            input:  Pointer to object name, or nil when dirID
-                            specifies a directory that's the object.
-    theDirID        output: If the object is a file, then its parent directory
-                            ID. If the object is a directory, then its ID.
-    isDirectory     output: True if object is a directory; false if
-                            object is a file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-#if OLDROUTINENAMES
-    #define DirIDFromFSSpec(spec, theDirID, isDirectory) FSpGetDirectoryID(spec, theDirID, isDirectory)
-#endif
-EXTERN_API( OSErr )
-FSpGetDirectoryID(
-  const FSSpec *  spec,
-  long *          theDirID,
-  Boolean *       isDirectory);
-
-
-/*
-    The FSpGetDirectoryID function gets the directory ID number of the
-    directory specified by spec. If spec is to a file, then the parent
-    directory of the file is returned and isDirectory is false.  If
-    spec is to a directory, then that directory's ID number is
-    returned and isDirectory is true.
-    
-    spec            input:  An FSSpec record specifying the directory.
-    theDirID        output: The directory ID.
-    isDirectory     output: True if object is a directory; false if
-                            object is a file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetDirName(
-  short   vRefNum,
-  long    dirID,
-  Str31   name);
-
-
-/*
-    The GetDirName function gets the name of a directory from its
-    directory ID.
-
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    name        output: Points to a Str31 where the directory name is to be
-                        returned.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume or
-                                    name parameter was NULL
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetIOACUser(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  SInt8 *            ioACUser);
-
-
-/*
-    GetIOACUser returns a directory's access restrictions byte.
-    Use the masks and macro defined in MoreFilesExtras to check for
-    specific access priviledges.
-    
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    name        input:  Pointer to object name, or nil when dirID
-                        specifies a directory that's the object.
-    ioACUser    output: The access restriction byte
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpGetIOACUser(
-  const FSSpec *  spec,
-  SInt8 *         ioACUser);
-
-
-/*
-    FSpGetIOACUser returns a directory's access restrictions byte.
-    Use the masks and macro defined in MoreFilesExtras to check for
-    specific access priviledges.
-    
-    spec        input:  An FSSpec record specifying the directory.
-    ioACUser    output: The access restriction byte
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetParentID(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  long *             parID);
-
-
-/*
-    The GetParentID function gets the parent directory ID number of the
-    specified object.
-    
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    name        input:  Pointer to object name, or nil when dirID specifies
-                        a directory that's the object.
-    parID       output: The parent directory ID of the specified object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetFilenameFromPathname(
-  ConstStr255Param   pathname,
-  Str255             filename);
-
-
-/*
-    The GetFilenameFromPathname function gets the file (or directory) name
-    from the end of a full or partial pathname. Returns notAFileErr if the
-    pathname is nil, the pathname is empty, or the pathname cannot refer to
-    a filename (with a noErr result, the pathname could still refer to a
-    directory).
-    
-    pathname    input:  A full or partial pathname.
-    filename    output: The file (or directory) name.
-    
-    Result Codes
-        noErr               0       No error
-        notAFileErr         -1302   The pathname is nil, the pathname
-                                    is empty, or the pathname cannot refer
-                                    to a filename
-    
-    __________
-    
-    See also:   GetObjectLocation.
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetObjectLocation(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   pathname,
-  short *            realVRefNum,
-  long *             realParID,
-  Str255             realName,
-  Boolean *          isDirectory);
-
-
-/*
-    The GetObjectLocation function gets a file system object's location -
-    that is, its real volume reference number, real parent directory ID,
-    and name. While we're at it, determine if the object is a file or directory.
-    If GetObjectLocation returns fnfErr, then the location information
-    returned is valid, but it describes an object that doesn't exist.
-    You can use the location information for another operation, such as
-    creating a file or directory.
-    
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    pathname    input:  Pointer to object name, or nil when dirID specifies
-                        a directory that's the object.
-    realVRefNum output: The real volume reference number.
-    realParID   output: The parent directory ID of the specified object.
-    realName    output: The name of the specified object (the case of the
-                        object name may not be the same as the object's
-                        catalog entry on disk - since the Macintosh file
-                        system is not case sensitive, it shouldn't matter).
-    isDirectory output: True if object is a directory; false if object
-                        is a file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        notAFileErr         -1302   The pathname is nil, the pathname
-                                    is empty, or the pathname cannot refer
-                                    to a filename
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSMakeFSSpecCompat
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetDirItems(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  Boolean            getFiles,
-  Boolean            getDirectories,
-  FSSpecPtr          items,
-  short              reqItemCount,
-  short *            actItemCount,
-  short *            itemIndex);
-
-
-/*
-    The GetDirItems function returns a list of items in the specified
-    directory in an array of FSSpec records. File, subdirectories, or
-    both can be returned in the list.
-    
-    A noErr result indicates that the items array was filled
-    (actItemCount == reqItemCount) and there may be additional items
-    left in the directory. A fnfErr result indicates that the end of
-    the directory list was found and actItemCount items were actually
-    found this time.
-
-    vRefNum         input:  Volume specification.
-    dirID           input:  Directory ID.
-    name            input:  Pointer to object name, or nil when dirID
-                            specifies a directory that's the object.
-    getFiles        input:  Pass true to have files added to the items list.
-    getDirectories  input:  Pass true to have directories added to the
-                            items list.
-    items           input:  Pointer to array of FSSpec where the item list
-                            is returned.
-    reqItemCount    input:  Maximum number of items to return (the number
-                            of elements in the items array).
-    actItemCount    output: The number of items actually returned.
-    itemIndex       input:  The current item index position. Set to 1 to
-                            start with the first item in the directory.
-                    output: The item index position to get the next item.
-                            Pass this value the next time you call
-                            GetDirItems to start where you left off.
-    
-    Result Codes
-        noErr               0       No error, but there are more items
-                                    to list
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found, there are no more items
-                                    to be listed.
-        paramErr            -50     No default volume or itemIndex was <= 0
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-DeleteDirectoryContents(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The DeleteDirectoryContents function deletes the contents of a directory.
-    All files and subdirectories in the specified directory are deleted.
-    If a locked file or directory is encountered, it is unlocked and then
-    deleted.  If any unexpected errors are encountered,
-    DeleteDirectoryContents quits and returns to the caller.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to directory name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        wPrErr              -44     Hardware volume lock    
-        fLckdErr            -45     File is locked  
-        vLckdErr            -46     Software volume lock    
-        fBsyErr             -47     File busy, directory not empty, or working directory control block open 
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    Also see:   DeleteDirectory
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-DeleteDirectory(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The DeleteDirectory function deletes a directory and its contents.
-    All files and subdirectories in the specified directory are deleted.
-    If a locked file or directory is encountered, it is unlocked and then
-    deleted.  After deleting the directories contents, the directory is
-    deleted. If any unexpected errors are encountered, DeleteDirectory
-    quits and returns to the caller.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to directory name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        wPrErr              -44     Hardware volume lock
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Software volume lock
-        fBsyErr             -47     File busy, directory not empty, or working directory control block open 
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    Also see:   DeleteDirectoryContents
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-CheckObjectLock(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The CheckObjectLock function determines if a file or directory is locked.
-    If CheckObjectLock returns noErr, then the file or directory
-    is not locked. If CheckObjectLock returns fLckdErr, the it is locked.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    Also see:   FSpCheckObjectLock
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpCheckObjectLock(const FSSpec * spec);
-
-
-/*
-    The FSpCheckObjectLock function determines if a file or directory is locked.
-    If FSpCheckObjectLock returns noErr, then the file or directory
-    is not locked.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    Also see:   CheckObjectLock
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetFileSize(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   fileName,
-  long *             dataSize,
-  long *             rsrcSize);
-
-
-/*
-    The GetFileSize function returns the logical size of a file's
-    data and resource fork.
-    
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    name        input:  The name of the file.
-    dataSize    output: The number of bytes in the file's data fork.
-    rsrcSize    output: The number of bytes in the file's resource fork.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErrdirNFErr    -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpGetFileSize
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpGetFileSize(
-  const FSSpec *  spec,
-  long *          dataSize,
-  long *          rsrcSize);
-
-
-/*
-    The FSpGetFileSize function returns the logical size of a file's
-    data and resource fork.
-    
-    spec        input:  An FSSpec record specifying the file.
-    dataSize    output: The number of bytes in the file's data fork.
-    rsrcSize    output: The number of bytes in the file's resource fork.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        paramErr            -50     No default volume
-        dirNFErrdirNFErr    -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   GetFileSize
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-BumpDate(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The BumpDate function changes the modification date of a file or
-    directory to the current date/time.  If the modification date is already
-    equal to the current date/time, then add one second to the
-    modification date.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpBumpDate
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpBumpDate(const FSSpec * spec);
-
-
-/*
-    The FSpBumpDate function changes the modification date of a file or
-    directory to the current date/time.  If the modification date is already
-    equal to the current date/time, then add one second to the
-    modification date.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   BumpDate
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ChangeCreatorType(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  OSType             creator,
-  OSType             fileType);
-
-
-/*
-    The ChangeCreatorType function changes the creator or file type of a file.
-
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    name        input:  The name of the file.
-    creator     input:  The new creator type or 0x00000000 to leave
-                        the creator type alone.
-    fileType    input:  The new file type or 0x00000000 to leave the
-                        file type alone.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        notAFileErr         -1302   Name was not a file
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpChangeCreatorType
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpChangeCreatorType(
-  const FSSpec *  spec,
-  OSType          creator,
-  OSType          fileType);
-
-
-/*
-    The FSpChangeCreatorType function changes the creator or file type of a file.
-
-    spec        input:  An FSSpec record specifying the file.
-    creator     input:  The new creator type or 0x00000000 to leave
-                        the creator type alone.
-    fileType    input:  The new file type or 0x00000000 to leave the
-                        file type alone.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        notAFileErr         -1302   Name was not a file
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   ChangeCreatorType
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ChangeFDFlags(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name,
-  Boolean            setBits,
-  unsigned short     flagBits);
-
-
-/*
-    The ChangeFDFlags function sets or clears Finder Flag bits in the
-    fdFlags field of a file or directory's FInfo record.
-    
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    name        input:  Pointer to object name, or nil when dirID specifies
-                        a directory that's the object.
-    setBits     input:  If true, then set the bits specified in flagBits.
-                        If false, then clear the bits specified in flagBits.
-    flagBits    input:  The flagBits parameter specifies which Finder Flag
-                        bits to set or clear. If a bit in flagBits is set,
-                        then the same bit in fdFlags is either set or
-                        cleared depending on the state of the setBits
-                        parameter.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpChangeFDFlags
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpChangeFDFlags(
-  const FSSpec *   spec,
-  Boolean          setBits,
-  unsigned short   flagBits);
-
-
-/*
-    The FSpChangeFDFlags function sets or clears Finder Flag bits in the
-    fdFlags field of a file or directory's FInfo record.
-    
-    spec        input:  An FSSpec record specifying the object.
-    setBits     input:  If true, then set the bits specified in flagBits.
-                        If false, then clear the bits specified in flagBits.
-    flagBits    input:  The flagBits parameter specifies which Finder Flag
-                        bits to set or clear. If a bit in flagBits is set,
-                        then the same bit in fdFlags is either set or
-                        cleared depending on the state of the setBits
-                        parameter.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   ChangeFDFlags
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-SetIsInvisible(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The SetIsInvisible function sets the invisible bit in the fdFlags
-    word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpSetIsInvisible, ClearIsInvisible, FSpClearIsInvisible
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpSetIsInvisible(const FSSpec * spec);
-
-
-/*
-    The FSpSetIsInvisible function sets the invisible bit in the fdFlags
-    word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetIsInvisible, ClearIsInvisible, FSpClearIsInvisible
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ClearIsInvisible(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The ClearIsInvisible function clears the invisible bit in the fdFlags
-    word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetIsInvisible, FSpSetIsInvisible, FSpClearIsInvisible
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpClearIsInvisible(const FSSpec * spec);
-
-
-/*
-    The FSpClearIsInvisible function clears the invisible bit in the fdFlags
-    word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetIsInvisible, FSpSetIsInvisible, ClearIsInvisible
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-SetNameLocked(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The SetNameLocked function sets the nameLocked bit in the fdFlags word
-    of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpSetNameLocked, ClearNameLocked, FSpClearNameLocked
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpSetNameLocked(const FSSpec * spec);
-
-
-/*
-    The FSpSetNameLocked function sets the nameLocked bit in the fdFlags word
-    of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetNameLocked, ClearNameLocked, FSpClearNameLocked
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ClearNameLocked(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The ClearNameLocked function clears the nameLocked bit in the fdFlags
-    word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetNameLocked, FSpSetNameLocked, FSpClearNameLocked
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpClearNameLocked(const FSSpec * spec);
-
-
-/*
-    The FSpClearNameLocked function clears the nameLocked bit in the fdFlags
-    word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetNameLocked, FSpSetNameLocked, ClearNameLocked
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-SetIsStationery(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The SetIsStationery function sets the isStationery bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpSetIsStationery, ClearIsStationery, FSpClearIsStationery
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpSetIsStationery(const FSSpec * spec);
-
-
-/*
-    The FSpSetIsStationery function sets the isStationery bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetIsStationery, ClearIsStationery, FSpClearIsStationery
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ClearIsStationery(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The ClearIsStationery function clears the isStationery bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetIsStationery, FSpSetIsStationery, FSpClearIsStationery
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpClearIsStationery(const FSSpec * spec);
-
-
-/*
-    The FSpClearIsStationery function clears the isStationery bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetIsStationery, FSpSetIsStationery, ClearIsStationery
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-SetHasCustomIcon(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The SetHasCustomIcon function sets the hasCustomIcon bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpSetHasCustomIcon, ClearHasCustomIcon, FSpClearHasCustomIcon
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpSetHasCustomIcon(const FSSpec * spec);
-
-
-/*
-    The FSpSetHasCustomIcon function sets the hasCustomIcon bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetHasCustomIcon, ClearHasCustomIcon, FSpClearHasCustomIcon
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ClearHasCustomIcon(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The ClearHasCustomIcon function clears the hasCustomIcon bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetHasCustomIcon, FSpSetHasCustomIcon, FSpClearHasCustomIcon
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpClearHasCustomIcon(const FSSpec * spec);
-
-
-/*
-    The FSpClearHasCustomIcon function clears the hasCustomIcon bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   SetHasCustomIcon, FSpSetHasCustomIcon, ClearHasCustomIcon
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-ClearHasBeenInited(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   name);
-
-
-/*
-    The ClearHasBeenInited function clears the hasBeenInited bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    vRefNum input:  Volume specification.
-    dirID   input:  Directory ID.
-    name    input:  Pointer to object name, or nil when dirID specifies
-                    a directory that's the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpClearHasBeenInited
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpClearHasBeenInited(const FSSpec * spec);
-
-
-/*
-    The FSpClearHasBeenInited function clears the hasBeenInited bit in the
-    fdFlags word of the specified file or directory's finder information.
-    
-    spec    input:  An FSSpec record specifying the object.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   ClearHasBeenInited
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-CopyFileMgrAttributes(
-  short              srcVRefNum,
-  long               srcDirID,
-  ConstStr255Param   srcName,
-  short              dstVRefNum,
-  long               dstDirID,
-  ConstStr255Param   dstName,
-  Boolean            copyLockBit);
-
-
-/*
-    The CopyFileMgrAttributes function copies all File Manager attributes
-    from the source file or directory to the destination file or directory.
-    If copyLockBit is true, then set the locked state of the destination
-    to match the source.
-
-    srcVRefNum  input:  Source volume specification.
-    srcDirID    input:  Source directory ID.
-    srcName     input:  Pointer to source object name, or nil when
-                        srcDirID specifies a directory that's the object.
-    dstVRefNum  input:  Destination volume specification.
-    dstDirID    input:  Destination directory ID.
-    dstName     input:  Pointer to destination object name, or nil when
-                        dstDirID specifies a directory that's the object.
-    copyLockBit input:  If true, set the locked state of the destination
-                        to match the source.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   FSpCopyFileMgrAttributes
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpCopyFileMgrAttributes(
-  const FSSpec *  srcSpec,
-  const FSSpec *  dstSpec,
-  Boolean         copyLockBit);
-
-
-/*
-    The FSpCopyFileMgrAttributes function copies all File Manager attributes
-    from the source file or directory to the destination file or directory.
-    If copyLockBit is true, then set the locked state of the destination
-    to match the source.
-
-    srcSpec     input:  An FSSpec record specifying the source object.
-    dstSpec     input:  An FSSpec record specifying the destination object.
-    copyLockBit input:  If true, set the locked state of the destination
-                        to match the source.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename
-        fnfErr              -43     File not found
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     No default volume
-        dirNFErr            -120    Directory not found or incomplete pathname
-        afpAccessDenied     -5000   User does not have the correct access
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-    
-    __________
-    
-    See also:   CopyFileMgrAttributes
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-HOpenAware(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   fileName,
-  short              denyModes,
-  short *            refNum);
-
-
-/*
-    The HOpenAware function opens the data fork of a file using deny mode
-    permissions instead the normal File Manager permissions.  If OpenDeny
-    is not available, then HOpenAware translates the deny modes to the
-    closest File Manager permissions and tries to open the file with
-    OpenDF first, and then Open if OpenDF isn't available. By using
-    HOpenAware with deny mode permissions, a program can be "AppleShare
-    aware" and fall back on the standard File Manager open calls
-    automatically.
-
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    fileName    input:  The name of the file.
-    denyModes   input:  The deny modes access under which to open the file.
-    refNum      output: The file reference number of the opened file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        tmfoErr             -42     Too many files open
-        fnfErr              -43     File not found
-        wPrErr              -44     Volume locked by hardware
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        opWrErr             -49     File already open for writing
-        paramErr            -50     No default volume
-        permErr             -54     File is already open and cannot be opened using specified deny modes
-        afpAccessDenied     -5000   User does not have the correct access to the file
-        afpDenyConflict     -5006   Requested access permission not possible
-    
-    __________
-    
-    See also:   FSpOpenAware, HOpenRFAware, FSpOpenRFAware
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpOpenAware(
-  const FSSpec *  spec,
-  short           denyModes,
-  short *         refNum);
-
-
-/*
-    The FSpOpenAware function opens the data fork of a file using deny mode
-    permissions instead the normal File Manager permissions.  If OpenDeny
-    is not available, then FSpOpenAware translates the deny modes to the
-    closest File Manager permissions and tries to open the file with
-    OpenDF first, and then Open if OpenDF isn't available. By using
-    FSpOpenAware with deny mode permissions, a program can be "AppleShare
-    aware" and fall back on the standard File Manager open calls
-    automatically.
-
-    spec        input:  An FSSpec record specifying the file.
-    denyModes   input:  The deny modes access under which to open the file.
-    refNum      output: The file reference number of the opened file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        tmfoErr             -42     Too many files open
-        fnfErr              -43     File not found
-        wPrErr              -44     Volume locked by hardware
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        opWrErr             -49     File already open for writing
-        paramErr            -50     No default volume
-        permErr             -54     File is already open and cannot be opened using specified deny modes
-        afpAccessDenied     -5000   User does not have the correct access to the file
-        afpDenyConflict     -5006   Requested access permission not possible
-    
-    __________
-    
-    See also:   HOpenAware, HOpenRFAware, FSpOpenRFAware
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-HOpenRFAware(
-  short              vRefNum,
-  long               dirID,
-  ConstStr255Param   fileName,
-  short              denyModes,
-  short *            refNum);
-
-
-/*
-    The HOpenRFAware function opens the resource fork of a file using deny
-    mode permissions instead the normal File Manager permissions.  If
-    OpenRFDeny is not available, then HOpenRFAware translates the deny
-    modes to the closest File Manager permissions and tries to open the
-    file with OpenRF. By using HOpenRFAware with deny mode permissions,
-    a program can be "AppleShare aware" and fall back on the standard
-    File Manager open calls automatically.
-
-    vRefNum     input:  Volume specification.
-    dirID       input:  Directory ID.
-    fileName    input:  The name of the file.
-    denyModes   input:  The deny modes access under which to open the file.
-    refNum      output: The file reference number of the opened file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        tmfoErr             -42     Too many files open
-        fnfErr              -43     File not found
-        wPrErr              -44     Volume locked by hardware
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        opWrErr             -49     File already open for writing
-        paramErr            -50     No default volume
-        permErr             -54     File is already open and cannot be opened using specified deny modes
-        afpAccessDenied     -5000   User does not have the correct access to the file
-        afpDenyConflict     -5006   Requested access permission not possible
-    
-    __________
-    
-    See also:   HOpenAware, FSpOpenAware, FSpOpenRFAware
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpOpenRFAware(
-  const FSSpec *  spec,
-  short           denyModes,
-  short *         refNum);
-
-
-/*
-    The FSpOpenRFAware function opens the resource fork of a file using deny
-    mode permissions instead the normal File Manager permissions.  If
-    OpenRFDeny is not available, then FSpOpenRFAware translates the deny
-    modes to the closest File Manager permissions and tries to open the
-    file with OpenRF. By using FSpOpenRFAware with deny mode permissions,
-    a program can be "AppleShare aware" and fall back on the standard
-    File Manager open calls automatically.
-
-    spec        input:  An FSSpec record specifying the file.
-    denyModes   input:  The deny modes access under which to open the file.
-    refNum      output: The file reference number of the opened file.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     No such volume
-        tmfoErr             -42     Too many files open
-        fnfErr              -43     File not found
-        wPrErr              -44     Volume locked by hardware
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Volume is locked or read-only
-        opWrErr             -49     File already open for writing
-        paramErr            -50     No default volume
-        permErr             -54     File is already open and cannot be opened using specified deny modes
-        afpAccessDenied     -5000   User does not have the correct access to the file
-        afpDenyConflict     -5006   Requested access permission not possible
-    
-    __________
-    
-    See also:   HOpenAware, FSpOpenAware, HOpenRFAware
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSReadNoCache(
-  short   refNum,
-  long *  count,
-  void *  buffPtr);
-
-
-/*
-    The FSReadNoCache function reads any number of bytes from an open file
-    while asking the file system to bypass its cache mechanism.
-    
-    refNum  input:  The file reference number of an open file.
-    count   input:  The number of bytes to read.
-            output: The number of bytes actually read.
-    buffPtr input:  A pointer to the data buffer into which the bytes are
-                    to be read.
-    
-    Result Codes
-        noErr               0       No error
-        readErr             Ð19     Driver does not respond to read requests
-        badUnitErr          Ð21     Driver reference number does not
-                                    match unit table
-        unitEmptyErr        Ð22     Driver reference number specifies a
-                                    nil handle in unit table
-        abortErr            Ð27     Request aborted by KillIO
-        notOpenErr          Ð28     Driver not open
-        ioErr               Ð36     Data does not match in read-verify mode
-        fnOpnErr            -38     File not open
-        rfNumErr            -51     Bad reference number
-        afpAccessDenied     -5000   User does not have the correct access to
-                                    the file
-
-    __________
-    
-    See also:   FSWriteNoCache
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSWriteNoCache(
-  short         refNum,
-  long *        count,
-  const void *  buffPtr);
-
-
-/*
-    The FSReadNoCache function writes any number of bytes to an open file
-    while asking the file system to bypass its cache mechanism.
-    
-    refNum  input:  The file reference number of an open file.
-    count   input:  The number of bytes to write to the file.
-            output: The number of bytes actually written.
-    buffPtr input:  A pointer to the data buffer from which the bytes are
-                    to be written.
-    
-    Result Codes
-        noErr               0       No error
-        writErr             Ð20     Driver does not respond to write requests
-        badUnitErr          Ð21     Driver reference number does not
-                                    match unit table
-        unitEmptyErr        Ð22     Driver reference number specifies a
-                                    nil handle in unit table
-        abortErr            Ð27     Request aborted by KillIO
-        notOpenErr          Ð28     Driver not open
-        dskFulErr           -34     Disk full   
-        ioErr               Ð36     Data does not match in read-verify mode
-        fnOpnErr            -38     File not open
-        wPrErr              -44     Hardware volume lock    
-        fLckdErr            -45     File is locked  
-        vLckdErr            -46     Software volume lock    
-        rfNumErr            -51     Bad reference number
-        wrPermErr           -61     Read/write permission doesnÕt
-                                    allow writing   
-        afpAccessDenied     -5000   User does not have the correct access to
-                                    the file
-
-    __________
-    
-    See also:   FSReadNoCache
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSWriteVerify(
-  short         refNum,
-  long *        count,
-  const void *  buffPtr);
-
-
-/*
-    The FSWriteVerify function writes any number of bytes to an open file
-    and then verifies that the data was actually written to the device.
-    
-    refNum  input:  The file reference number of an open file.
-    count   input:  The number of bytes to write to the file.
-            output: The number of bytes actually written and verified.
-    buffPtr input:  A pointer to the data buffer from which the bytes are
-                    to be written.
-    
-    Result Codes
-        noErr               0       No error
-        readErr             Ð19     Driver does not respond to read requests
-        writErr             Ð20     Driver does not respond to write requests
-        badUnitErr          Ð21     Driver reference number does not
-                                    match unit table
-        unitEmptyErr        Ð22     Driver reference number specifies a
-                                    nil handle in unit table
-        abortErr            Ð27     Request aborted by KillIO
-        notOpenErr          Ð28     Driver not open
-        dskFulErr           -34     Disk full   
-        ioErr               Ð36     Data does not match in read-verify mode
-        fnOpnErr            -38     File not open
-        eofErr              -39     Logical end-of-file reached
-        posErr              -40     Attempt to position mark before start
-                                    of file
-        wPrErr              -44     Hardware volume lock    
-        fLckdErr            -45     File is locked  
-        vLckdErr            -46     Software volume lock    
-        rfNumErr            -51     Bad reference number
-        gfpErr              -52     Error during GetFPos
-        wrPermErr           -61     Read/write permission doesnÕt
-                                    allow writing   
-        memFullErr          -108    Not enough room in heap zone to allocate
-                                    verify buffer
-        afpAccessDenied     -5000   User does not have the correct access to
-                                    the file
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-CopyFork(
-  short   srcRefNum,
-  short   dstRefNum,
-  void *  copyBufferPtr,
-  long    copyBufferSize);
-
-
-/*
-    The CopyFork function copies all data from the source fork to the
-    destination fork of open file forks and makes sure the destination EOF
-    is equal to the source EOF.
-    
-    srcRefNum       input:  The source file reference number.
-    dstRefNum       input:  The destination file reference number.
-    copyBufferPtr   input:  Pointer to buffer to use during copy. The
-                            buffer should be at least 512-bytes minimum.
-                            The larger the buffer, the faster the copy.
-    copyBufferSize  input:  The size of the copy buffer.
-    
-    Result Codes
-        noErr               0       No error
-        readErr             Ð19     Driver does not respond to read requests
-        writErr             Ð20     Driver does not respond to write requests
-        badUnitErr          Ð21     Driver reference number does not
-                                    match unit table
-        unitEmptyErr        Ð22     Driver reference number specifies a
-                                    nil handle in unit table
-        abortErr            Ð27     Request aborted by KillIO
-        notOpenErr          Ð28     Driver not open
-        dskFulErr           -34     Disk full   
-        ioErr               Ð36     Data does not match in read-verify mode
-        fnOpnErr            -38     File not open
-        wPrErr              -44     Hardware volume lock    
-        fLckdErr            -45     File is locked  
-        vLckdErr            -46     Software volume lock    
-        rfNumErr            -51     Bad reference number
-        wrPermErr           -61     Read/write permission doesnÕt
-                                    allow writing   
-        afpAccessDenied     -5000   User does not have the correct access to
-                                    the file
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetFileLocation(
-  short       refNum,
-  short *     vRefNum,
-  long *      dirID,
-  StringPtr   fileName);
-
-
-/*
-    The GetFileLocation function gets the location (volume reference number,
-    directory ID, and fileName) of an open file.
-
-    refNum      input:  The file reference number of an open file.
-    vRefNum     output: The volume reference number.
-    dirID       output: The parent directory ID.
-    fileName    input:  Points to a buffer (minimum Str63) where the
-                        filename is to be returned or must be nil.
-                output: The filename.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     Specified volume doesnÕt exist
-        fnOpnErr            -38     File not open
-        rfNumErr            -51     Reference number specifies nonexistent
-                                    access path
-    
-    __________
-    
-    See also:   FSpGetFileLocation
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpGetFileLocation(
-  short     refNum,
-  FSSpec *  spec);
-
-
-/*
-    The FSpGetFileLocation function gets the location of an open file in
-    an FSSpec record.
-
-    refNum      input:  The file reference number of an open file.
-    spec        output: FSSpec record containing the file name and location.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     Specified volume doesnÕt exist
-        fnOpnErr            -38     File not open
-        rfNumErr            -51     Reference number specifies nonexistent
-                                    access path
-    
-    __________
-    
-    See also:   GetFileLocation
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-CopyDirectoryAccess(
-  short              srcVRefNum,
-  long               srcDirID,
-  ConstStr255Param   srcName,
-  short              dstVRefNum,
-  long               dstDirID,
-  ConstStr255Param   dstName);
-
-
-/*
-    The CopyDirectoryAccess function copies the AFP directory access
-    privileges from one directory to another. Both directories must be on
-    the same file server, but not necessarily on the same server volume.
-    
-    srcVRefNum  input:  Source volume specification.
-    srcDirID    input:  Source directory ID.
-    srcName     input:  Pointer to source directory name, or nil when
-                        srcDirID specifies the directory.
-    dstVRefNum  input:  Destination volume specification.
-    dstDirID    input:  Destination directory ID.
-    dstName     input:  Pointer to destination directory name, or nil when
-                        dstDirID specifies the directory.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     Volume not found
-        fnfErr              -43     Directory not found
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     Volume doesn't support this function
-        afpAccessDenied     -5000   User does not have the correct access
-                                    to the directory
-        afpObjectTypeErr    -5025   Object is a file, not a directory
-    
-    __________
-    
-    See also:   FSpCopyDirectoryAccess
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpCopyDirectoryAccess(
-  const FSSpec *  srcSpec,
-  const FSSpec *  dstSpec);
-
-
-/*
-    The FSpCopyDirectoryAccess function copies the AFP directory access
-    privileges from one directory to another. Both directories must be on
-    the same file server, but not necessarily on the same server volume.
-
-    srcSpec     input:  An FSSpec record specifying the source directory.
-    dstSpec     input:  An FSSpec record specifying the destination directory.
-    
-    Result Codes
-        noErr               0       No error
-        nsvErr              -35     Volume not found
-        fnfErr              -43     Directory not found
-        vLckdErr            -46     Volume is locked or read-only
-        paramErr            -50     Volume doesn't support this function
-        afpAccessDenied     -5000   User does not have the correct access
-                                    to the directory
-        afpObjectTypeErr    -5025   Object is a file, not a directory
-    
-    __________
-    
-    See also:   CopyDirectoryAccess
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-HMoveRenameCompat(
-  short              vRefNum,
-  long               srcDirID,
-  ConstStr255Param   srcName,
-  long               dstDirID,
-  ConstStr255Param   dstpathName,
-  ConstStr255Param   copyName);
-
-
-/*
-    The HMoveRenameCompat function moves a file or directory and optionally
-    renames it.  The source and destination locations must be on the same
-    volume. This routine works even if the volume doesn't support MoveRename.
-    
-    vRefNum     input:  Volume specification.
-    srcDirID    input:  Source directory ID.
-    srcName     input:  The source object name.
-    dstDirID    input:  Destination directory ID.
-    dstName     input:  Pointer to destination directory name, or
-                        nil when dstDirID specifies a directory.
-    copyName    input:  Points to the new name if the object is to be
-                        renamed or nil if the object isn't to be renamed.
-    
-    Result Codes
-        noErr               0       No error
-        dirFulErr           -33     File directory full
-        dskFulErr           -34     Disk is full
-        nsvErr              -35     Volume not found
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename or attempt to move into
-                                    a file
-        fnfErr              -43     Source file or directory not found
-        wPrErr              -44     Hardware volume lock
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Destination volume is read-only
-        fBsyErr             -47     File busy, directory not empty, or
-                                    working directory control block open
-        dupFNErr            -48     Destination already exists
-        paramErr            -50     Volume doesn't support this function,
-                                    no default volume, or source and
-        volOfflinErr        -53     Volume is offline
-        fsRnErr             -59     Problem during rename
-        dirNFErr            -120    Directory not found or incomplete pathname
-        badMovErr           -122    Attempted to move directory into
-                                    offspring
-        wrgVolTypErr        -123    Not an HFS volume (it's a MFS volume)
-        notAFileErr         -1302   The pathname is nil, the pathname
-                                    is empty, or the pathname cannot refer
-                                    to a filename
-        diffVolErr          -1303   Files on different volumes
-        afpAccessDenied     -5000   The user does not have the right to
-                                    move the file  or directory
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-        afpSameObjectErr    -5038   Source and destination files are the same
-    
-    __________
-    
-    See also:   FSpMoveRenameCompat
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-FSpMoveRenameCompat(
-  const FSSpec *     srcSpec,
-  const FSSpec *     dstSpec,
-  ConstStr255Param   copyName);
-
-
-/*
-    The FSpMoveRenameCompat function moves a file or directory and optionally
-    renames it.  The source and destination locations must be on the same
-    volume. This routine works even if the volume doesn't support MoveRename.
-    
-    srcSpec     input:  An FSSpec record specifying the source object.
-    dstSpec     input:  An FSSpec record specifying the destination
-                        directory.
-    copyName    input:  Points to the new name if the object is to be
-                        renamed or nil if the object isn't to be renamed.
-    
-    Result Codes
-        noErr               0       No error
-        dirFulErr           -33     File directory full
-        dskFulErr           -34     Disk is full
-        nsvErr              -35     Volume not found
-        ioErr               -36     I/O error
-        bdNamErr            -37     Bad filename or attempt to move into
-                                    a file
-        fnfErr              -43     Source file or directory not found
-        wPrErr              -44     Hardware volume lock
-        fLckdErr            -45     File is locked
-        vLckdErr            -46     Destination volume is read-only
-        fBsyErr             -47     File busy, directory not empty, or
-                                    working directory control block open
-        dupFNErr            -48     Destination already exists
-        paramErr            -50     Volume doesn't support this function,
-                                    no default volume, or source and
-        volOfflinErr        -53     Volume is offline
-        fsRnErr             -59     Problem during rename
-        dirNFErr            -120    Directory not found or incomplete pathname
-        badMovErr           -122    Attempted to move directory into
-                                    offspring
-        wrgVolTypErr        -123    Not an HFS volume (it's a MFS volume)
-        notAFileErr         -1302   The pathname is nil, the pathname
-                                    is empty, or the pathname cannot refer
-                                    to a filename
-        diffVolErr          -1303   Files on different volumes
-        afpAccessDenied     -5000   The user does not have the right to
-                                    move the file  or directory
-        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
-        afpSameObjectErr    -5038   Source and destination files are the same
-    
-    __________
-    
-    See also:   HMoveRenameCompat
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-BuildAFPVolMountInfo(
-  short                 flags,
-  char                  nbpInterval,
-  char                  nbpCount,
-  short                 uamType,
-  Str32                 zoneName,
-  Str31                 serverName,
-  Str27                 volName,
-  Str31                 userName,
-  Str8                  userPassword,
-  Str8                  volPassword,
-  AFPVolMountInfoPtr *  afpInfoPtr);
-
-
-/*
-    The BuildAFPVolMountInfo function allocates and initializes the fields
-    of an AFPVolMountInfo record before using that record to call
-    the VolumeMount function.
-    
-    flags           input:  The AFP mounting flags. 0 = normal mount;
-                            set bit 0 to inhibit greeting messages.
-    nbpInterval     input:  The interval used for VolumeMount's
-                            NBP Lookup call. 7 is a good choice.
-    nbpCount        input:  The retry count used for VolumeMount's
-                            NBP Lookup call. 5 is a good choice.
-    uamType         input:  The user authentication method to use.
-    zoneName        input:  The AppleTalk zone name of the server.
-    serverName      input:  The AFP server name.
-    volName         input:  The AFP volume name.
-    userName        input:  The user name (zero length Pascal string for
-                            guest).
-    userPassWord    input:  The user password (zero length Pascal string
-                            if no user password)
-    volPassWord     input:  The volume password (zero length Pascal string
-                            if no volume password)
-    afpInfoPtr      output: A pointer to the newly created and initialized
-                            AFPVolMountInfo record. If the function fails to
-                            create an AFPVolMountInfo record, it sets
-                            afpInfoPtr to NULL and the function result is
-                            memFullErr. Your program is responsible
-                            for disposing of this pointer when it is finished
-                            with it.
-    
-    Result Codes
-        noErr               0       No error
-        memFullErr          -108    memory full error
-    
-    __________
-    
-    Also see:   GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
-                RetrieveAFPVolMountInfo, BuildAFPXVolMountInfo,
-                RetrieveAFPXVolMountInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-RetrieveAFPVolMountInfo(
-  AFPVolMountInfoPtr   afpInfoPtr,
-  short *              flags,
-  short *              uamType,
-  StringPtr            zoneName,
-  StringPtr            serverName,
-  StringPtr            volName,
-  StringPtr            userName);
-
-
-/*
-    The RetrieveAFPVolMountInfo function retrieves the AFP mounting
-    information returned in an AFPVolMountInfo record by the
-    GetVolMountInfo function.
-    
-    afpInfoPtr      input:  Pointer to AFPVolMountInfo record that contains
-                            the AFP mounting information.
-    flags           output: The AFP mounting flags.
-    uamType         output: The user authentication method used.
-    zoneName        output: The AppleTalk zone name of the server.
-    serverName      output: The AFP server name.
-    volName         output: The AFP volume name.
-    userName        output: The user name (zero length Pascal string for
-                            guest).
-    
-    Result Codes
-        noErr               0       No error
-        paramErr            -50     media field in AFP mounting information
-                                    was not AppleShareMediaType
-    
-    __________
-    
-    Also see:   GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
-                BuildAFPVolMountInfo, BuildAFPXVolMountInfo,
-                RetrieveAFPXVolMountInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-BuildAFPXVolMountInfo(
-  short                  flags,
-  char                   nbpInterval,
-  char                   nbpCount,
-  short                  uamType,
-  Str32                  zoneName,
-  Str31                  serverName,
-  Str27                  volName,
-  Str31                  userName,
-  Str8                   userPassword,
-  Str8                   volPassword,
-  Str32                  uamName,
-  unsigned long          alternateAddressLength,
-  void *                 alternateAddress,
-  AFPXVolMountInfoPtr *  afpXInfoPtr);
-
-
-/*
-    The BuildAFPXVolMountInfo function allocates and initializes the fields
-    of an AFPXVolMountInfo record before using that record to call
-    the VolumeMount function.
-    
-    flags                   input:  The AFP mounting flags.
-    nbpInterval             input:  The interval used for VolumeMount's
-                                    NBP Lookup call. 7 is a good choice.
-    nbpCount                input:  The retry count used for VolumeMount's
-                                    NBP Lookup call. 5 is a good choice.
-    uamType                 input:  The user authentication method to use.
-    zoneName                input:  The AppleTalk zone name of the server.
-    serverName              input:  The AFP server name.
-    volName                 input:  The AFP volume name.
-    userName                input:  The user name (zero length Pascal string
-                                    for guest).
-    userPassWord            input:  The user password (zero length Pascal
-                                    string if no user password)
-    volPassWord             input:  The volume password (zero length Pascal
-                                    string if no volume password)
-    uamName                 input:  The User Authentication Method name.
-    alternateAddressLength  input:  Length of alternateAddress data.
-    alternateAddress        input   The AFPAlternateAddress (variable length)
-    afpXInfoPtr             output: A pointer to the newly created and
-                                    initialized AFPVolMountInfo record.
-                                    If the function fails to create an
-                                    AFPVolMountInfo record, it sets
-                                    afpInfoPtr to NULL and the function
-                                    result is memFullErr. Your program is
-                                    responsible for disposing of this pointer
-                                    when it is finished with it.
-    
-    Result Codes
-        noErr               0       No error
-        memFullErr          -108    memory full error
-    
-    __________
-    
-    Also see:   GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
-                BuildAFPVolMountInfo, RetrieveAFPVolMountInfo,
-                RetrieveAFPXVolMountInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-RetrieveAFPXVolMountInfo(
-  AFPXVolMountInfoPtr     afpXInfoPtr,
-  short *                 flags,
-  short *                 uamType,
-  StringPtr               zoneName,
-  StringPtr               serverName,
-  StringPtr               volName,
-  StringPtr               userName,
-  StringPtr               uamName,
-  unsigned long *         alternateAddressLength,
-  AFPAlternateAddress **  alternateAddress);
-
-
-/*
-    The RetrieveAFPXVolMountInfo function retrieves the AFP mounting
-    information returned in an AFPXVolMountInfo record by the
-    GetVolMountInfo function.
-    
-    afpXInfoPtr             input:  Pointer to AFPXVolMountInfo record that
-                                    contains the AFP mounting information.
-    flags                   output: The AFP mounting flags.
-    uamType                 output: The user authentication method used.
-    zoneName                output: The AppleTalk zone name of the server.
-    serverName              output: The AFP server name.
-    volName                 output: The AFP volume name.
-    userName                output: The user name (zero length Pascal
-                                    string for guest).
-    uamName                 output: The User Authentication Method name.
-    alternateAddressLength  output: Length of alternateAddress data returned.
-    alternateAddress:       output: A pointer to the newly created and
-                                    AFPAlternateAddress record (a variable
-                                    length record). If the function fails to
-                                    create an AFPAlternateAddress record,
-                                    it sets alternateAddress to NULL and the
-                                    function result is memFullErr. Your
-                                    program is responsible for disposing of
-                                    this pointer when it is finished with it.
-    
-    Result Codes
-        noErr               0       No error
-        paramErr            -50     media field in AFP mounting information
-                                    was not AppleShareMediaType
-        memFullErr          -108    memory full error
-    
-    __________
-    
-    Also see:   GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
-                BuildAFPVolMountInfo, RetrieveAFXVolMountInfo,
-                BuildAFPXVolMountInfo
-*/
-
-/*****************************************************************************/
-
-EXTERN_API( OSErr )
-GetUGEntries(
-  short        objType,
-  UGEntryPtr   entries,
-  long         reqEntryCount,
-  long *       actEntryCount,
-  long *       objID);
-
-
-/*
-    The GetUGEntries functions retrieves a list of user or group entries
-    from the local file server.
-
-    objType         input:  The object type: -1 = group; 0 = user
-    UGEntries       input:  Pointer to array of UGEntry records where the list
-                            is returned.
-    reqEntryCount   input:  The number of elements in the UGEntries array.
-    actEntryCount   output: The number of entries returned.
-    objID           input:  The current index position. Set to 0 to start with
-                            the first entry.
-                    output: The index position to get the next entry. Pass this
-                            value the next time you call GetUGEntries to start
-                            where you left off.
-    
-    Result Codes
-        noErr               0       No error    
-        fnfErr              -43     No more users or groups 
-        paramErr            -50     Function not supported; or, ioObjID is
-                                    negative    
-
-    __________
-    
-    Also see:   GetUGEntry
-*/
-
-/*****************************************************************************/
-
-
-
-#include "OptimizationEnd.h"
-
-#if PRAGMA_STRUCT_ALIGN
-    #pragma options align=reset
-#elif PRAGMA_STRUCT_PACKPUSH
-    #pragma pack(pop)
-#elif PRAGMA_STRUCT_PACK
-    #pragma pack()
-#endif
-
-#ifdef PRAGMA_IMPORT_OFF
-#pragma import off
-#elif PRAGMA_IMPORT
-#pragma import reset
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MOREFILESEXTRAS__ */
-