]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/morefile/MoreFiles.h
files of wxMac moved into carbon subdirs
[wxWidgets.git] / src / mac / carbon / morefile / MoreFiles.h
diff --git a/src/mac/carbon/morefile/MoreFiles.h b/src/mac/carbon/morefile/MoreFiles.h
new file mode 100644 (file)
index 0000000..25b1fcf
--- /dev/null
@@ -0,0 +1,1420 @@
+/*
+     File:       MoreFiles.h
+     Contains:   The long lost high-level and FSSpec File Manager functions.
+     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 __MOREFILES__
+#define __MOREFILES__
+
+#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
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HGetVolParms(
+  ConstStr255Param         volName,
+  short                    vRefNum,
+  GetVolParmsInfoBuffer *  volParmsInfo,
+  long *                   infoSize);
+
+
+/*
+    The HGetVolParms function returns information about the characteristics
+    of a volume. A result of paramErr usually just means the volume doesn't
+    support PBHGetVolParms and the feature you were going to check
+    for isn't available.
+
+    volName         input:  A pointer to the name of a mounted volume
+                            or nil.
+    vRefNum         input:  Volume specification.
+    volParmsInfo    input:  Pointer to GetVolParmsInfoBuffer where the
+                            volume attributes information is returned.
+                    output: Atributes information.
+    infoSize        input:  Size of buffer pointed to by volParmsInfo.
+                    output: Size of data actually returned.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        paramErr            -50     Volume doesn't support this function
+    
+    __________
+    
+    Also see the macros for checking attribute bits in MoreFilesExtras.h
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HCreateMinimum(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   fileName);
+
+
+/*
+    The HCreateMinimum function creates a new file without attempting to set
+    the creator and file type of the new file.  This function is needed to
+    create a file in an AppleShare "drop box" where the user can make
+    changes, but cannot see folder or files.
+    
+    vRefNum     input:  Volume specification.
+    dirID       input:  Directory ID.
+    fileName    input:  The name of the new file.
+    
+    Result Codes
+        noErr               0       No error
+        dirFulErr           -33     File directory full
+        dskFulErr           -34     Disk is full
+        nsvErr              -35     No such volume
+        ioErr               -36     I/O error
+        bdNamErr            -37     Bad filename
+        fnfErr              -43     Directory not found or incomplete pathname
+        wPrErr              -44     Hardware volume lock
+        vLckdErr            -46     Software volume lock
+        dupFNErr            -48     Duplicate filename and version
+        dirNFErrdirNFErr    -120    Directory not found or incomplete pathname
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   A directory exists with that name
+    
+    __________
+    
+    Also see:   FSpCreateMinimum
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpCreateMinimum(const FSSpec * spec);
+
+
+/*
+    The FSpCreateMinimum function creates a new file without attempting to set 
+    the the creator and file type of the new file.  This function is needed to
+    create a file in an AppleShare "dropbox" where the user can make
+    changes, but cannot see folder or files. 
+    
+    spec        input:  An FSSpec record specifying the file to create.
+    
+    Result Codes
+        noErr               0       No error
+        dirFulErr           -33     File directory full
+        dskFulErr           -34     Disk is full
+        nsvErr              -35     No such volume
+        ioErr               -36     I/O error
+        bdNamErr            -37     Bad filename
+        fnfErr              -43     Directory not found or incomplete pathname
+        wPrErr              -44     Hardware volume lock
+        vLckdErr            -46     Software volume lock
+        dupFNErr            -48     Duplicate filename and version
+        dirNFErrdirNFErr    -120    Directory not found or incomplete pathname
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   A directory exists with that name
+    
+    __________
+    
+    Also see:   HCreateMinimum
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+ExchangeFiles(
+  short              vRefNum,
+  long               srcDirID,
+  ConstStr255Param   srcName,
+  long               dstDirID,
+  ConstStr255Param   dstName);
+
+
+/*
+    The ExchangeFiles function swaps the data in two files on the same
+    volume by changing some of the information in the volume catalog and,
+    if the files are open, in the file control blocks.
+
+    vRefNum     input:  Volume specification.
+    srcDirID    input:  Source directory ID.
+    srcName     input:  Source file name.
+    dstDirID    input:  Destination directory ID.
+    dstName     input:  Destination file name.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        ioErr               -36     I/O error
+        fnfErr              -43     File not found
+        fLckdErr            -45     File is locked
+        vLckdErr            -46     Volume is locked or read-only
+        paramErr            -50     Function not supported by volume
+        volOfflinErr        -53     Volume is offline
+        wrgVolTypErr        -123    Not an HFS volume
+        diffVolErr          -1303   Files on different volumes
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   Object is a directory, not a file
+        afpSameObjectErr    -5038   Source and destination are the same
+
+    __________
+    
+    Also see:   FSpExchangeFilesCompat
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+ResolveFileIDRef(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  long               fileID,
+  long *             parID,
+  StringPtr          fileName);
+
+
+/*
+    The ResolveFileIDRef function returns the filename and parent directory ID
+    of the file with the specified file ID reference.
+    
+    volName input:  A pointer to the name of a mounted volume
+                    or nil.
+    vRefNum input:  Volume specification.
+    fileID  input:  The file ID reference.
+    parID   output: The parent directory ID of the file.
+    name    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     Volume not found
+        ioErr               -36     I/O error
+        fnfErr              -43     File not found
+        paramErr            -50     Function not supported by volume
+        volOfflinErr        -53     Volume is offline
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        wrgVolTypErr        -123    Not an HFS volume
+        fidNotFoundErr      -1300   File ID reference not found
+        notAFileErr         -1302   Specified file is a directory
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   Specified file is a directory
+        afpIDNotFound       -5034   File ID reference not found
+        afpBadIDErr         -5039   File ID reference not found
+    
+    __________
+    
+    Also see:   FSpResolveFileIDRef, CreateFileIDRef, FSpCreateFileIDRef,
+                DeleteFileIDRef
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpResolveFileIDRef(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  long               fileID,
+  FSSpecPtr          spec);
+
+
+/*
+    The FSpResolveFileIDRef function fills in an FSSpec with the location
+    of the file with the specified file ID reference.
+    
+    volName input:  A pointer to the name of a mounted volume
+                    or nil.
+    vRefNum input:  Volume specification.
+    fileID  input:  The file ID reference.
+    spec    input:  A pointer to a FSSpec record.
+            output: A file system specification to be filled in by
+                    FSpResolveFileIDRef.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        ioErr               -36     I/O error
+        fnfErr              -43     File not found
+        paramErr            -50     Function not supported by volume or
+                                    no default volume
+        volOfflinErr        -53     Volume is offline
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        wrgVolTypErr        -123    Not an HFS volume
+        fidNotFoundErr      -1300   File ID reference not found
+        notAFileErr         -1302   Specified file is a directory
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   Specified file is a directory
+        afpIDNotFound       -5034   File ID reference not found
+        afpBadIDErr         -5039   File ID reference not found
+    
+    __________
+    
+    Also see:   ResolveFileIDRef, CreateFileIDRef, FSpCreateFileIDRef,
+                DeleteFileIDRef
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+CreateFileIDRef(
+  short              vRefNum,
+  long               parID,
+  ConstStr255Param   fileName,
+  long *             fileID);
+
+
+/*
+    The CreateFileIDRef function creates a file ID reference for the
+    specified file, or if a file ID reference already exists, supplies
+    the file ID reference and returns the result code fidExists or afpIDExists.
+
+    vRefNum     input:  Volume specification.
+    parID       input:  Directory ID.
+    fileName    input:  The name of the file.
+    fileID      output: The file ID reference (if result is noErr,
+                        fidExists, or afpIDExists).
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        ioErr               -36     I/O error
+        fnfErr              -43     File not found
+        wPrErr              -44     Hardware volume lock
+        vLckdErr            -46     Software volume lock
+        paramErr            -50     Function not supported by volume
+        volOfflinErr        -53     Volume is offline
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        wrgVolTypErr        -123    Not an HFS volume
+        fidExists           -1301   File ID reference already exists
+        notAFileErrn        -1302   Specified file is a directory
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   Specified file is a directory
+        afpIDExists         -5035   File ID reference already exists
+    
+    __________
+    
+    Also see:   FSpResolveFileIDRef, ResolveFileIDRef, FSpCreateFileIDRef,
+                DeleteFileIDRef
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpCreateFileIDRef(
+  const FSSpec *  spec,
+  long *          fileID);
+
+
+/*
+    The FSpCreateFileIDRef function creates a file ID reference for the
+    specified file, or if a file ID reference already exists, supplies
+    the file ID reference and returns the result code fidExists or afpIDExists.
+
+    spec        input:  An FSSpec record specifying the file.
+    fileID      output: The file ID reference (if result is noErr,
+                        fidExists, or afpIDExists).
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        ioErr               -36     I/O error
+        fnfErr              -43     File not found
+        wPrErr              -44     Hardware volume lock
+        vLckdErr            -46     Software volume lock
+        paramErr            -50     Function not supported by volume
+        volOfflinErr        -53     Volume is offline
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        wrgVolTypErr        -123    Not an HFS volume
+        fidExists           -1301   File ID reference already exists
+        notAFileErrn        -1302   Specified file is a directory
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   Specified file is a directory
+        afpIDExists         -5035   File ID reference already exists
+    
+    __________
+    
+    Also see:   FSpResolveFileIDRef, ResolveFileIDRef, CreateFileIDRef,
+                DeleteFileIDRef
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+DeleteFileIDRef(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  long               fileID);
+
+
+/*
+    The DeleteFileIDRef function deletes a file ID reference.
+
+    volName input:  A pointer to the name of a mounted volume
+                    or nil.
+    vRefNum input:  Volume specification.
+    fileID  input:  The file ID reference.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        ioErr               -36     I/O error
+        fnfErr              -43     File not found
+        wPrErr              -44     Hardware volume lock
+        vLckdErr            -46     Software volume lock
+        paramErr            -50     Function not supported by volume
+        volOfflinErr        -53     Volume is offline
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        wrgVolTypErr        -123    Function is not supported by volume
+        fidNotFoundErr      -1300   File ID reference not found
+        afpAccessDenied     -5000   User does not have the correct access
+        afpObjectTypeErr    -5025   Specified file is a directory
+        afpIDNotFound       -5034   File ID reference not found
+    
+    __________
+    
+    Also see:   FSpResolveFileIDRef, ResolveFileIDRef, CreateFileIDRef,
+                FSpCreateFileIDRef
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FlushFile(short refNum);
+
+
+/*
+    The FlushFile function writes the contents of a file's access path
+    buffer (the fork data) to the volume. Note: some of the file's catalog
+    information stored on the volume may not be correct until FlushVol
+    is called.
+
+    refNum  input:  The file reference number of an open file.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        ioErr               -36     I/O error
+        fnOpnErr            -38     File not open
+        fnfErr              -43     File not found
+        rfNumErr            -51     Bad reference number
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+LockRange(
+  short   refNum,
+  long    rangeLength,
+  long    rangeStart);
+
+
+/*
+    The LockRange function locks (denies access to) a portion of a file
+    that was opened with shared read/write permission.
+
+    refNum      input:  The file reference number of an open file.
+    rangeLength input:  The number of bytes in the range.
+    rangeStart  input:  The starting byte in the range to lock.
+    
+    Result Codes
+        noErr               0       No error
+        ioErr               -36     I/O error
+        fnOpnErr            -38     File not open
+        eofErr              -39     Logical end-of-file reached
+        fLckdErr            -45     File is locked by another user
+        paramErr            -50     Negative ioReqCount
+        rfNumErr            -51     Bad reference number
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        volGoneErr          -124    Server volume has been disconnected
+        afpNoMoreLocks      -5015   No more ranges can be locked
+        afpRangeOverlap     -5021   Part of range is already locked
+
+    __________
+    
+    Also see:   UnlockRange
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+UnlockRange(
+  short   refNum,
+  long    rangeLength,
+  long    rangeStart);
+
+
+/*
+    The UnlockRange function unlocks (allows access to) a previously locked
+    portion of a file that was opened with shared read/write permission.
+
+    refNum      input:  The file reference number of an open file.
+    rangeLength input:  The number of bytes in the range.
+    rangeStart  input:  The starting byte in the range to unlock.
+    
+    Result Codes
+        noErr               0       No error
+        ioErr               -36     I/O error
+        fnOpnErr            -38     File not open
+        eofErr              -39     Logical end-of-file reached
+        paramErr            -50     Negative ioReqCount
+        rfNumErr            -51     Bad reference number
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        volGoneErr          -124    Server volume has been disconnected
+        afpRangeNotLocked   -5020   Specified range was not locked
+
+    __________
+    
+    Also see:   LockRange
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+GetForeignPrivs(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   name,
+  void *             foreignPrivBuffer,
+  long *             foreignPrivSize,
+  long *             foreignPrivInfo1,
+  long *             foreignPrivInfo2,
+  long *             foreignPrivInfo3,
+  long *             foreignPrivInfo4);
+
+
+/*
+    The GetForeignPrivs function retrieves the native access-control
+    information for a file or directory stored on a volume managed by
+    a foreign file system.
+    
+    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.
+    foreignPrivBuffer   input:  Pointer to buffer where the privilege
+                                information is returned.
+                        output: Privilege information.
+    foreignPrivSize     input:  Size of buffer pointed to by
+                                foreignPrivBuffer.
+                        output: Amount of buffer actually used.
+    foreignPrivInfo1    output: Information specific to privilege model.
+    foreignPrivInfo2    output: Information specific to privilege model.
+    foreignPrivInfo3    output: Information specific to privilege model.
+    foreignPrivInfo4    output: Information specific to privilege model.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        paramErr            -50     Volume is HFS or MFS (that is, it has
+                                    no foreign privilege model), or foreign
+                                    volume does not support these calls
+    
+    __________
+    
+    Also see:   FSpGetForeignPrivs, SetForeignPrivs, FSpSetForeignPrivs
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpGetForeignPrivs(
+  const FSSpec *  spec,
+  void *          foreignPrivBuffer,
+  long *          foreignPrivSize,
+  long *          foreignPrivInfo1,
+  long *          foreignPrivInfo2,
+  long *          foreignPrivInfo3,
+  long *          foreignPrivInfo4);
+
+
+/*
+    The FSpGetForeignPrivs function retrieves the native access-control
+    information for a file or directory stored on a volume managed by
+    a foreign file system.
+    
+    spec                input:  An FSSpec record specifying the object.
+    foreignPrivBuffer   input:  Pointer to buffer where the privilege
+                                information is returned.
+                        output: Privilege information.
+    foreignPrivSize     input:  Size of buffer pointed to by
+                                foreignPrivBuffer.
+                        output: Amount of buffer actually used.
+    foreignPrivInfo1    output: Information specific to privilege model.
+    foreignPrivInfo2    output: Information specific to privilege model.
+    foreignPrivInfo3    output: Information specific to privilege model.
+    foreignPrivInfo4    output: Information specific to privilege model.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        paramErr            -50     Volume is HFS or MFS (that is, it has
+                                    no foreign privilege model), or foreign
+                                    volume does not support these calls
+    
+    __________
+    
+    Also see:   GetForeignPrivs, SetForeignPrivs, FSpSetForeignPrivs
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+SetForeignPrivs(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   name,
+  const void *       foreignPrivBuffer,
+  long *             foreignPrivSize,
+  long               foreignPrivInfo1,
+  long               foreignPrivInfo2,
+  long               foreignPrivInfo3,
+  long               foreignPrivInfo4);
+
+
+/*
+    The SetForeignPrivs function changes the native access-control
+    information for a file or directory stored on a volume managed by
+    a foreign file system.
+    
+    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.
+    foreignPrivBuffer   input:  Pointer to privilege information buffer.
+    foreignPrivSize     input:  Size of buffer pointed to by
+                                foreignPrivBuffer.
+                        output: Amount of buffer actually used.
+    foreignPrivInfo1    input:  Information specific to privilege model.
+    foreignPrivInfo2    input:  Information specific to privilege model.
+    foreignPrivInfo3    input:  Information specific to privilege model.
+    foreignPrivInfo4    input:  Information specific to privilege model.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        paramErr            -50     Volume is HFS or MFS (that is, it has
+                                    no foreign privilege model), or foreign
+                                    volume does not support these calls
+    
+    __________
+    
+    Also see:   GetForeignPrivs, FSpGetForeignPrivs, FSpSetForeignPrivs
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpSetForeignPrivs(
+  const FSSpec *  spec,
+  const void *    foreignPrivBuffer,
+  long *          foreignPrivSize,
+  long            foreignPrivInfo1,
+  long            foreignPrivInfo2,
+  long            foreignPrivInfo3,
+  long            foreignPrivInfo4);
+
+
+/*
+    The FSpSetForeignPrivs function changes the native access-control
+    information for a file or directory stored on a volume managed by
+    a foreign file system.
+    
+    spec                input:  An FSSpec record specifying the object.
+    foreignPrivBuffer   input:  Pointer to privilege information buffer.
+    foreignPrivSize     input:  Size of buffer pointed to by
+                                foreignPrivBuffer.
+                        output: Amount of buffer actually used.
+    foreignPrivInfo1    input:  Information specific to privilege model.
+    foreignPrivInfo2    input:  Information specific to privilege model.
+    foreignPrivInfo3    input:  Information specific to privilege model.
+    foreignPrivInfo4    input:  Information specific to privilege model.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        paramErr            -50     Volume is HFS or MFS (that is, it has
+                                    no foreign privilege model), or foreign
+                                    volume does not support these calls
+    
+    __________
+    
+    Also see:   GetForeignPrivs, FSpGetForeignPrivs, SetForeignPrivs
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HGetLogInInfo(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  short *            loginMethod,
+  StringPtr          userName);
+
+
+/*
+    The HGetLogInInfo function retrieves the login method and user name
+    used to log on to a particular shared volume.
+    
+    volName     input:  A pointer to the name of a mounted volume
+                        or nil.
+    vRefNum     input:  The volume reference number.
+    loginMethod output: The login method used (kNoUserAuthentication,
+                        kPassword, kEncryptPassword, or
+                        kTwoWayEncryptPassword).
+    userName    input:  Points to a buffer (minimum Str31) where the user
+                        name is to be returned or must be nil.
+                output: The user name.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Specified volume doesnÕt exist
+        paramErr            -50     Function not supported by volume
+    
+    __________
+    
+    Also see:   HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
+                FSpSetDirAccess, HMapName, HMapID
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HGetDirAccess(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   name,
+  long *             ownerID,
+  long *             groupID,
+  long *             accessRights);
+
+
+/*
+    The HGetDirAccess function retrieves the directory access control
+    information for a directory on a shared volume.
+    
+    vRefNum         input:  Volume specification.
+    dirID           input:  Directory ID.
+    name            input:  Pointer to directory name, or nil if dirID
+                            specifies the directory.
+    ownerID         output: The directory's owner ID.
+    groupID         output: The directory's group ID or
+                            0 if no group affiliation.
+    accessRights    output: The directory's access rights.
+    
+    Result Codes
+        noErr               0       No error
+        fnfErr              -43     Directory not found
+        paramErr            -50     Function not supported by volume
+        afpAccessDenied     -5000   User does not have the correct access
+                                    to the directory
+    
+    __________
+    
+    Also see:   HGetLogInInfo, FSpGetDirAccess, HSetDirAccess,
+                FSpSetDirAccess, HMapName, HMapID
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpGetDirAccess(
+  const FSSpec *  spec,
+  long *          ownerID,
+  long *          groupID,
+  long *          accessRights);
+
+
+/*
+    The FSpGetDirAccess function retrieves the directory access control
+    information for a directory on a shared volume.
+    
+    spec            input:  An FSSpec record specifying the directory.
+    ownerID         output: The directory's owner ID.
+    groupID         output: The directory's group ID or
+                            0 if no group affiliation.
+    accessRights    output: The directory's access rights.
+    
+    Result Codes
+        noErr               0       No error
+        fnfErr              -43     Directory not found
+        paramErr            -50     Function not supported by volume
+        afpAccessDenied     -5000   User does not have the correct access
+                                    to the directory
+    
+    __________
+    
+    Also see:   HGetLogInInfo, HGetDirAccess, HSetDirAccess,
+                FSpSetDirAccess, HMapName, HMapID
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HSetDirAccess(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   name,
+  long               ownerID,
+  long               groupID,
+  long               accessRights);
+
+
+/*
+    The HSetDirAccess function changes the directory access control
+    information for a directory on a shared volume. You must own a directory
+    to change its access control information.
+    
+    vRefNum         input:  Volume specification.
+    dirID           input:  Directory ID.
+    name            input:  Pointer to directory name, or nil if dirID
+                            specifies the directory.
+    ownerID         input:  The directory's owner ID.
+    groupID         input:  The directory's group ID or
+                            0 if no group affiliation.
+    accessRights    input:  The directory's access rights.
+    
+    Result Codes
+        noErr               0       No error
+        fnfErr              -43     Directory not found
+        vLckdErr            -46     Volume is locked or read-only
+        paramErr            -50     Parameter error
+        afpAccessDenied     -5000   User does not have the correct access
+                                    to the directory
+        afpObjectTypeErr    -5025   Object is a file, not a directory
+    
+    __________
+    
+    Also see:   HGetLogInInfo, HGetDirAccess, FSpGetDirAccess,
+                FSpSetDirAccess, HMapName, HMapID
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpSetDirAccess(
+  const FSSpec *  spec,
+  long            ownerID,
+  long            groupID,
+  long            accessRights);
+
+
+/*
+    The FSpSetDirAccess function changes the directory access control
+    information for a directory on a shared volume. You must own a directory
+    to change its access control information.
+    
+    spec            input:  An FSSpec record specifying the directory.
+    ownerID         input:  The directory's owner ID.
+    groupID         input:  The directory's group ID or
+                            0 if no group affiliation.
+    accessRights    input:  The directory's access rights.
+    
+    Result Codes
+        noErr               0       No error
+        fnfErr              -43     Directory not found
+        vLckdErr            -46     Volume is locked or read-only
+        paramErr            -50     Parameter error
+        afpAccessDenied     -5000   User does not have the correct access
+                                    to the directory
+        afpObjectTypeErr    -5025   Object is a file, not a directory
+    
+    __________
+    
+    Also see:   HGetLogInInfo, HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
+                HMapName, HMapID
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HMapID(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  long               ugID,
+  short              objType,
+  StringPtr          name);
+
+
+/*
+    The HMapID function determines the name of a user or group if you know
+    the user or group ID.
+    
+    volName     input:  A pointer to the name of a mounted volume
+                        or nil.
+    vRefNum     input:  Volume specification.
+    objType     input:  The mapping function code: 1 if you're mapping a
+                        user ID to a user name or 2 if you're mapping a
+                        group ID to a group name.
+    name        input:  Points to a buffer (minimum Str31) where the user
+                        or group name is to be returned or must be nil.
+                output: The user or group name.
+    
+    Result Codes
+        noErr               0       No error
+        fnfErr              -43     Unrecognizable owner or group name
+        paramErr            -50     Function not supported by volume
+    
+    __________
+    
+    Also see:   HGetLogInInfo, HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
+                FSpSetDirAccess, HMapName
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HMapName(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  ConstStr255Param   name,
+  short              objType,
+  long *             ugID);
+
+
+/*
+    The HMapName function determines the user or group ID if you know the
+    user or group name.
+    
+    volName     input:  A pointer to the name of a mounted volume
+                        or nil.
+    vRefNum     input:  Volume specification.
+    name        input:  The user or group name.
+    objType     input:  The mapping function code: 3 if you're mapping a
+                        user name to a user ID or 4 if you're mapping a
+                        group name to a group ID.
+    ugID        output: The user or group ID.
+
+    Result Codes
+        noErr               0       No error
+        fnfErr              -43     Unrecognizable owner or group name
+        paramErr            -50     Function not supported by volume
+    
+    __________
+    
+    Also see:   HGetLogInInfo, HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
+                FSpSetDirAccess, HMapID
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HCopyFile(
+  short              srcVRefNum,
+  long               srcDirID,
+  ConstStr255Param   srcName,
+  short              dstVRefNum,
+  long               dstDirID,
+  ConstStr255Param   dstPathname,
+  ConstStr255Param   copyName);
+
+
+/*
+    The HCopyFile function duplicates a file and optionally renames it.
+    The source and destination volumes must be on the same file server.
+    This function instructs the server to copy the file.
+    
+    srcVRefNum  input:  Source volume specification.
+    srcDirID    input:  Source directory ID.
+    srcName     input:  Source file name.
+    dstVRefNum  input:  Destination volume specification.
+    dstDirID    input:  Destination directory ID.
+    dstPathname input:  Pointer to destination directory name, or
+                        nil when dstDirID specifies a directory.
+    copyName    input:  Points to the new file name if the file is to be
+                        renamed or nil if the file isn't to be renamed.
+    
+    Result Codes
+        noErr               0       No error
+        dskFulErr           -34     Destination volume is full
+        fnfErr              -43     Source file not found, or destination
+                                    directory does not exist
+        vLckdErr            -46     Destination volume is read-only
+        fBsyErr             -47     The source or destination file could
+                                    not be opened with the correct access
+                                    modes
+        dupFNErr            -48     Destination file already exists
+        paramErr            -50     Function not supported by volume
+        wrgVolTypErr        -123    Function not supported by volume
+        afpAccessDenied     -5000   The user does not have the right to
+                                    read the source or write to the
+                                    destination
+        afpDenyConflict     -5006   The source or destination file could
+                                    not be opened with the correct access
+                                    modes
+        afpObjectTypeErr    -5025   Source is a directory
+    
+    __________
+    
+    Also see:   FSpCopyFile, FileCopy, FSpFileCopy
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpCopyFile(
+  const FSSpec *     srcSpec,
+  const FSSpec *     dstSpec,
+  ConstStr255Param   copyName);
+
+
+/*
+    The FSpCopyFile function duplicates a file and optionally renames it.
+    The source and destination volumes must be on the same file server.
+    This function instructs the server to copy the file.
+    
+    srcSpec     input:  An FSSpec record specifying the source file.
+    dstSpec     input:  An FSSpec record specifying the destination
+                        directory.
+    copyName    input:  Points to the new file name if the file is to be
+                        renamed or nil if the file isn't to be renamed.
+    
+    Result Codes
+        noErr               0       No error
+        dskFulErr           -34     Destination volume is full
+        fnfErr              -43     Source file not found, or destination
+                                    directory does not exist
+        vLckdErr            -46     Destination volume is read-only
+        fBsyErr             -47     The source or destination file could
+                                    not be opened with the correct access
+                                    modes
+        dupFNErr            -48     Destination file already exists
+        paramErr            -50     Function not supported by volume
+        wrgVolTypErr        -123    Function not supported by volume
+        afpAccessDenied     -5000   The user does not have the right to
+                                    read the source or write to the
+                                    destination
+        afpDenyConflict     -5006   The source or destination file could
+                                    not be opened with the correct access
+                                    modes
+        afpObjectTypeErr    -5025   Source is a directory
+    
+    __________
+    
+    Also see:   HCopyFile, FileCopy, FSpFileCopy
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+HMoveRename(
+  short              vRefNum,
+  long               srcDirID,
+  ConstStr255Param   srcName,
+  long               dstDirID,
+  ConstStr255Param   dstpathName,
+  ConstStr255Param   copyName);
+
+
+/*
+    The HMoveRename function moves a file or directory and optionally
+    renames it. The source and destination locations must be on the same
+    shared volume.
+    
+    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
+        fnfErr              -43     Source file or directory not found
+        fLckdErr            -45     File is locked
+        vLckdErr            -46     Destination volume is read-only
+        dupFNErr            -48     Destination already exists
+        paramErr            -50     Function not supported by volume
+        badMovErr           -122    Attempted to move directory into
+                                    offspring
+        afpAccessDenied     -5000   The user does not have the right to
+                                    move the file  or directory
+    
+    __________
+    
+    Also see:   FSpMoveRename, HMoveRenameCompat, FSpMoveRenameCompat
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpMoveRename(
+  const FSSpec *     srcSpec,
+  const FSSpec *     dstSpec,
+  ConstStr255Param   copyName);
+
+
+/*
+    The FSpMoveRename function moves a file or directory and optionally
+    renames it. The source and destination locations must be on the same
+    shared volume.
+    
+    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
+        fnfErr              -43     Source file or directory not found
+        fLckdErr            -45     File is locked
+        vLckdErr            -46     Destination volume is read-only
+        dupFNErr            -48     Destination already exists
+        paramErr            -50     Function not supported by volume
+        badMovErr           -122    Attempted to move directory into
+                                    offspring
+        afpAccessDenied     -5000   The user does not have the right to
+                                    move the file  or directory
+    
+    __________
+    
+    Also see:   HMoveRename, HMoveRenameCompat, FSpMoveRenameCompat
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+GetVolMountInfoSize(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  short *            size);
+
+
+/*
+    The GetVolMountInfoSize function determines the how much space the
+    program needs to allocate for a volume mounting information record.
+    
+    volName     input:  A pointer to the name of a mounted volume
+                        or nil.
+    vRefNum     input:  Volume specification.
+    size        output: The space needed (in bytes) of the volume mounting
+                        information record.
+    
+    Result Codes
+        noErr               0       No error
+        nsvErr              -35     Volume not found
+        paramErr            -50     Parameter error
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+
+    __________
+    
+    Also see:   GetVolMountInfo, VolumeMount BuildAFPVolMountInfo,
+                RetrieveAFPVolMountInfo
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+GetVolMountInfo(
+  ConstStr255Param   volName,
+  short              vRefNum,
+  void *             volMountInfo);
+
+
+/*
+    The GetVolMountInfo function retrieves a volume mounting information
+    record containing all the information needed to mount the volume,
+    except for passwords.
+    
+    volName         input:  A pointer to the name of a mounted volume
+                            or nil.
+    vRefNum         input:  Volume specification.
+    volMountInfo    output: Points to a volume mounting information
+                            record where the mounting information is to
+                            be returned.
+    
+    Result Codes
+        noErr               0       No error    
+        nsvErr              -35     Volume not found    
+        paramErr            -50     Parameter error 
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+
+    __________
+    
+    Also see:   GetVolMountInfoSize, VolumeMount, BuildAFPVolMountInfo,
+                RetrieveAFPVolMountInfo
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+VolumeMount(
+  const void *  volMountInfo,
+  short *       vRefNum);
+
+
+/*
+    The VolumeMount function mounts a volume using a volume mounting
+    information record.
+    
+    volMountInfo    input:  Points to a volume mounting information record.
+    vRefNum         output: A volume reference number.
+    
+    Result Codes
+        noErr               0       No error
+        notOpenErr          -28     AppleTalk is not open
+        nsvErr              -35     Volume not found
+        paramErr            -50     Parameter error; typically, zone, server,
+                                    and volume name combination is not valid
+                                    or not complete, or the user name is not
+                                    recognized
+        extFSErr            -58     External file system error - no file
+                                    system claimed this call.
+        memFullErr          -108    Not enough memory to create a new volume
+                                    control block for mounting the volume
+        afpBadUAM           -5002   User authentication method is unknown
+        afpBadVersNum       -5003   Workstation is using an AFP version that
+                                    the server doesnÕt recognize
+        afpNoServer         -5016   Server is not responding
+        afpUserNotAuth      -5023   User authentication failed (usually,
+                                    password  is not correct)
+        afpPwdExpired       -5042   Password has expired on server
+        afpBadDirIDType     -5060   Not a fixed directory ID volume
+        afpCantMountMoreSrvrs -5061 Maximum number of volumes has been
+                                    mounted
+        afpAlreadyMounted   -5062   Volume already mounted
+        afpSameNodeErr      -5063   Attempt to log on to a server running
+                                    on the same machine
+
+    __________
+    
+    Also see:   GetVolMountInfoSize, GetVolMountInfo, BuildAFPVolMountInfo,
+                RetrieveAFPVolMountInfo
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+Share(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   name);
+
+
+/*
+    The Share function establishes a local volume or directory as a
+    share point.
+
+    vRefNum         input:  Volume specification.
+    dirID           input:  Directory ID.
+    name            input:  Pointer to directory name, or nil if dirID
+                            specifies the directory.
+    
+    Result Codes
+        noErr               0       No error    
+        tmfoErr             -42     Too many share points   
+        fnfErr              -43     File not found  
+        dupFNErr            -48     Already a share point with this name    
+        paramErr            -50     Function not supported by volume    
+        dirNFErrdirNFErr    -120    Directory not found 
+        afpAccessDenied     -5000   This directory cannot be shared 
+        afpObjectTypeErr    -5025   Object was a file, not a directory  
+        afpContainsSharedErr -5033  The directory contains a share point    
+        afpInsideSharedErr  -5043   The directory is inside a shared directory  
+
+    __________
+    
+    Also see:   FSpShare, Unshare, FSpUnshare
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpShare(const FSSpec * spec);
+
+
+/*
+    The FSpShare function establishes a local volume or directory as a
+    share point.
+
+    spec    input:  An FSSpec record specifying the share point.
+    
+    Result Codes
+        noErr               0       No error    
+        tmfoErr             -42     Too many share points   
+        fnfErr              -43     File not found  
+        dupFNErr            -48     Already a share point with this name    
+        paramErr            -50     Function not supported by volume    
+        dirNFErrdirNFErr    -120    Directory not found 
+        afpAccessDenied     -5000   This directory cannot be shared 
+        afpObjectTypeErr    -5025   Object was a file, not a directory  
+        afpContainsSharedErr -5033  The directory contains a share point    
+        afpInsideSharedErr  -5043   The directory is inside a shared directory  
+
+    __________
+    
+    Also see:   Share, Unshare, FSpUnshare
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+Unshare(
+  short              vRefNum,
+  long               dirID,
+  ConstStr255Param   name);
+
+
+/*
+    The Unshare function removes a share point.
+
+    vRefNum         input:  Volume specification.
+    dirID           input:  Directory ID.
+    name            input:  Pointer to directory name, or nil if dirID
+                            specifies the directory.
+    
+    Result Codes
+        noErr               0       No error    
+        fnfErr              -43     File not found  
+        paramErr            -50     Function not supported by volume    
+        dirNFErrdirNFErr    -120    Directory not found 
+        afpObjectTypeErr    -5025   Object was a file, not a directory; or,
+                                    this directory is not a share point 
+
+    __________
+    
+    Also see:   Share, FSpShare, FSpUnshare
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+FSpUnshare(const FSSpec * spec);
+
+
+/*
+    The FSpUnshare function removes a share point.
+
+    spec    input:  An FSSpec record specifying the share point.
+    
+    Result Codes
+        noErr               0       No error    
+        fnfErr              -43     File not found  
+        paramErr            -50     Function not supported by volume    
+        dirNFErrdirNFErr    -120    Directory not found 
+        afpObjectTypeErr    -5025   Object was a file, not a directory; or,
+                                    this directory is not a share point 
+
+    __________
+    
+    Also see:   Share, FSpShare, Unshare
+*/
+
+/*****************************************************************************/
+
+EXTERN_API( OSErr )
+GetUGEntry(
+  short       objType,
+  StringPtr   objName,
+  long *      objID);
+
+
+/*
+    The GetUGEntry function retrieves user or group entries from the
+    local file server.
+
+    objType     input:  The object type: -1 = group; 0 = user
+    objName     input:  Points to a buffer (minimum Str31) where the user
+                        or group name is to be returned or must be nil.
+                output: The user or group name.
+    objID       input:  O to get the first user or group. If the entry objID
+                        last returned by GetUGEntry is passed, then user or
+                        group whose alphabetically next in the list of entries
+                        is returned.
+                output: The user or group ID.
+    
+    Result Codes
+        noErr               0       No error    
+        fnfErr              -43     No more users or groups 
+        paramErr            -50     Function not supported; or, ioObjID is
+                                    negative    
+
+    __________
+    
+    Also see:   GetUGEntries
+*/
+
+/*****************************************************************************/
+
+#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 /* __MOREFILES__ */
+