mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 13:45:27 +00:00
1242 lines
42 KiB
C
1242 lines
42 KiB
C
/*
|
|
** Apple Macintosh Developer Technical Support
|
|
**
|
|
** The long lost high-level and FSSpec File Manager functions.
|
|
**
|
|
** by Jim Luther, Apple Developer Technical Support Emeritus
|
|
**
|
|
** File: MoreFiles.h
|
|
**
|
|
** Copyright © 1992-1996 Apple Computer, Inc.
|
|
** All rights reserved.
|
|
**
|
|
** 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__
|
|
|
|
#include <Types.h>
|
|
#include <Files.h>
|
|
|
|
#include "PascalElim.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HGetVolParms(StringPtr volName,
|
|
short vRefNum,
|
|
GetVolParmsInfoBuffer *volParmsInfo,
|
|
long *infoSize);
|
|
/* ¦ Determine the characteristics of a volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HCreateMinimum(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param fileName);
|
|
/* ¦ Create a new file with no creator or file type.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpCreateMinimum(const FSSpec *spec);
|
|
/* ¦ Create a new file with no creator or file type.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ExchangeFiles(short vRefNum,
|
|
long srcDirID,
|
|
ConstStr255Param srcName,
|
|
long dstDirID,
|
|
ConstStr255Param dstName);
|
|
/* ¦ Exchange the data stored in two files on the same volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ResolveFileIDRef(StringPtr volName,
|
|
short vRefNum,
|
|
long fileID,
|
|
long *parID,
|
|
StringPtr fileName);
|
|
/* ¦ Retrieve the location of the file with the specified file ID reference.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpResolveFileIDRef(StringPtr volName,
|
|
short vRefNum,
|
|
long fileID,
|
|
FSSpecPtr spec);
|
|
/* ¦ Retrieve the location of the file with the specified file ID reference.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr CreateFileIDRef(short vRefNum,
|
|
long parID,
|
|
ConstStr255Param fileName,
|
|
long *fileID);
|
|
/* ¦ Establish a file ID reference for a file.
|
|
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.
|
|
|
|
vRefNum input: Volume specification.
|
|
parID input: Directory ID.
|
|
fileName input: The name of the file.
|
|
fileID output: 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 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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpCreateFileIDRef(const FSSpec *spec,
|
|
long *fileID);
|
|
/* ¦ Establish a file ID reference for a file.
|
|
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.
|
|
|
|
spec input: An FSSpec record specifying the file.
|
|
fileID output: 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 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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr DeleteFileIDRef(StringPtr volName,
|
|
short vRefNum,
|
|
long fileID);
|
|
/* ¦ Delete a file ID reference.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FlushFile(short refNum);
|
|
/* ¦ Write the contents of a file's access path buffer (the fork data).
|
|
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.
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr LockRange(short refNum,
|
|
long rangeLength,
|
|
long rangeStart);
|
|
/* ¦ Lock a portion of a file.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr UnlockRange(short refNum,
|
|
long rangeLength,
|
|
long rangeStart);
|
|
/* ¦ Unlock a previously locked range.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetForeignPrivs(short vRefNum,
|
|
long dirID,
|
|
StringPtr name,
|
|
void *foreignPrivBuffer,
|
|
long *foreignPrivSize,
|
|
long *foreignPrivInfo1,
|
|
long *foreignPrivInfo2,
|
|
long *foreignPrivInfo3,
|
|
long *foreignPrivInfo4);
|
|
/* ¦ Retrieve the native access-control information.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpGetForeignPrivs(const FSSpec *spec,
|
|
void *foreignPrivBuffer,
|
|
long *foreignPrivSize,
|
|
long *foreignPrivInfo1,
|
|
long *foreignPrivInfo2,
|
|
long *foreignPrivInfo3,
|
|
long *foreignPrivInfo4);
|
|
/* ¦ Retrieve the native access-control information.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetForeignPrivs(short vRefNum,
|
|
long dirID,
|
|
StringPtr name,
|
|
void *foreignPrivBuffer,
|
|
long *foreignPrivSize,
|
|
long foreignPrivInfo1,
|
|
long foreignPrivInfo2,
|
|
long foreignPrivInfo3,
|
|
long foreignPrivInfo4);
|
|
/* ¦ Change the native access-control information.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetForeignPrivs(const FSSpec *spec,
|
|
void *foreignPrivBuffer,
|
|
long *foreignPrivSize,
|
|
long foreignPrivInfo1,
|
|
long foreignPrivInfo2,
|
|
long foreignPrivInfo3,
|
|
long foreignPrivInfo4);
|
|
/* ¦ Change the native access-control information.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HGetLogInInfo(StringPtr volName,
|
|
short vRefNum,
|
|
short *loginMethod,
|
|
StringPtr userName);
|
|
/* ¦ Get the login method and user name used to log on to a shared volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HGetDirAccess(short vRefNum,
|
|
long dirID,
|
|
StringPtr name,
|
|
long *ownerID,
|
|
long *groupID,
|
|
long *accessRights);
|
|
/* ¦ Get a directory's access control information on a shared volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpGetDirAccess(const FSSpec *spec,
|
|
long *ownerID,
|
|
long *groupID,
|
|
long *accessRights);
|
|
/* ¦ Get a directory's access control information on a shared volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HSetDirAccess(short vRefNum,
|
|
long dirID,
|
|
StringPtr name,
|
|
long ownerID,
|
|
long groupID,
|
|
long accessRights);
|
|
/* ¦ Set a directory's access control information on a shared volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetDirAccess(const FSSpec *spec,
|
|
long ownerID,
|
|
long groupID,
|
|
long accessRights);
|
|
/* ¦ Set a directory's access control information on a shared volume.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HMapID(StringPtr volName,
|
|
short vRefNum,
|
|
long ugID,
|
|
short objType,
|
|
StringPtr name);
|
|
/* ¦ Map a user or group ID to a user or group 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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HMapName(StringPtr volName,
|
|
short vRefNum,
|
|
ConstStr255Param name,
|
|
short objType,
|
|
long *ugID);
|
|
/* ¦ Map a user or group name to a user or group ID.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HCopyFile(short srcVRefNum,
|
|
long srcDirID,
|
|
ConstStr255Param srcName,
|
|
short dstVRefNum,
|
|
long dstDirID,
|
|
StringPtr dstPathname,
|
|
StringPtr copyName);
|
|
/* ¦ Duplicate a file on a file server and optionally to rename it.
|
|
The HCopyFile function duplicates a file and optionally to 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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpCopyFile(const FSSpec *srcSpec,
|
|
const FSSpec *dstSpec,
|
|
StringPtr copyName);
|
|
/* ¦ Duplicate a file on a file server and optionally to rename it.
|
|
The FSpCopyFile function duplicates a file and optionally to 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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HMoveRename(short vRefNum,
|
|
long srcDirID,
|
|
ConstStr255Param srcName,
|
|
long dstDirID,
|
|
StringPtr dstpathName,
|
|
StringPtr copyName);
|
|
/* ¦ Move a file or directory on a file server and optionally to rename it.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpMoveRename(const FSSpec *srcSpec,
|
|
const FSSpec *dstSpec,
|
|
StringPtr copyName);
|
|
/* ¦ Move a file or directory on a file server and optionally to rename it.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetVolMountInfoSize(StringPtr volName,
|
|
short vRefNum,
|
|
short *size);
|
|
/* ¦ Get the size of a volume mounting information record.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetVolMountInfo(StringPtr volName,
|
|
short vRefNum,
|
|
void *volMountInfo);
|
|
/* ¦ Retrieve a volume mounting information record.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr VolumeMount(void *volMountInfo,
|
|
short *vRefNum);
|
|
/* ¦ Mount a volume using a volume mounting information record.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr Share(short vRefNum,
|
|
long dirID,
|
|
StringPtr name);
|
|
/* ¦ Establish a local volume or directory as a share point.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpShare(const FSSpec *spec);
|
|
/* ¦ Establish a local volume or directory as a share point.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr Unshare(short vRefNum,
|
|
long dirID,
|
|
StringPtr name);
|
|
/* ¦ Remove a share point.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpUnshare(const FSSpec *spec);
|
|
/* ¦ Remove a share point.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetUGEntry(short objType,
|
|
StringPtr objName,
|
|
long *objID);
|
|
/* ¦ Retrieve a user or group entry from the local file server.
|
|
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
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifndef __COMPILINGMOREFILES
|
|
#undef pascal
|
|
#endif
|
|
|
|
#endif /* __MOREFILES__ */
|