зеркало из https://github.com/mozilla/gecko-dev.git
3137 строки
113 KiB
C
3137 строки
113 KiB
C
/*
|
|
** Apple Macintosh Developer Technical Support
|
|
**
|
|
** A collection of useful high-level File Manager routines.
|
|
**
|
|
** by Jim Luther, Apple Developer Technical Support Emeritus
|
|
**
|
|
** File: MoreFilesExtras.h
|
|
**
|
|
** Copyright © 1992-1998 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 __MOREFILESEXTRAS__
|
|
#define __MOREFILESEXTRAS__
|
|
|
|
#include <Types.h>
|
|
#include <Files.h>
|
|
|
|
#include "Optimization.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* Constants and types from Universal Interfaces 3.0.1 Files.h */
|
|
|
|
#if UNIVERSAL_INTERFACES_VERSION < 0x0301
|
|
|
|
enum {
|
|
volMountNoLoginMsgFlagBit = 0, /* Input to VolumeMount: If set, the file system */
|
|
volMountNoLoginMsgFlagMask = 0x0001, /* should suppresss any log-in message/greeting dialog */
|
|
volMountExtendedFlagsBit = 7, /* Input to VolumeMount: If set, the mount info is a */
|
|
volMountExtendedFlagsMask = 0x0080 /* AFPXVolMountInfo record for 3.7 AppleShare Client */
|
|
};
|
|
|
|
/* AFPXVolMountInfo is the new AFP volume mount info record, requires the 3.7 AppleShare Client */
|
|
|
|
struct AFPXVolMountInfo {
|
|
short length; /* length of location data (including self) */
|
|
VolumeType media; /* type of media */
|
|
short flags; /* bits for no messages, no reconnect */
|
|
SInt8 nbpInterval; /* NBP Interval parameter (IM2, p.322) */
|
|
SInt8 nbpCount; /* NBP Interval parameter (IM2, p.322) */
|
|
short uamType; /* User Authentication Method type */
|
|
short zoneNameOffset; /* short positive offset from start of struct to Zone Name */
|
|
short serverNameOffset; /* offset to pascal Server Name string */
|
|
short volNameOffset; /* offset to pascal Volume Name string */
|
|
short userNameOffset; /* offset to pascal User Name string */
|
|
short userPasswordOffset; /* offset to pascal User Password string */
|
|
short volPasswordOffset; /* offset to pascal Volume Password string */
|
|
short extendedFlags; /* extended flags word */
|
|
short uamNameOffset; /* offset to a pascal UAM name string */
|
|
short alternateAddressOffset; /* offset to Alternate Addresses in tagged format */
|
|
char AFPData[176]; /* variable length data may follow */
|
|
};
|
|
typedef struct AFPXVolMountInfo AFPXVolMountInfo;
|
|
typedef AFPXVolMountInfo * AFPXVolMountInfoPtr;
|
|
|
|
enum {
|
|
kAFPExtendedFlagsAlternateAddressMask = 1 /* bit in AFPXVolMountInfo.extendedFlags that means alternateAddressOffset is used*/
|
|
};
|
|
|
|
enum {
|
|
/* constants for use in AFPTagData.fType field*/
|
|
kAFPTagTypeIP = 0x01,
|
|
kAFPTagTypeIPPort = 0x02,
|
|
kAFPTagTypeDDP = 0x03 /* Currently unused*/
|
|
};
|
|
|
|
enum {
|
|
/* constants for use in AFPTagData.fLength field*/
|
|
kAFPTagLengthIP = 0x06,
|
|
kAFPTagLengthIPPort = 0x08,
|
|
kAFPTagLengthDDP = 0x06
|
|
};
|
|
|
|
struct AFPTagData {
|
|
UInt8 fLength; /* length of this data tag including the fLength field */
|
|
UInt8 fType;
|
|
UInt8 fData[1]; /* variable length data */
|
|
};
|
|
typedef struct AFPTagData AFPTagData;
|
|
|
|
struct AFPAlternateAddress {
|
|
UInt8 fAddressCount;
|
|
UInt8 fAddressList[1]; /* actually variable length packed set of AFPTagData */
|
|
};
|
|
typedef struct AFPAlternateAddress AFPAlternateAddress;
|
|
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
|
|
/*
|
|
** Macros to get information out of GetVolParmsInfoBuffer
|
|
*/
|
|
|
|
#define isNetworkVolume(volParms) ((volParms).vMServerAdr != 0)
|
|
#define hasLimitFCBs(volParms) (((volParms).vMAttrib & (1L << bLimitFCBs)) != 0)
|
|
#define hasLocalWList(volParms) (((volParms).vMAttrib & (1L << bLocalWList)) != 0)
|
|
#define hasNoMiniFndr(volParms) (((volParms).vMAttrib & (1L << bNoMiniFndr)) != 0)
|
|
#define hasNoVNEdit(volParms) (((volParms).vMAttrib & (1L << bNoVNEdit)) != 0)
|
|
#define hasNoLclSync(volParms) (((volParms).vMAttrib & (1L << bNoLclSync)) != 0)
|
|
#define hasTrshOffLine(volParms) (((volParms).vMAttrib & (1L << bTrshOffLine)) != 0)
|
|
#define hasNoSwitchTo(volParms) (((volParms).vMAttrib & (1L << bNoSwitchTo)) != 0)
|
|
#define hasNoDeskItems(volParms) (((volParms).vMAttrib & (1L << bNoDeskItems)) != 0)
|
|
#define hasNoBootBlks(volParms) (((volParms).vMAttrib & (1L << bNoBootBlks)) != 0)
|
|
#define hasAccessCntl(volParms) (((volParms).vMAttrib & (1L << bAccessCntl)) != 0)
|
|
#define hasNoSysDir(volParms) (((volParms).vMAttrib & (1L << bNoSysDir)) != 0)
|
|
#define hasExtFSVol(volParms) (((volParms).vMAttrib & (1L << bHasExtFSVol)) != 0)
|
|
#define hasOpenDeny(volParms) (((volParms).vMAttrib & (1L << bHasOpenDeny)) != 0)
|
|
#define hasCopyFile(volParms) (((volParms).vMAttrib & (1L << bHasCopyFile)) != 0)
|
|
#define hasMoveRename(volParms) (((volParms).vMAttrib & (1L << bHasMoveRename)) != 0)
|
|
#define hasDesktopMgr(volParms) (((volParms).vMAttrib & (1L << bHasDesktopMgr)) != 0)
|
|
#define hasShortName(volParms) (((volParms).vMAttrib & (1L << bHasShortName)) != 0)
|
|
#define hasFolderLock(volParms) (((volParms).vMAttrib & (1L << bHasFolderLock)) != 0)
|
|
#define hasPersonalAccessPrivileges(volParms) \
|
|
(((volParms).vMAttrib & (1L << bHasPersonalAccessPrivileges)) != 0)
|
|
#define hasUserGroupList(volParms) (((volParms).vMAttrib & (1L << bHasUserGroupList)) != 0)
|
|
#define hasCatSearch(volParms) (((volParms).vMAttrib & (1L << bHasCatSearch)) != 0)
|
|
#define hasFileIDs(volParms) (((volParms).vMAttrib & (1L << bHasFileIDs)) != 0)
|
|
#define hasBTreeMgr(volParms) (((volParms).vMAttrib & (1L << bHasBTreeMgr)) != 0)
|
|
#define hasBlankAccessPrivileges(volParms) \
|
|
(((volParms).vMAttrib & (1L << bHasBlankAccessPrivileges)) != 0)
|
|
|
|
/*****************************************************************************/
|
|
|
|
|
|
/*
|
|
** Bit masks and macros to get common information out of ioACUser returned
|
|
** by PBGetCatInfo (remember to clear ioACUser before calling PBGetCatInfo
|
|
** since some file systems don't bother to set this field).
|
|
**
|
|
** Use the GetDirAccessRestrictions or FSpGetDirAccessRestrictions
|
|
** functions to retrieve the ioACUser access restrictions byte for
|
|
** a folder.
|
|
**
|
|
** Note: The access restriction byte returned by PBGetCatInfo is the
|
|
** 2's complement of the user's privileges byte returned in
|
|
** ioACAccess by PBHGetDirAccess.
|
|
*/
|
|
|
|
enum
|
|
{
|
|
/* bits defined in ioACUser */
|
|
acUserNoSeeFoldersMask = 0x01,
|
|
acUserNoSeeFilesMask = 0x02,
|
|
acUserNoMakeChangesMask = 0x04,
|
|
acUserNotOwnerMask = 0x80,
|
|
|
|
/* mask for just the access restriction bits */
|
|
acUserAccessMask = 0x07,
|
|
|
|
/* common access privilege settings */
|
|
acUserFull = 0x00, /* no access restiction bits on */
|
|
acUserNone = acUserAccessMask, /* all access restiction bits on */
|
|
acUserDropBox = acUserNoSeeFoldersMask + acUserNoSeeFilesMask, /* make changes, but not see files or folders */
|
|
acUserBulletinBoard = acUserNoMakeChangesMask /* see files and folders, but not make changes */
|
|
};
|
|
|
|
/* Macros for testing ioACUser bits */
|
|
#define userIsOwner(ioACUser) \
|
|
(((ioACUser) & acUserNotOwnerMask) == 0)
|
|
#define userHasFullAccess(ioACUser) \
|
|
(((ioACUser) & (acUserAccessMask)) == acUserFull)
|
|
#define userHasDropBoxAccess(ioACUser) \
|
|
(((ioACUser) & acUserAccessMask) == acUserDropBox)
|
|
#define userHasBulletinBoard(ioACUser) \
|
|
(((ioACUser) & acUserAccessMask) == acUserBulletinBoard)
|
|
#define userHasNoAccess(ioACUser) \
|
|
(((ioACUser) & acUserAccessMask) == acUserNone)
|
|
|
|
/*****************************************************************************/
|
|
|
|
/*
|
|
** Deny mode permissions for use with the HOpenAware, HOpenRFAware,
|
|
** FSpOpenAware, and FSpOpenRFAware functions.
|
|
*/
|
|
|
|
enum
|
|
{
|
|
dmNone = 0x0000,
|
|
dmNoneDenyRd = 0x0010,
|
|
dmNoneDenyWr = 0x0020,
|
|
dmNoneDenyRdWr = 0x0030,
|
|
dmRd = 0x0001, /* Single writer, multiple readers; the readers */
|
|
dmRdDenyRd = 0x0011,
|
|
dmRdDenyWr = 0x0021, /* Browsing - equivalent to fsRdPerm */
|
|
dmRdDenyRdWr = 0x0031,
|
|
dmWr = 0x0002,
|
|
dmWrDenyRd = 0x0012,
|
|
dmWrDenyWr = 0x0022,
|
|
dmWrDenyRdWr = 0x0032,
|
|
dmRdWr = 0x0003, /* Shared access - equivalent to fsRdWrShPerm */
|
|
dmRdWrDenyRd = 0x0013,
|
|
dmRdWrDenyWr = 0x0023, /* Single writer, multiple readers; the writer */
|
|
dmRdWrDenyRdWr = 0x0033 /* Exclusive access - equivalent to fsRdWrPerm */
|
|
};
|
|
|
|
/*****************************************************************************/
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
#pragma options align=mac68k
|
|
#endif
|
|
|
|
/*
|
|
** For those times where you need to use more than one kind of File Manager parameter
|
|
** block but don't feel like wasting stack space, here's a parameter block you can reuse.
|
|
*/
|
|
|
|
union UniversalFMPB
|
|
{
|
|
ParamBlockRec PB;
|
|
CInfoPBRec ciPB;
|
|
DTPBRec dtPB;
|
|
HParamBlockRec hPB;
|
|
CMovePBRec cmPB;
|
|
WDPBRec wdPB;
|
|
FCBPBRec fcbPB;
|
|
XVolumeParam xPB;
|
|
};
|
|
typedef union UniversalFMPB UniversalFMPB;
|
|
typedef UniversalFMPB *UniversalFMPBPtr, **UniversalFMPBHandle;
|
|
|
|
|
|
/*
|
|
** Used by GetUGEntries to return user or group lists
|
|
*/
|
|
|
|
struct UGEntry
|
|
{
|
|
short objType; /* object type: -1 = group; 0 = user */
|
|
long objID; /* the user or group ID */
|
|
Str31 name; /* the user or group name */
|
|
};
|
|
typedef struct UGEntry UGEntry;
|
|
typedef UGEntry *UGEntryPtr, **UGEntryHandle;
|
|
|
|
|
|
typedef unsigned char Str8[9];
|
|
|
|
|
|
/*
|
|
** I use the following records instead of the AFPVolMountInfo and AFPXVolMountInfo structures in Files.h
|
|
*/
|
|
|
|
struct MyAFPVolMountInfo
|
|
{
|
|
short length; /* length of this record */
|
|
VolumeType media; /* type of media, always AppleShareMediaType */
|
|
short flags; /* 0 = normal mount; set bit 0 to inhibit greeting messages */
|
|
char nbpInterval; /* NBP interval parameter; 7 is a good choice */
|
|
char nbpCount; /* NBP count parameter; 5 is a good choice */
|
|
short uamType; /* User Authentication Method */
|
|
short zoneNameOffset; /* offset from start of record to zoneName */
|
|
short serverNameOffset; /* offset from start of record to serverName */
|
|
short volNameOffset; /* offset from start of record to volName */
|
|
short userNameOffset; /* offset from start of record to userName */
|
|
short userPasswordOffset; /* offset from start of record to userPassword */
|
|
short volPasswordOffset; /* offset from start of record to volPassword */
|
|
Str32 zoneName; /* server's AppleTalk zone name */
|
|
char filler1; /* to word align volPassword */
|
|
Str32 serverName; /* server name */
|
|
char filler2; /* to word align volPassword */
|
|
Str27 volName; /* volume name */
|
|
Str31 userName; /* user name (zero length Pascal string for guest) */
|
|
Str8 userPassword; /* user password (zero length Pascal string if no user password) */
|
|
char filler3; /* to word align volPassword */
|
|
Str8 volPassword; /* volume password (zero length Pascal string if no volume password) */
|
|
char filler4; /* to end record on word boundry */
|
|
};
|
|
typedef struct MyAFPVolMountInfo MyAFPVolMountInfo;
|
|
typedef MyAFPVolMountInfo *MyAFPVolMountInfoPtr, **MyAFPVolMountInfoHandle;
|
|
|
|
struct MyAFPXVolMountInfo
|
|
{
|
|
short length; /* length of this record */
|
|
VolumeType media; /* type of media, always AppleShareMediaType */
|
|
short flags; /* bits for no messages, no reconnect, etc */
|
|
char nbpInterval; /* NBP interval parameter; 7 is a good choice */
|
|
char nbpCount; /* NBP count parameter; 5 is a good choice */
|
|
short uamType; /* User Authentication Method */
|
|
short zoneNameOffset; /* offset from start of record to zoneName */
|
|
short serverNameOffset; /* offset from start of record to serverName */
|
|
short volNameOffset; /* offset from start of record to volName */
|
|
short userNameOffset; /* offset from start of record to userName */
|
|
short userPasswordOffset; /* offset from start of record to userPassword */
|
|
short volPasswordOffset; /* offset from start of record to volPassword */
|
|
short extendedFlags; /* extended flags word */
|
|
short uamNameOffset; /* offset to a pascal UAM name string */
|
|
short alternateAddressOffset; /* offset to Alternate Addresses in tagged format */
|
|
Str32 zoneName; /* server's AppleTalk zone name */
|
|
char filler1; /* to word align volPassword */
|
|
Str32 serverName; /* server name */
|
|
char filler2; /* to word align volPassword */
|
|
Str27 volName; /* volume name */
|
|
Str31 userName; /* user name (zero length Pascal string for guest) */
|
|
Str8 userPassword; /* user password (zero length Pascal string if no user password) */
|
|
char filler3; /* to word align volPassword */
|
|
Str8 volPassword; /* volume password (zero length Pascal string if no volume password) */
|
|
char filler4; /* to word align uamNameOffset */
|
|
Str32 uamName; /* UAM name */
|
|
char filler5; /* to word align alternateAddress */
|
|
char alternateAddress[kVariableLengthArray]; /* AFPAlternateAddress */
|
|
};
|
|
typedef struct MyAFPXVolMountInfo MyAFPXVolMountInfo;
|
|
typedef MyAFPXVolMountInfo *MyAFPXVolMountInfoPtr, **MyAFPXVolMountInfoHandle;
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
#pragma options align=reset
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal void TruncPString(StringPtr destination,
|
|
ConstStr255Param source,
|
|
short maxLength);
|
|
/* ¦ International friendly string truncate routine.
|
|
The TruncPString function copies up to maxLength characters from
|
|
the source Pascal string to the destination Pascal string. TruncPString
|
|
ensures that the truncated string ends on a single-byte character, or on
|
|
the last byte of a multi-byte character.
|
|
|
|
destination output: destination Pascal string.
|
|
source input: source Pascal string.
|
|
maxLength output: The maximum allowable length of the destination
|
|
string.
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal Ptr GetTempBuffer(long buffReqSize,
|
|
long *buffActSize);
|
|
/* ¦ Allocate a temporary copy or search buffer.
|
|
The GetTempBuffer function allocates a temporary buffer for file system
|
|
operations which is at least 1024 bytes (1K) and a multiple of
|
|
1024 bytes.
|
|
|
|
buffReqSize input: Size you'd like the buffer to be.
|
|
buffActSize output: Size of buffer allocated.
|
|
function result output: Pointer to memory allocated or nil if no memory
|
|
was available. The caller is responsible for
|
|
disposing of this buffer with DisposePtr.
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetVolumeInfoNoName(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
HParmBlkPtr pb);
|
|
/* ¦ Call PBHGetVInfoSync ignoring returned name.
|
|
GetVolumeInfoNoName uses pathname and vRefNum to call PBHGetVInfoSync
|
|
in cases where the returned volume name is not needed by the caller.
|
|
The pathname and vRefNum parameters are not touched, and the pb
|
|
parameter is initialized by PBHGetVInfoSync except that ioNamePtr in
|
|
the parameter block is always returned as NULL (since it might point
|
|
to GetVolumeInfoNoName's local variable tempPathname).
|
|
|
|
I noticed using this code in several places, so here it is once.
|
|
This reduces the code size of MoreFiles.
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you pass in a
|
|
partial pathname, it is ignored. A full pathname to a
|
|
volume must end with a colon character (:).
|
|
vRefNum input: Volume specification (volume reference number, working
|
|
directory number, drive number, or 0).
|
|
pb input: A pointer to HParamBlockRec.
|
|
output: The parameter block as filled in by PBHGetVInfoSync
|
|
except that ioNamePtr will always be NULL.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume, or pb was NULL
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr XGetVolumeInfoNoName(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
XVolumeParamPtr pb);
|
|
/* ¦ Call PBXGetVolInfoSync ignoring returned name.
|
|
XGetVolumeInfoNoName uses pathname and vRefNum to call PBXGetVolInfoSync
|
|
in cases where the returned volume name is not needed by the caller.
|
|
The pathname and vRefNum parameters are not touched, and the pb
|
|
parameter is initialized by PBXGetVolInfoSync except that ioNamePtr in
|
|
the parameter block is always returned as NULL (since it might point
|
|
to XGetVolumeInfoNoName's local variable tempPathname).
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you pass in a
|
|
partial pathname, it is ignored. A full pathname to a
|
|
volume must end with a colon character (:).
|
|
vRefNum input: Volume specification (volume reference number, working
|
|
directory number, drive number, or 0).
|
|
pb input: A pointer to HParamBlockRec.
|
|
output: The parameter block as filled in by PBXGetVolInfoSync
|
|
except that ioNamePtr will always be NULL.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume, or pb was NULL
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetCatInfoNoName(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
CInfoPBPtr pb);
|
|
/* ¦ Call PBGetCatInfoSync ignoring returned name.
|
|
GetCatInfoNoName uses vRefNum, dirID and name to call PBGetCatInfoSync
|
|
in cases where the returned object is not needed by the caller.
|
|
The vRefNum, dirID and name parameters are not touched, and the pb
|
|
parameter is initialized by PBGetCatInfoSync except that ioNamePtr in
|
|
the parameter block is always returned as NULL (since it might point
|
|
to GetCatInfoNoName's local variable tempName).
|
|
|
|
I noticed using this code in several places, so here it is once.
|
|
This reduces the code size of MoreFiles.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID
|
|
specifies a directory that's the object.
|
|
pb input: A pointer to CInfoPBRec.
|
|
output: The parameter block as filled in by
|
|
PBGetCatInfoSync except that ioNamePtr will
|
|
always be NULL.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr DetermineVRefNum(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
short *realVRefNum);
|
|
/* ¦ Determine the real volume reference number.
|
|
The DetermineVRefNum function determines the volume reference number of
|
|
a volume from a pathname, a volume specification, or a combination
|
|
of the two.
|
|
WARNING: Volume names on the Macintosh are *not* unique -- Multiple
|
|
mounted volumes can have the same name. For this reason, the use of a
|
|
volume name or full pathname to identify a specific volume may not
|
|
produce the results you expect. If more than one volume has the same
|
|
name and a volume name or full pathname is used, the File Manager
|
|
currently uses the first volume it finds with a matching name in the
|
|
volume queue.
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you pass in a
|
|
partial pathname, it is ignored. A full pathname to a
|
|
volume must end with a colon character (:).
|
|
vRefNum input: Volume specification (volume reference number, working
|
|
directory number, drive number, or 0).
|
|
realVRefNum output: The real volume reference number.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HGetVInfo(short volReference,
|
|
StringPtr volName,
|
|
short *vRefNum,
|
|
unsigned long *freeBytes,
|
|
unsigned long *totalBytes);
|
|
/* ¦ Get information about a mounted volume.
|
|
The HGetVInfo function returns the name, volume reference number,
|
|
available space (in bytes), and total space (in bytes) for the
|
|
specified volume. You can specify the volume by providing its drive
|
|
number, volume reference number, or 0 for the default volume.
|
|
This routine is compatible with volumes up to 4 gigabytes.
|
|
|
|
volReference input: The drive number, volume reference number,
|
|
or 0 for the default volume.
|
|
volName input: A pointer to a buffer (minimum Str27) where
|
|
the volume name is to be returned or must
|
|
be nil.
|
|
output: The volume name.
|
|
vRefNum output: The volume reference number.
|
|
freeBytes output: The number of free bytes on the volume.
|
|
freeBytes is an unsigned long value.
|
|
totalBytes output: The total number of bytes on the volume.
|
|
totalBytes is an unsigned long value.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume
|
|
|
|
__________
|
|
|
|
Also see: XGetVInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr XGetVInfo(short volReference,
|
|
StringPtr volName,
|
|
short *vRefNum,
|
|
UnsignedWide *freeBytes,
|
|
UnsignedWide *totalBytes);
|
|
/* ¦ Get extended information about a mounted volume.
|
|
The XGetVInfo function returns the name, volume reference number,
|
|
available space (in bytes), and total space (in bytes) for the
|
|
specified volume. You can specify the volume by providing its drive
|
|
number, volume reference number, or 0 for the default volume.
|
|
This routine is compatible with volumes up to 2 terabytes.
|
|
|
|
volReference input: The drive number, volume reference number,
|
|
or 0 for the default volume.
|
|
volName input: A pointer to a buffer (minimum Str27) where
|
|
the volume name is to be returned or must
|
|
be nil.
|
|
output: The volume name.
|
|
vRefNum output: The volume reference number.
|
|
freeBytes output: The number of free bytes on the volume.
|
|
freeBytes is an UnsignedWide value.
|
|
totalBytes output: The total number of bytes on the volume.
|
|
totalBytes is an UnsignedWide value.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume
|
|
|
|
__________
|
|
|
|
Also see: HGetVInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr CheckVolLock(ConstStr255Param pathname,
|
|
short vRefNum);
|
|
/* ¦ Determine if a volume is locked.
|
|
The CheckVolLock function determines if a volume is locked - either by
|
|
hardware or by software. If CheckVolLock returns noErr, then the volume
|
|
is not locked.
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you pass in a
|
|
partial pathname, it is ignored. A full pathname to a
|
|
volume must end with a colon character (:).
|
|
vRefNum input: Volume specification (volume reference number, working
|
|
directory number, drive number, or 0).
|
|
|
|
Result Codes
|
|
noErr 0 No error - volume not locked
|
|
nsvErr -35 No such volume
|
|
wPrErr -44 Volume locked by hardware
|
|
vLckdErr -46 Volume locked by software
|
|
paramErr -50 No default volume
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetDriverName(short driverRefNum,
|
|
Str255 driverName);
|
|
/* ¦ Get a device driver's name.
|
|
The GetDriverName function returns a device driver's name.
|
|
|
|
driverRefNum input: The driver reference number.
|
|
driverName output: The driver's name.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
badUnitErr -21 Bad driver reference number
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FindDrive(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
DrvQElPtr *driveQElementPtr);
|
|
/* ¦ Find a volume's drive queue element in the drive queue.
|
|
The FindDrive function returns a pointer to a mounted volume's
|
|
drive queue element.
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you
|
|
pass in a partial pathname, it is ignored.
|
|
A full pathname to a volume must end with
|
|
a colon character (:).
|
|
vRefNum input: Volume specification (volume reference
|
|
number, working directory number, drive
|
|
number, or 0).
|
|
driveQElementPtr output: Pointer to a volume's drive queue element
|
|
in the drive queue. DO NOT change the
|
|
DrvQEl.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume
|
|
nsDrvErr -56 No such drive
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetDiskBlocks(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
unsigned long *numBlocks);
|
|
/* ¦ Return the number of physical disk blocks on a disk drive.
|
|
The GetDiskBlocks function returns the number of physical disk
|
|
blocks on a disk drive. NOTE: This is not the same as volume
|
|
allocation blocks!
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you
|
|
pass in a partial pathname, it is ignored.
|
|
A full pathname to a volume must end with
|
|
a colon character (:).
|
|
vRefNum input: Volume specification (volume reference
|
|
number, working directory number, drive
|
|
number, or 0).
|
|
numBlocks output: The number of physical disk blocks on the disk drive.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume, driver reference
|
|
number is zero, ReturnFormatList
|
|
returned zero blocks, DriveStatus
|
|
returned an unknown value, or
|
|
driveQElementPtr->qType is unknown
|
|
nsDrvErr -56 No such drive
|
|
statusErr Ð18 Driver does not respond to this
|
|
status request
|
|
badUnitErr Ð21 Driver reference number does not
|
|
match unit table
|
|
unitEmptyErr Ð22 Driver reference number specifies
|
|
a nil handle in unit table
|
|
abortErr Ð27 Request aborted by KillIO
|
|
notOpenErr Ð28 Driver not open
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetVolFileSystemID(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
short *fileSystemID);
|
|
/* ¦ Get a volume's file system ID.
|
|
The GetVolFileSystemID function returned the file system ID of
|
|
a mounted volume. The file system ID identifies the file system
|
|
that handles requests to a particular volume. Here's a partial list
|
|
of file system ID numbers (only Apple's file systems are listed):
|
|
FSID File System
|
|
----- -----------------------------------------------------
|
|
$0000 Macintosh HFS or MFS
|
|
$0100 ProDOS File System
|
|
$0101 PowerTalk Mail Enclosures
|
|
$4147 ISO 9660 File Access (through Foreign File Access)
|
|
$4242 High Sierra File Access (through Foreign File Access)
|
|
$464D QuickTake File System (through Foreign File Access)
|
|
$4953 Macintosh PC Exchange (MS-DOS)
|
|
$4A48 Audio CD Access (through Foreign File Access)
|
|
$4D4B Apple Photo Access (through Foreign File Access)
|
|
|
|
See the Technical Note "FL 35 - Determining Which File System
|
|
Is Active" and the "Guide to the File System Manager" for more
|
|
information.
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you pass
|
|
in a partial pathname, it is ignored. A full
|
|
pathname to a volume must contain at least
|
|
one colon character (:) and must not start with
|
|
a colon character.
|
|
vRefNum input: Volume specification (volume reference number,
|
|
working directory number, drive number, or 0).
|
|
fileSystemID output: The volume's file system ID.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume, or pb was NULL
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetVolState(ConstStr255Param pathname,
|
|
short vRefNum,
|
|
Boolean *volumeOnline,
|
|
Boolean *volumeEjected,
|
|
Boolean *driveEjectable,
|
|
Boolean *driverWantsEject);
|
|
/* ¦ Returns a volume's online and eject information.
|
|
The GetVolState function determines if a volume is online or offline,
|
|
if an offline volume is ejected, and if the volume's driver is
|
|
ejectable or wants eject calls.
|
|
|
|
pathName input: Pointer to a full pathname or nil.
|
|
vRefNum input: Volume specification (volume reference number,
|
|
working directory number, drive number, or 0).
|
|
volumeOnline output: True if the volume is online;
|
|
False if the volume is offline.
|
|
volumeEjected output: True if the volume is ejected (ejected
|
|
volumes are always offline); False if the
|
|
volume is not ejected.
|
|
driveEjectable output: True if the volume's drive is ejectable;
|
|
False if the volume's drive is not ejectable.
|
|
driverWantsEject output: True if the volume's driver wants an Eject
|
|
request after unmount (even if the drive
|
|
is not ejectable); False if the volume's
|
|
driver does not need an eject request.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
paramErr -50 No default volume, or pb was NULL
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr UnmountAndEject(ConstStr255Param pathname,
|
|
short vRefNum);
|
|
/* ¦ Unmount and eject a volume.
|
|
The UnmountAndEject function unmounts and ejects a volume. The volume
|
|
is ejected only if it is ejectable and not already ejected.
|
|
|
|
pathName input: Pointer to a full pathname or nil. If you pass in a
|
|
partial pathname, it is ignored. A full pathname to a
|
|
volume must end with a colon character (:).
|
|
vRefNum input: Volume specification (volume reference number, working
|
|
directory number, drive number, or 0).
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad volume name
|
|
fBsyErr -47 One or more files are open
|
|
paramErr -50 No default volume
|
|
nsDrvErr -56 No such drive
|
|
extFSErr -58 External file system error - no file
|
|
system claimed this call.
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr OnLine(FSSpecPtr volumes,
|
|
short reqVolCount,
|
|
short *actVolCount,
|
|
short *volIndex);
|
|
/* ¦ Return the list of volumes currently mounted.
|
|
The OnLine function returns the list of volumes currently mounted in
|
|
an array of FSSpec records.
|
|
|
|
A noErr result indicates that the volumes array was filled
|
|
(actVolCount == reqVolCount) and there may be additional volumes
|
|
mounted. A nsvErr result indicates that the end of the volume list
|
|
was found and actVolCount volumes were actually found this time.
|
|
|
|
volumes input: Pointer to array of FSSpec where the volume list
|
|
is returned.
|
|
reqVolCount input: Maximum number of volumes to return (the number of
|
|
elements in the volumes array).
|
|
actVolCount output: The number of volumes actually returned.
|
|
volIndex input: The current volume index position. Set to 1 to
|
|
start with the first volume.
|
|
output: The volume index position to get the next volume.
|
|
Pass this value the next time you call OnLine to
|
|
start where you left off.
|
|
|
|
Result Codes
|
|
noErr 0 No error, but there are more volumes
|
|
to list
|
|
nsvErr -35 No more volumes to be listed
|
|
paramErr -50 volIndex was <= 0
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetDefault(short newVRefNum,
|
|
long newDirID,
|
|
short *oldVRefNum,
|
|
long *oldDirID);
|
|
/* ¦ Set the default volume before making Standard I/O requests.
|
|
The SetDefault function sets the default volume and directory to the
|
|
volume specified by newVRefNum and the directory specified by newDirID.
|
|
The current default volume reference number and directory ID are
|
|
returned in oldVRefNum and oldDir and must be used to restore the
|
|
default volume and directory to their previous state *as soon as
|
|
possible* with the RestoreDefault function. These two functions are
|
|
designed to be used as a wrapper around Standard I/O routines where
|
|
the location of the file is implied to be the default volume and
|
|
directory. In other words, this is how you should use these functions:
|
|
|
|
error = SetDefault(newVRefNum, newDirID, &oldVRefNum, &oldDirID);
|
|
if ( error == noErr )
|
|
{
|
|
// call the Stdio functions like remove, rename, tmpfile,
|
|
// fopen, freopen, etc. or non-ANSI extensions like
|
|
// fdopen,fsetfileinfo, -- create, open, unlink, etc. here!
|
|
|
|
error = RestoreDefault(oldVRefNum, oldDirID);
|
|
}
|
|
|
|
By using these functions as a wrapper, you won't need to open a working
|
|
directory (because SetDefault and RestoreDefault use HSetVol) and you
|
|
won't have to worry about the effects of using HSetVol (documented in
|
|
Technical Note "FL 11 - PBHSetVol is Dangerous" and in the
|
|
Inside Macintosh: Files book in the description of the HSetVol and
|
|
PBHSetVol functions) because the default volume/directory is restored
|
|
before giving up control to code that might be affected by HSetVol.
|
|
|
|
newVRefNum input: Volume specification (volume reference number,
|
|
working directory number, drive number, or 0) of
|
|
the new default volume.
|
|
newDirID input: Directory ID of the new default directory.
|
|
oldVRefNum output: The volume specification to save for use with
|
|
RestoreDefault.
|
|
oldDirID output: The directory ID to save for use with
|
|
RestoreDefault.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
bdNamErr -37 Bad volume name
|
|
fnfErr -43 Directory not found
|
|
paramErr -50 No default volume
|
|
afpAccessDenied -5000 User does not have access to the directory
|
|
|
|
__________
|
|
|
|
Also see: RestoreDefault
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr RestoreDefault(short oldVRefNum,
|
|
long oldDirID);
|
|
/* ¦ Restore the default volume after making Standard C I/O requests.
|
|
The RestoreDefault function restores the default volume and directory
|
|
to the volume specified by oldVRefNum and the directory specified by
|
|
oldDirID. The oldVRefNum and oldDirID parameters were previously
|
|
obtained from the SetDefault function. These two functions are designed
|
|
to be used as a wrapper around Standard C I/O routines where the
|
|
location of the file is implied to be the default volume and directory.
|
|
In other words, this is how you should use these functions:
|
|
|
|
error = SetDefault(newVRefNum, newDirID, &oldVRefNum, &oldDirID);
|
|
if ( error == noErr )
|
|
{
|
|
// call the Stdio functions like remove, rename, tmpfile,
|
|
// fopen, freopen, etc. or non-ANSI extensions like
|
|
// fdopen,fsetfileinfo, -- create, open, unlink, etc. here!
|
|
|
|
error = RestoreDefault(oldVRefNum, oldDirID);
|
|
}
|
|
|
|
By using these functions as a wrapper, you won't need to open a working
|
|
directory (because SetDefault and RestoreDefault use HSetVol) and you
|
|
won't have to worry about the effects of using HSetVol (documented in
|
|
Technical Note "FL 11 - PBHSetVol is Dangerous" and in the
|
|
Inside Macintosh: Files book in the description of the HSetVol and
|
|
PBHSetVol functions) because the default volume/directory is restored
|
|
before giving up control to code that might be affected by HSetVol.
|
|
|
|
oldVRefNum input: The volume specification to restore.
|
|
oldDirID input: The directory ID to restore.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
bdNamErr -37 Bad volume name
|
|
fnfErr -43 Directory not found
|
|
paramErr -50 No default volume
|
|
rfNumErr -51 Bad working directory reference number
|
|
afpAccessDenied -5000 User does not have access to the directory
|
|
|
|
__________
|
|
|
|
Also see: SetDefault
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetDInfo(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
DInfo *fndrInfo);
|
|
/* ¦ Get the finder information for a directory.
|
|
The GetDInfo function gets the finder information for a directory.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID
|
|
specifies a directory that's the object.
|
|
fndrInfo output: If the object is a directory, then its DInfo.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: FSpGetDInfo, FSpGetFInfoCompat
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpGetDInfo(const FSSpec *spec,
|
|
DInfo *fndrInfo);
|
|
/* ¦ Get the finder information for a directory.
|
|
The FSpGetDInfo function gets the finder information for a directory.
|
|
|
|
spec input: An FSSpec record specifying the directory.
|
|
fndrInfo output: If the object is a directory, then its DInfo.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: FSpGetFInfoCompat, GetDInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetDInfo(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
const DInfo *fndrInfo);
|
|
/* ¦ Set the finder information for a directory.
|
|
The SetDInfo function sets the finder information for a directory.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID
|
|
specifies a directory that's the object.
|
|
fndrInfo input: The DInfo.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: FSpSetDInfo, FSpSetFInfoCompat
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetDInfo(const FSSpec *spec,
|
|
const DInfo *fndrInfo);
|
|
/* ¦ Set the finder information for a directory.
|
|
The FSpSetDInfo function sets the finder information for a directory.
|
|
|
|
spec input: An FSSpec record specifying the directory.
|
|
fndrInfo input: The DInfo.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: FSpSetFInfoCompat, SetDInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
#if OLDROUTINENAMES
|
|
#define GetDirID(vRefNum, dirID, name, theDirID, isDirectory) \
|
|
GetDirectoryID(vRefNum, dirID, name, theDirID, isDirectory)
|
|
#endif
|
|
|
|
pascal OSErr GetDirectoryID(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
long *theDirID,
|
|
Boolean *isDirectory);
|
|
/* ¦ Get the directory ID number of the directory specified.
|
|
The GetDirectoryID function gets the directory ID number of the
|
|
directory specified. If a file is specified, then the parent
|
|
directory of the file is returned and isDirectory is false. If
|
|
a directory is specified, then that directory's ID number is
|
|
returned and isDirectory is true.
|
|
WARNING: Volume names on the Macintosh are *not* unique -- Multiple
|
|
mounted volumes can have the same name. For this reason, the use of a
|
|
volume name or full pathname to identify a specific volume may not
|
|
produce the results you expect. If more than one volume has the same
|
|
name and a volume name or full pathname is used, the File Manager
|
|
currently uses the first volume it finds with a matching name in the
|
|
volume queue.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID
|
|
specifies a directory that's the object.
|
|
theDirID output: If the object is a file, then its parent directory
|
|
ID. If the object is a directory, then its ID.
|
|
isDirectory output: True if object is a directory; false if
|
|
object is a file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
#if OLDROUTINENAMES
|
|
#define DirIDFromFSSpec(spec, theDirID, isDirectory) \
|
|
FSpGetDirectoryID(spec, theDirID, isDirectory)
|
|
#endif
|
|
|
|
pascal OSErr FSpGetDirectoryID(const FSSpec *spec,
|
|
long *theDirID,
|
|
Boolean *isDirectory);
|
|
/* ¦ Get the directory ID number of a directory.
|
|
The FSpGetDirectoryID function gets the directory ID number of the
|
|
directory specified by spec. If spec is to a file, then the parent
|
|
directory of the file is returned and isDirectory is false. If
|
|
spec is to a directory, then that directory's ID number is
|
|
returned and isDirectory is true.
|
|
|
|
spec input: An FSSpec record specifying the directory.
|
|
theDirID output: The directory ID.
|
|
isDirectory output: True if object is a directory; false if
|
|
object is a file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetDirName(short vRefNum,
|
|
long dirID,
|
|
Str31 name);
|
|
/* ¦ Get the name of a directory from its directory ID.
|
|
The GetDirName function gets the name of a directory from its
|
|
directory ID.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name output: Points to a Str31 where the directory name is to be
|
|
returned.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume or
|
|
name parameter was NULL
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetIOACUser(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
SInt8 *ioACUser);
|
|
/* ¦ Get a directory's access restrictions byte.
|
|
GetIOACUser returns a directory's access restrictions byte.
|
|
Use the masks and macro defined in MoreFilesExtras to check for
|
|
specific access priviledges.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID
|
|
specifies a directory that's the object.
|
|
ioACUser output: The access restriction byte
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpGetIOACUser(const FSSpec *spec,
|
|
SInt8 *ioACUser);
|
|
/* ¦ Get a directory's access restrictions byte.
|
|
FSpGetIOACUser returns a directory's access restrictions byte.
|
|
Use the masks and macro defined in MoreFilesExtras to check for
|
|
specific access priviledges.
|
|
|
|
spec input: An FSSpec record specifying the directory.
|
|
ioACUser output: The access restriction byte
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetParentID(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
long *parID);
|
|
/* ¦ Get the parent directory ID number of the specified object.
|
|
The GetParentID function gets the parent directory ID number of the
|
|
specified object.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
parID output: The parent directory ID of the specified object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetFilenameFromPathname(ConstStr255Param pathname,
|
|
Str255 filename);
|
|
/* ¦ Get the object name from the end of a full or partial pathname.
|
|
The GetFilenameFromPathname function gets the file (or directory) name
|
|
from the end of a full or partial pathname. Returns notAFileErr if the
|
|
pathname is nil, the pathname is empty, or the pathname cannot refer to
|
|
a filename (with a noErr result, the pathname could still refer to a
|
|
directory).
|
|
|
|
pathname input: A full or partial pathname.
|
|
filename output: The file (or directory) name.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
notAFileErr -1302 The pathname is nil, the pathname
|
|
is empty, or the pathname cannot refer
|
|
to a filename
|
|
|
|
__________
|
|
|
|
See also: GetObjectLocation.
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetObjectLocation(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param pathname,
|
|
short *realVRefNum,
|
|
long *realParID,
|
|
Str255 realName,
|
|
Boolean *isDirectory);
|
|
/* ¦ Get a file system object's location.
|
|
The GetObjectLocation function gets a file system object's location -
|
|
that is, its real volume reference number, real parent directory ID,
|
|
and name. While we're at it, determine if the object is a file or directory.
|
|
If GetObjectLocation returns fnfErr, then the location information
|
|
returned is valid, but it describes an object that doesn't exist.
|
|
You can use the location information for another operation, such as
|
|
creating a file or directory.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
pathname input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
realVRefNum output: The real volume reference number.
|
|
realParID output: The parent directory ID of the specified object.
|
|
realName output: The name of the specified object (the case of the
|
|
object name may not be the same as the object's
|
|
catalog entry on disk - since the Macintosh file
|
|
system is not case sensitive, it shouldn't matter).
|
|
isDirectory output: True if object is a directory; false if object
|
|
is a file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
notAFileErr -1302 The pathname is nil, the pathname
|
|
is empty, or the pathname cannot refer
|
|
to a filename
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSMakeFSSpecCompat
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetDirItems(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
Boolean getFiles,
|
|
Boolean getDirectories,
|
|
FSSpecPtr items,
|
|
short reqItemCount,
|
|
short *actItemCount,
|
|
short *itemIndex);
|
|
/* ¦ Return a list of items in a directory.
|
|
The GetDirItems function returns a list of items in the specified
|
|
directory in an array of FSSpec records. File, subdirectories, or
|
|
both can be returned in the list.
|
|
|
|
A noErr result indicates that the items array was filled
|
|
(actItemCount == reqItemCount) and there may be additional items
|
|
left in the directory. A fnfErr result indicates that the end of
|
|
the directory list was found and actItemCount items were actually
|
|
found this time.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID
|
|
specifies a directory that's the object.
|
|
getFiles input: Pass true to have files added to the items list.
|
|
getDirectories input: Pass true to have directories added to the
|
|
items list.
|
|
items input: Pointer to array of FSSpec where the item list
|
|
is returned.
|
|
reqItemCount input: Maximum number of items to return (the number
|
|
of elements in the items array).
|
|
actItemCount output: The number of items actually returned.
|
|
itemIndex input: The current item index position. Set to 1 to
|
|
start with the first item in the directory.
|
|
output: The item index position to get the next item.
|
|
Pass this value the next time you call
|
|
GetDirItems to start where you left off.
|
|
|
|
Result Codes
|
|
noErr 0 No error, but there are more items
|
|
to list
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found, there are no more items
|
|
to be listed.
|
|
paramErr -50 No default volume or itemIndex was <= 0
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr DeleteDirectoryContents(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Delete the contents of a directory.
|
|
The DeleteDirectoryContents function deletes the contents of a directory.
|
|
All files and subdirectories in the specified directory are deleted.
|
|
If a locked file or directory is encountered, it is unlocked and then
|
|
deleted. If any unexpected errors are encountered,
|
|
DeleteDirectoryContents quits and returns to the caller.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to directory name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Software volume lock
|
|
fBsyErr -47 File busy, directory not empty, or working directory control block open
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: DeleteDirectory
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr DeleteDirectory(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Delete a directory and its contents.
|
|
The DeleteDirectory function deletes a directory and its contents.
|
|
All files and subdirectories in the specified directory are deleted.
|
|
If a locked file or directory is encountered, it is unlocked and then
|
|
deleted. After deleting the directories contents, the directory is
|
|
deleted. If any unexpected errors are encountered, DeleteDirectory
|
|
quits and returns to the caller.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to directory name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Software volume lock
|
|
fBsyErr -47 File busy, directory not empty, or working directory control block open
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: DeleteDirectoryContents
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr CheckObjectLock(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Determine if a file or directory is locked.
|
|
The CheckObjectLock function determines if a file or directory is locked.
|
|
If CheckObjectLock returns noErr, then the file or directory
|
|
is not locked. If CheckObjectLock returns fLckdErr, the it is locked.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: FSpCheckObjectLock
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpCheckObjectLock(const FSSpec *spec);
|
|
/* ¦ Determine if a file or directory is locked.
|
|
The FSpCheckObjectLock function determines if a file or directory is locked.
|
|
If FSpCheckObjectLock returns noErr, then the file or directory
|
|
is not locked.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
Also see: CheckObjectLock
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetFileSize(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param fileName,
|
|
long *dataSize,
|
|
long *rsrcSize);
|
|
/* ¦ Get the logical sizes of a file's forks.
|
|
The GetFileSize function returns the logical size of a file's
|
|
data and resource fork.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: The name of the file.
|
|
dataSize output: The number of bytes in the file's data fork.
|
|
rsrcSize output: The number of bytes in the file's resource fork.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErrdirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpGetFileSize
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpGetFileSize(const FSSpec *spec,
|
|
long *dataSize,
|
|
long *rsrcSize);
|
|
/* ¦ Get the logical sizes of a file's forks.
|
|
The FSpGetFileSize function returns the logical size of a file's
|
|
data and resource fork.
|
|
|
|
spec input: An FSSpec record specifying the file.
|
|
dataSize output: The number of bytes in the file's data fork.
|
|
rsrcSize output: The number of bytes in the file's resource fork.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
paramErr -50 No default volume
|
|
dirNFErrdirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: GetFileSize
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr BumpDate(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Update the modification date of a file or directory.
|
|
The BumpDate function changes the modification date of a file or
|
|
directory to the current date/time. If the modification date is already
|
|
equal to the current date/time, then add one second to the
|
|
modification date.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpBumpDate
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpBumpDate(const FSSpec *spec);
|
|
/* ¦ Update the modification date of a file or directory.
|
|
The FSpBumpDate function changes the modification date of a file or
|
|
directory to the current date/time. If the modification date is already
|
|
equal to the current date/time, then add one second to the
|
|
modification date.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: BumpDate
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ChangeCreatorType(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
OSType creator,
|
|
OSType fileType);
|
|
/* ¦ Change the creator or file type of a file.
|
|
The ChangeCreatorType function changes the creator or file type of a file.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: The name of the file.
|
|
creator input: The new creator type or 0x00000000 to leave
|
|
the creator type alone.
|
|
fileType input: The new file type or 0x00000000 to leave the
|
|
file type alone.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
notAFileErr -1302 Name was not a file
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpChangeCreatorType
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpChangeCreatorType(const FSSpec *spec,
|
|
OSType creator,
|
|
OSType fileType);
|
|
/* ¦ Change the creator or file type of a file.
|
|
The FSpChangeCreatorType function changes the creator or file type of a file.
|
|
|
|
spec input: An FSSpec record specifying the file.
|
|
creator input: The new creator type or 0x00000000 to leave
|
|
the creator type alone.
|
|
fileType input: The new file type or 0x00000000 to leave the
|
|
file type alone.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
notAFileErr -1302 Name was not a file
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: ChangeCreatorType
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ChangeFDFlags(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name,
|
|
Boolean setBits,
|
|
unsigned short flagBits);
|
|
/* ¦ Set or clear Finder Flag bits.
|
|
The ChangeFDFlags function sets or clears Finder Flag bits in the
|
|
fdFlags field of a file or directory's FInfo record.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
setBits input: If true, then set the bits specified in flagBits.
|
|
If false, then clear the bits specified in flagBits.
|
|
flagBits input: The flagBits parameter specifies which Finder Flag
|
|
bits to set or clear. If a bit in flagBits is set,
|
|
then the same bit in fdFlags is either set or
|
|
cleared depending on the state of the setBits
|
|
parameter.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpChangeFDFlags
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpChangeFDFlags(const FSSpec *spec,
|
|
Boolean setBits,
|
|
unsigned short flagBits);
|
|
/* ¦ Set or clear Finder Flag bits.
|
|
The FSpChangeFDFlags function sets or clears Finder Flag bits in the
|
|
fdFlags field of a file or directory's FInfo record.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
setBits input: If true, then set the bits specified in flagBits.
|
|
If false, then clear the bits specified in flagBits.
|
|
flagBits input: The flagBits parameter specifies which Finder Flag
|
|
bits to set or clear. If a bit in flagBits is set,
|
|
then the same bit in fdFlags is either set or
|
|
cleared depending on the state of the setBits
|
|
parameter.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: ChangeFDFlags
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetIsInvisible(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Set the invisible Finder Flag bit.
|
|
The SetIsInvisible function sets the invisible bit in the fdFlags
|
|
word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpSetIsInvisible, ClearIsInvisible, FSpClearIsInvisible
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetIsInvisible(const FSSpec *spec);
|
|
/* ¦ Set the invisible Finder Flag bit.
|
|
The FSpSetIsInvisible function sets the invisible bit in the fdFlags
|
|
word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetIsInvisible, ClearIsInvisible, FSpClearIsInvisible
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ClearIsInvisible(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Clear the invisible Finder Flag bit.
|
|
The ClearIsInvisible function clears the invisible bit in the fdFlags
|
|
word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetIsInvisible, FSpSetIsInvisible, FSpClearIsInvisible
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpClearIsInvisible(const FSSpec *spec);
|
|
/* ¦ Clear the invisible Finder Flag bit.
|
|
The FSpClearIsInvisible function clears the invisible bit in the fdFlags
|
|
word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetIsInvisible, FSpSetIsInvisible, ClearIsInvisible
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetNameLocked(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Set the nameLocked Finder Flag bit.
|
|
The SetNameLocked function sets the nameLocked bit in the fdFlags word
|
|
of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpSetNameLocked, ClearNameLocked, FSpClearNameLocked
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetNameLocked(const FSSpec *spec);
|
|
/* ¦ Set the nameLocked Finder Flag bit.
|
|
The FSpSetNameLocked function sets the nameLocked bit in the fdFlags word
|
|
of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetNameLocked, ClearNameLocked, FSpClearNameLocked
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ClearNameLocked(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Clear the nameLocked Finder Flag bit.
|
|
The ClearNameLocked function clears the nameLocked bit in the fdFlags
|
|
word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetNameLocked, FSpSetNameLocked, FSpClearNameLocked
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpClearNameLocked(const FSSpec *spec);
|
|
/* ¦ Clear the nameLocked Finder Flag bit.
|
|
The FSpClearNameLocked function clears the nameLocked bit in the fdFlags
|
|
word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetNameLocked, FSpSetNameLocked, ClearNameLocked
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetIsStationery(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Set the isStationery Finder Flag bit.
|
|
The SetIsStationery function sets the isStationery bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpSetIsStationery, ClearIsStationery, FSpClearIsStationery
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetIsStationery(const FSSpec *spec);
|
|
/* ¦ Set the isStationery Finder Flag bit.
|
|
The FSpSetIsStationery function sets the isStationery bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetIsStationery, ClearIsStationery, FSpClearIsStationery
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ClearIsStationery(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Clear the isStationery Finder Flag bit.
|
|
The ClearIsStationery function clears the isStationery bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetIsStationery, FSpSetIsStationery, FSpClearIsStationery
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpClearIsStationery(const FSSpec *spec);
|
|
/* ¦ Clear the isStationery Finder Flag bit.
|
|
The FSpClearIsStationery function clears the isStationery bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetIsStationery, FSpSetIsStationery, ClearIsStationery
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr SetHasCustomIcon(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Set the hasCustomIcon Finder Flag bit.
|
|
The SetHasCustomIcon function sets the hasCustomIcon bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpSetHasCustomIcon, ClearHasCustomIcon, FSpClearHasCustomIcon
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpSetHasCustomIcon(const FSSpec *spec);
|
|
/* ¦ Set the hasCustomIcon Finder Flag bit.
|
|
The FSpSetHasCustomIcon function sets the hasCustomIcon bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetHasCustomIcon, ClearHasCustomIcon, FSpClearHasCustomIcon
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ClearHasCustomIcon(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Clear the hasCustomIcon Finder Flag bit.
|
|
The ClearHasCustomIcon function clears the hasCustomIcon bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetHasCustomIcon, FSpSetHasCustomIcon, FSpClearHasCustomIcon
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpClearHasCustomIcon(const FSSpec *spec);
|
|
/* ¦ Clear the hasCustomIcon Finder Flag bit.
|
|
The FSpClearHasCustomIcon function clears the hasCustomIcon bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: SetHasCustomIcon, FSpSetHasCustomIcon, ClearHasCustomIcon
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr ClearHasBeenInited(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param name);
|
|
/* ¦ Clear the hasBeenInited Finder Flag bit.
|
|
The ClearHasBeenInited function clears the hasBeenInited bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
name input: Pointer to object name, or nil when dirID specifies
|
|
a directory that's the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpClearHasBeenInited
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpClearHasBeenInited(const FSSpec *spec);
|
|
/* ¦ Clear the hasBeenInited Finder Flag bit.
|
|
The FSpClearHasBeenInited function clears the hasBeenInited bit in the
|
|
fdFlags word of the specified file or directory's finder information.
|
|
|
|
spec input: An FSSpec record specifying the object.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: ClearHasBeenInited
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr CopyFileMgrAttributes(short srcVRefNum,
|
|
long srcDirID,
|
|
ConstStr255Param srcName,
|
|
short dstVRefNum,
|
|
long dstDirID,
|
|
ConstStr255Param dstName,
|
|
Boolean copyLockBit);
|
|
/* ¦ Copy all File Manager attributes from the source to the destination.
|
|
The CopyFileMgrAttributes function copies all File Manager attributes
|
|
from the source file or directory to the destination file or directory.
|
|
If copyLockBit is true, then set the locked state of the destination
|
|
to match the source.
|
|
|
|
srcVRefNum input: Source volume specification.
|
|
srcDirID input: Source directory ID.
|
|
srcName input: Pointer to source object name, or nil when
|
|
srcDirID specifies a directory that's the object.
|
|
dstVRefNum input: Destination volume specification.
|
|
dstDirID input: Destination directory ID.
|
|
dstName input: Pointer to destination object name, or nil when
|
|
dstDirID specifies a directory that's the object.
|
|
copyLockBit input: If true, set the locked state of the destination
|
|
to match the source.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: FSpCopyFileMgrAttributes
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpCopyFileMgrAttributes(const FSSpec *srcSpec,
|
|
const FSSpec *dstSpec,
|
|
Boolean copyLockBit);
|
|
/* ¦ Copy all File Manager attributes from the source to the destination.
|
|
The FSpCopyFileMgrAttributes function copies all File Manager attributes
|
|
from the source file or directory to the destination file or directory.
|
|
If copyLockBit is true, then set the locked state of the destination
|
|
to match the source.
|
|
|
|
srcSpec input: An FSSpec record specifying the source object.
|
|
dstSpec input: An FSSpec record specifying the destination object.
|
|
copyLockBit input: If true, set the locked state of the destination
|
|
to match the source.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename
|
|
fnfErr -43 File not found
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 No default volume
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
|
|
__________
|
|
|
|
See also: CopyFileMgrAttributes
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HOpenAware(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param fileName,
|
|
short denyModes,
|
|
short *refNum);
|
|
/* ¦ Open the data fork of a file using deny mode permissions.
|
|
The HOpenAware function opens the data fork of a file using deny mode
|
|
permissions instead the normal File Manager permissions. If OpenDeny
|
|
is not available, then HOpenAware translates the deny modes to the
|
|
closest File Manager permissions and tries to open the file with
|
|
OpenDF first, and then Open if OpenDF isn't available. By using
|
|
HOpenAware with deny mode permissions, a program can be "AppleShare
|
|
aware" and fall back on the standard File Manager open calls
|
|
automatically.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
fileName input: The name of the file.
|
|
denyModes input: The deny modes access under which to open the file.
|
|
refNum output: The file reference number of the opened file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
tmfoErr -42 Too many files open
|
|
fnfErr -43 File not found
|
|
wPrErr -44 Volume locked by hardware
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
opWrErr -49 File already open for writing
|
|
paramErr -50 No default volume
|
|
permErr -54 File is already open and cannot be opened using specified deny modes
|
|
afpAccessDenied -5000 User does not have the correct access to the file
|
|
afpDenyConflict -5006 Requested access permission not possible
|
|
|
|
__________
|
|
|
|
See also: FSpOpenAware, HOpenRFAware, FSpOpenRFAware
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpOpenAware(const FSSpec *spec,
|
|
short denyModes,
|
|
short *refNum);
|
|
/* ¦ Open the data fork of a file using deny mode permissions.
|
|
The FSpOpenAware function opens the data fork of a file using deny mode
|
|
permissions instead the normal File Manager permissions. If OpenDeny
|
|
is not available, then FSpOpenAware translates the deny modes to the
|
|
closest File Manager permissions and tries to open the file with
|
|
OpenDF first, and then Open if OpenDF isn't available. By using
|
|
FSpOpenAware with deny mode permissions, a program can be "AppleShare
|
|
aware" and fall back on the standard File Manager open calls
|
|
automatically.
|
|
|
|
spec input: An FSSpec record specifying the file.
|
|
denyModes input: The deny modes access under which to open the file.
|
|
refNum output: The file reference number of the opened file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
tmfoErr -42 Too many files open
|
|
fnfErr -43 File not found
|
|
wPrErr -44 Volume locked by hardware
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
opWrErr -49 File already open for writing
|
|
paramErr -50 No default volume
|
|
permErr -54 File is already open and cannot be opened using specified deny modes
|
|
afpAccessDenied -5000 User does not have the correct access to the file
|
|
afpDenyConflict -5006 Requested access permission not possible
|
|
|
|
__________
|
|
|
|
See also: HOpenAware, HOpenRFAware, FSpOpenRFAware
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HOpenRFAware(short vRefNum,
|
|
long dirID,
|
|
ConstStr255Param fileName,
|
|
short denyModes,
|
|
short *refNum);
|
|
/* ¦ Open the resource fork of a file using deny mode permissions.
|
|
The HOpenRFAware function opens the resource fork of a file using deny
|
|
mode permissions instead the normal File Manager permissions. If
|
|
OpenRFDeny is not available, then HOpenRFAware translates the deny
|
|
modes to the closest File Manager permissions and tries to open the
|
|
file with OpenRF. By using HOpenRFAware with deny mode permissions,
|
|
a program can be "AppleShare aware" and fall back on the standard
|
|
File Manager open calls automatically.
|
|
|
|
vRefNum input: Volume specification.
|
|
dirID input: Directory ID.
|
|
fileName input: The name of the file.
|
|
denyModes input: The deny modes access under which to open the file.
|
|
refNum output: The file reference number of the opened file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
tmfoErr -42 Too many files open
|
|
fnfErr -43 File not found
|
|
wPrErr -44 Volume locked by hardware
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
opWrErr -49 File already open for writing
|
|
paramErr -50 No default volume
|
|
permErr -54 File is already open and cannot be opened using specified deny modes
|
|
afpAccessDenied -5000 User does not have the correct access to the file
|
|
afpDenyConflict -5006 Requested access permission not possible
|
|
|
|
__________
|
|
|
|
See also: HOpenAware, FSpOpenAware, FSpOpenRFAware
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpOpenRFAware(const FSSpec *spec,
|
|
short denyModes,
|
|
short *refNum);
|
|
/* ¦ Open the resource fork of a file using deny mode permissions.
|
|
The FSpOpenRFAware function opens the resource fork of a file using deny
|
|
mode permissions instead the normal File Manager permissions. If
|
|
OpenRFDeny is not available, then FSpOpenRFAware translates the deny
|
|
modes to the closest File Manager permissions and tries to open the
|
|
file with OpenRF. By using FSpOpenRFAware with deny mode permissions,
|
|
a program can be "AppleShare aware" and fall back on the standard
|
|
File Manager open calls automatically.
|
|
|
|
spec input: An FSSpec record specifying the file.
|
|
denyModes input: The deny modes access under which to open the file.
|
|
refNum output: The file reference number of the opened file.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 No such volume
|
|
tmfoErr -42 Too many files open
|
|
fnfErr -43 File not found
|
|
wPrErr -44 Volume locked by hardware
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Volume is locked or read-only
|
|
opWrErr -49 File already open for writing
|
|
paramErr -50 No default volume
|
|
permErr -54 File is already open and cannot be opened using specified deny modes
|
|
afpAccessDenied -5000 User does not have the correct access to the file
|
|
afpDenyConflict -5006 Requested access permission not possible
|
|
|
|
__________
|
|
|
|
See also: HOpenAware, FSpOpenAware, HOpenRFAware
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSReadNoCache(short refNum,
|
|
long *count,
|
|
void *buffPtr);
|
|
/* ¦ Read any number of bytes from an open file requesting no caching.
|
|
The FSReadNoCache function reads any number of bytes from an open file
|
|
while asking the file system to bypass its cache mechanism.
|
|
|
|
refNum input: The file reference number of an open file.
|
|
count input: The number of bytes to read.
|
|
output: The number of bytes actually read.
|
|
buffPtr input: A pointer to the data buffer into which the bytes are
|
|
to be read.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
readErr Ð19 Driver does not respond to read requests
|
|
badUnitErr Ð21 Driver reference number does not
|
|
match unit table
|
|
unitEmptyErr Ð22 Driver reference number specifies a
|
|
nil handle in unit table
|
|
abortErr Ð27 Request aborted by KillIO
|
|
notOpenErr Ð28 Driver not open
|
|
ioErr Ð36 Data does not match in read-verify mode
|
|
fnOpnErr -38 File not open
|
|
rfNumErr -51 Bad reference number
|
|
afpAccessDenied -5000 User does not have the correct access to
|
|
the file
|
|
|
|
__________
|
|
|
|
See also: FSWriteNoCache
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSWriteNoCache(short refNum,
|
|
long *count,
|
|
const void *buffPtr);
|
|
/* ¦ Write any number of bytes to an open file requesting no caching.
|
|
The FSReadNoCache function writes any number of bytes to an open file
|
|
while asking the file system to bypass its cache mechanism.
|
|
|
|
refNum input: The file reference number of an open file.
|
|
count input: The number of bytes to write to the file.
|
|
output: The number of bytes actually written.
|
|
buffPtr input: A pointer to the data buffer from which the bytes are
|
|
to be written.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
writErr Ð20 Driver does not respond to write requests
|
|
badUnitErr Ð21 Driver reference number does not
|
|
match unit table
|
|
unitEmptyErr Ð22 Driver reference number specifies a
|
|
nil handle in unit table
|
|
abortErr Ð27 Request aborted by KillIO
|
|
notOpenErr Ð28 Driver not open
|
|
dskFulErr -34 Disk full
|
|
ioErr Ð36 Data does not match in read-verify mode
|
|
fnOpnErr -38 File not open
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Software volume lock
|
|
rfNumErr -51 Bad reference number
|
|
wrPermErr -61 Read/write permission doesnÕt
|
|
allow writing
|
|
afpAccessDenied -5000 User does not have the correct access to
|
|
the file
|
|
|
|
__________
|
|
|
|
See also: FSReadNoCache
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSWriteVerify(short refNum,
|
|
long *count,
|
|
const void *buffPtr);
|
|
/* ¦ Write any number of bytes to an open file and then verify the data was written.
|
|
The FSWriteVerify function writes any number of bytes to an open file
|
|
and then verifies that the data was actually written to the device.
|
|
|
|
refNum input: The file reference number of an open file.
|
|
count input: The number of bytes to write to the file.
|
|
output: The number of bytes actually written and verified.
|
|
buffPtr input: A pointer to the data buffer from which the bytes are
|
|
to be written.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
readErr Ð19 Driver does not respond to read requests
|
|
writErr Ð20 Driver does not respond to write requests
|
|
badUnitErr Ð21 Driver reference number does not
|
|
match unit table
|
|
unitEmptyErr Ð22 Driver reference number specifies a
|
|
nil handle in unit table
|
|
abortErr Ð27 Request aborted by KillIO
|
|
notOpenErr Ð28 Driver not open
|
|
dskFulErr -34 Disk full
|
|
ioErr Ð36 Data does not match in read-verify mode
|
|
fnOpnErr -38 File not open
|
|
eofErr -39 Logical end-of-file reached
|
|
posErr -40 Attempt to position mark before start
|
|
of file
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Software volume lock
|
|
rfNumErr -51 Bad reference number
|
|
gfpErr -52 Error during GetFPos
|
|
wrPermErr -61 Read/write permission doesnÕt
|
|
allow writing
|
|
memFullErr -108 Not enough room in heap zone to allocate
|
|
verify buffer
|
|
afpAccessDenied -5000 User does not have the correct access to
|
|
the file
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr CopyFork(short srcRefNum,
|
|
short dstRefNum,
|
|
void *copyBufferPtr,
|
|
long copyBufferSize);
|
|
/* ¦ Copy all data from the source fork to the destination fork of open file forks.
|
|
The CopyFork function copies all data from the source fork to the
|
|
destination fork of open file forks and makes sure the destination EOF
|
|
is equal to the source EOF.
|
|
|
|
srcRefNum input: The source file reference number.
|
|
dstRefNum input: The destination file reference number.
|
|
copyBufferPtr input: Pointer to buffer to use during copy. The
|
|
buffer should be at least 512-bytes minimum.
|
|
The larger the buffer, the faster the copy.
|
|
copyBufferSize input: The size of the copy buffer.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
readErr Ð19 Driver does not respond to read requests
|
|
writErr Ð20 Driver does not respond to write requests
|
|
badUnitErr Ð21 Driver reference number does not
|
|
match unit table
|
|
unitEmptyErr Ð22 Driver reference number specifies a
|
|
nil handle in unit table
|
|
abortErr Ð27 Request aborted by KillIO
|
|
notOpenErr Ð28 Driver not open
|
|
dskFulErr -34 Disk full
|
|
ioErr Ð36 Data does not match in read-verify mode
|
|
fnOpnErr -38 File not open
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Software volume lock
|
|
rfNumErr -51 Bad reference number
|
|
wrPermErr -61 Read/write permission doesnÕt
|
|
allow writing
|
|
afpAccessDenied -5000 User does not have the correct access to
|
|
the file
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetFileLocation(short refNum,
|
|
short *vRefNum,
|
|
long *dirID,
|
|
StringPtr fileName);
|
|
/* ¦ Get the location of an open file.
|
|
The GetFileLocation function gets the location (volume reference number,
|
|
directory ID, and fileName) of an open file.
|
|
|
|
refNum input: The file reference number of an open file.
|
|
vRefNum output: The volume reference number.
|
|
dirID output: The parent directory ID.
|
|
fileName input: Points to a buffer (minimum Str63) where the
|
|
filename is to be returned or must be nil.
|
|
output: The filename.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 Specified volume doesnÕt exist
|
|
fnOpnErr -38 File not open
|
|
rfNumErr -51 Reference number specifies nonexistent
|
|
access path
|
|
|
|
__________
|
|
|
|
See also: FSpGetFileLocation
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpGetFileLocation(short refNum,
|
|
FSSpec *spec);
|
|
/* ¦ Get the location of an open file in an FSSpec record.
|
|
The FSpGetFileLocation function gets the location of an open file in
|
|
an FSSpec record.
|
|
|
|
refNum input: The file reference number of an open file.
|
|
spec output: FSSpec record containing the file name and location.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 Specified volume doesnÕt exist
|
|
fnOpnErr -38 File not open
|
|
rfNumErr -51 Reference number specifies nonexistent
|
|
access path
|
|
|
|
__________
|
|
|
|
See also: GetFileLocation
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr CopyDirectoryAccess(short srcVRefNum,
|
|
long srcDirID,
|
|
ConstStr255Param srcName,
|
|
short dstVRefNum,
|
|
long dstDirID,
|
|
ConstStr255Param dstName);
|
|
/* ¦ Copy the AFP directory access privileges.
|
|
The CopyDirectoryAccess function copies the AFP directory access
|
|
privileges from one directory to another. Both directories must be on
|
|
the same file server, but not necessarily on the same server volume.
|
|
|
|
srcVRefNum input: Source volume specification.
|
|
srcDirID input: Source directory ID.
|
|
srcName input: Pointer to source directory name, or nil when
|
|
srcDirID specifies the directory.
|
|
dstVRefNum input: Destination volume specification.
|
|
dstDirID input: Destination directory ID.
|
|
dstName input: Pointer to destination directory name, or nil when
|
|
dstDirID specifies the directory.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 Volume not found
|
|
fnfErr -43 Directory not found
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 Volume doesn't support this function
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
to the directory
|
|
afpObjectTypeErr -5025 Object is a file, not a directory
|
|
|
|
__________
|
|
|
|
See also: FSpCopyDirectoryAccess
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpCopyDirectoryAccess(const FSSpec *srcSpec,
|
|
const FSSpec *dstSpec);
|
|
/* ¦ Copy the AFP directory access privileges.
|
|
The FSpCopyDirectoryAccess function copies the AFP directory access
|
|
privileges from one directory to another. Both directories must be on
|
|
the same file server, but not necessarily on the same server volume.
|
|
|
|
srcSpec input: An FSSpec record specifying the source directory.
|
|
dstSpec input: An FSSpec record specifying the destination directory.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
nsvErr -35 Volume not found
|
|
fnfErr -43 Directory not found
|
|
vLckdErr -46 Volume is locked or read-only
|
|
paramErr -50 Volume doesn't support this function
|
|
afpAccessDenied -5000 User does not have the correct access
|
|
to the directory
|
|
afpObjectTypeErr -5025 Object is a file, not a directory
|
|
|
|
__________
|
|
|
|
See also: CopyDirectoryAccess
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr HMoveRenameCompat(short vRefNum,
|
|
long srcDirID,
|
|
ConstStr255Param srcName,
|
|
long dstDirID,
|
|
ConstStr255Param dstpathName,
|
|
ConstStr255Param copyName);
|
|
/* ¦ Move a file or directory and optionally rename it.
|
|
The HMoveRenameCompat function moves a file or directory and optionally
|
|
renames it. The source and destination locations must be on the same
|
|
volume. This routine works even if the volume doesn't support MoveRename.
|
|
|
|
vRefNum input: Volume specification.
|
|
srcDirID input: Source directory ID.
|
|
srcName input: The source object name.
|
|
dstDirID input: Destination directory ID.
|
|
dstName input: Pointer to destination directory name, or
|
|
nil when dstDirID specifies a directory.
|
|
copyName input: Points to the new name if the object is to be
|
|
renamed or nil if the object isn't to be renamed.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
dirFulErr -33 File directory full
|
|
dskFulErr -34 Disk is full
|
|
nsvErr -35 Volume not found
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename or attempt to move into
|
|
a file
|
|
fnfErr -43 Source file or directory not found
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Destination volume is read-only
|
|
fBsyErr -47 File busy, directory not empty, or
|
|
working directory control block open
|
|
dupFNErr -48 Destination already exists
|
|
paramErr -50 Volume doesn't support this function,
|
|
no default volume, or source and
|
|
volOfflinErr -53 Volume is offline
|
|
fsRnErr -59 Problem during rename
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
badMovErr -122 Attempted to move directory into
|
|
offspring
|
|
wrgVolTypErr -123 Not an HFS volume (it's a MFS volume)
|
|
notAFileErr -1302 The pathname is nil, the pathname
|
|
is empty, or the pathname cannot refer
|
|
to a filename
|
|
diffVolErr -1303 Files on different volumes
|
|
afpAccessDenied -5000 The user does not have the right to
|
|
move the file or directory
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
afpSameObjectErr -5038 Source and destination files are the same
|
|
|
|
__________
|
|
|
|
See also: FSpMoveRenameCompat
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr FSpMoveRenameCompat(const FSSpec *srcSpec,
|
|
const FSSpec *dstSpec,
|
|
ConstStr255Param copyName);
|
|
/* ¦ Move a file or directory and optionally rename it.
|
|
The FSpMoveRenameCompat function moves a file or directory and optionally
|
|
renames it. The source and destination locations must be on the same
|
|
volume. This routine works even if the volume doesn't support MoveRename.
|
|
|
|
srcSpec input: An FSSpec record specifying the source object.
|
|
dstSpec input: An FSSpec record specifying the destination
|
|
directory.
|
|
copyName input: Points to the new name if the object is to be
|
|
renamed or nil if the object isn't to be renamed.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
dirFulErr -33 File directory full
|
|
dskFulErr -34 Disk is full
|
|
nsvErr -35 Volume not found
|
|
ioErr -36 I/O error
|
|
bdNamErr -37 Bad filename or attempt to move into
|
|
a file
|
|
fnfErr -43 Source file or directory not found
|
|
wPrErr -44 Hardware volume lock
|
|
fLckdErr -45 File is locked
|
|
vLckdErr -46 Destination volume is read-only
|
|
fBsyErr -47 File busy, directory not empty, or
|
|
working directory control block open
|
|
dupFNErr -48 Destination already exists
|
|
paramErr -50 Volume doesn't support this function,
|
|
no default volume, or source and
|
|
volOfflinErr -53 Volume is offline
|
|
fsRnErr -59 Problem during rename
|
|
dirNFErr -120 Directory not found or incomplete pathname
|
|
badMovErr -122 Attempted to move directory into
|
|
offspring
|
|
wrgVolTypErr -123 Not an HFS volume (it's a MFS volume)
|
|
notAFileErr -1302 The pathname is nil, the pathname
|
|
is empty, or the pathname cannot refer
|
|
to a filename
|
|
diffVolErr -1303 Files on different volumes
|
|
afpAccessDenied -5000 The user does not have the right to
|
|
move the file or directory
|
|
afpObjectTypeErr -5025 Directory not found or incomplete pathname
|
|
afpSameObjectErr -5038 Source and destination files are the same
|
|
|
|
__________
|
|
|
|
See also: HMoveRenameCompat
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr BuildAFPVolMountInfo(short flags,
|
|
char nbpInterval,
|
|
char nbpCount,
|
|
short uamType,
|
|
Str32 zoneName,
|
|
Str31 serverName,
|
|
Str27 volName,
|
|
Str31 userName,
|
|
Str8 userPassword,
|
|
Str8 volPassword,
|
|
AFPVolMountInfoPtr *afpInfoPtr);
|
|
/* ¦ Allocate and initializes the fields of an AFPVolMountInfo record.
|
|
The BuildAFPVolMountInfo function allocates and initializes the fields
|
|
of an AFPVolMountInfo record before using that record to call
|
|
the VolumeMount function.
|
|
|
|
flags input: The AFP mounting flags. 0 = normal mount;
|
|
set bit 0 to inhibit greeting messages.
|
|
nbpInterval input: The interval used for VolumeMount's
|
|
NBP Lookup call. 7 is a good choice.
|
|
nbpCount input: The retry count used for VolumeMount's
|
|
NBP Lookup call. 5 is a good choice.
|
|
uamType input: The user authentication method to use.
|
|
zoneName input: The AppleTalk zone name of the server.
|
|
serverName input: The AFP server name.
|
|
volName input: The AFP volume name.
|
|
userName input: The user name (zero length Pascal string for
|
|
guest).
|
|
userPassWord input: The user password (zero length Pascal string
|
|
if no user password)
|
|
volPassWord input: The volume password (zero length Pascal string
|
|
if no volume password)
|
|
afpInfoPtr output: A pointer to the newly created and initialized
|
|
AFPVolMountInfo record. If the function fails to
|
|
create an AFPVolMountInfo record, it sets
|
|
afpInfoPtr to NULL and the function result is
|
|
memFullErr. Your program is responsible
|
|
for disposing of this pointer when it is finished
|
|
with it.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
memFullErr -108 memory full error
|
|
|
|
__________
|
|
|
|
Also see: GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
|
|
RetrieveAFPVolMountInfo, BuildAFPXVolMountInfo,
|
|
RetrieveAFPXVolMountInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr RetrieveAFPVolMountInfo(AFPVolMountInfoPtr afpInfoPtr,
|
|
short *flags,
|
|
short *uamType,
|
|
StringPtr zoneName,
|
|
StringPtr serverName,
|
|
StringPtr volName,
|
|
StringPtr userName);
|
|
/* ¦ Retrieve the AFP mounting information from an AFPVolMountInfo record.
|
|
The RetrieveAFPVolMountInfo function retrieves the AFP mounting
|
|
information returned in an AFPVolMountInfo record by the
|
|
GetVolMountInfo function.
|
|
|
|
afpInfoPtr input: Pointer to AFPVolMountInfo record that contains
|
|
the AFP mounting information.
|
|
flags output: The AFP mounting flags.
|
|
uamType output: The user authentication method used.
|
|
zoneName output: The AppleTalk zone name of the server.
|
|
serverName output: The AFP server name.
|
|
volName output: The AFP volume name.
|
|
userName output: The user name (zero length Pascal string for
|
|
guest).
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
paramErr -50 media field in AFP mounting information
|
|
was not AppleShareMediaType
|
|
|
|
__________
|
|
|
|
Also see: GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
|
|
BuildAFPVolMountInfo, BuildAFPXVolMountInfo,
|
|
RetrieveAFPXVolMountInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr BuildAFPXVolMountInfo(short flags,
|
|
char nbpInterval,
|
|
char nbpCount,
|
|
short uamType,
|
|
Str32 zoneName,
|
|
Str31 serverName,
|
|
Str27 volName,
|
|
Str31 userName,
|
|
Str8 userPassword,
|
|
Str8 volPassword,
|
|
Str32 uamName,
|
|
unsigned long alternateAddressLength,
|
|
void *alternateAddress,
|
|
AFPXVolMountInfoPtr *afpXInfoPtr);
|
|
/* ¦ Allocate and initializes the fields of an AFPXVolMountInfo record.
|
|
The BuildAFPXVolMountInfo function allocates and initializes the fields
|
|
of an AFPXVolMountInfo record before using that record to call
|
|
the VolumeMount function.
|
|
|
|
flags input: The AFP mounting flags.
|
|
nbpInterval input: The interval used for VolumeMount's
|
|
NBP Lookup call. 7 is a good choice.
|
|
nbpCount input: The retry count used for VolumeMount's
|
|
NBP Lookup call. 5 is a good choice.
|
|
uamType input: The user authentication method to use.
|
|
zoneName input: The AppleTalk zone name of the server.
|
|
serverName input: The AFP server name.
|
|
volName input: The AFP volume name.
|
|
userName input: The user name (zero length Pascal string
|
|
for guest).
|
|
userPassWord input: The user password (zero length Pascal
|
|
string if no user password)
|
|
volPassWord input: The volume password (zero length Pascal
|
|
string if no volume password)
|
|
uamName input: The User Authentication Method name.
|
|
alternateAddressLength input: Length of alternateAddress data.
|
|
alternateAddress input The AFPAlternateAddress (variable length)
|
|
afpXInfoPtr output: A pointer to the newly created and
|
|
initialized AFPVolMountInfo record.
|
|
If the function fails to create an
|
|
AFPVolMountInfo record, it sets
|
|
afpInfoPtr to NULL and the function
|
|
result is memFullErr. Your program is
|
|
responsible for disposing of this pointer
|
|
when it is finished with it.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
memFullErr -108 memory full error
|
|
|
|
__________
|
|
|
|
Also see: GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
|
|
BuildAFPVolMountInfo, RetrieveAFPVolMountInfo,
|
|
RetrieveAFPXVolMountInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr RetrieveAFPXVolMountInfo(AFPXVolMountInfoPtr afpXInfoPtr,
|
|
short *flags,
|
|
short *uamType,
|
|
StringPtr zoneName,
|
|
StringPtr serverName,
|
|
StringPtr volName,
|
|
StringPtr userName,
|
|
StringPtr uamName,
|
|
unsigned long *alternateAddressLength,
|
|
AFPAlternateAddress **alternateAddress);
|
|
/* ¦ Retrieve the AFP mounting information from an AFPXVolMountInfo record.
|
|
The RetrieveAFPXVolMountInfo function retrieves the AFP mounting
|
|
information returned in an AFPXVolMountInfo record by the
|
|
GetVolMountInfo function.
|
|
|
|
afpXInfoPtr input: Pointer to AFPXVolMountInfo record that
|
|
contains the AFP mounting information.
|
|
flags output: The AFP mounting flags.
|
|
uamType output: The user authentication method used.
|
|
zoneName output: The AppleTalk zone name of the server.
|
|
serverName output: The AFP server name.
|
|
volName output: The AFP volume name.
|
|
userName output: The user name (zero length Pascal
|
|
string for guest).
|
|
uamName output: The User Authentication Method name.
|
|
alternateAddressLength output: Length of alternateAddress data returned.
|
|
alternateAddress: output: A pointer to the newly created and
|
|
AFPAlternateAddress record (a variable
|
|
length record). If the function fails to
|
|
create an AFPAlternateAddress record,
|
|
it sets alternateAddress to NULL and the
|
|
function result is memFullErr. Your
|
|
program is responsible for disposing of
|
|
this pointer when it is finished with it.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
paramErr -50 media field in AFP mounting information
|
|
was not AppleShareMediaType
|
|
memFullErr -108 memory full error
|
|
|
|
__________
|
|
|
|
Also see: GetVolMountInfoSize, GetVolMountInfo, VolumeMount,
|
|
BuildAFPVolMountInfo, RetrieveAFXVolMountInfo,
|
|
BuildAFPXVolMountInfo
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
pascal OSErr GetUGEntries(short objType,
|
|
UGEntryPtr entries,
|
|
long reqEntryCount,
|
|
long *actEntryCount,
|
|
long *objID);
|
|
/* ¦ Retrieve a list of user or group entries from the local file server.
|
|
The GetUGEntries functions retrieves a list of user or group entries
|
|
from the local file server.
|
|
|
|
objType input: The object type: -1 = group; 0 = user
|
|
UGEntries input: Pointer to array of UGEntry records where the list
|
|
is returned.
|
|
reqEntryCount input: The number of elements in the UGEntries array.
|
|
actEntryCount output: The number of entries returned.
|
|
objID input: The current index position. Set to 0 to start with
|
|
the first entry.
|
|
output: The index position to get the next entry. Pass this
|
|
value the next time you call GetUGEntries to start
|
|
where you left off.
|
|
|
|
Result Codes
|
|
noErr 0 No error
|
|
fnfErr -43 No more users or groups
|
|
paramErr -50 Function not supported; or, ioObjID is
|
|
negative
|
|
|
|
__________
|
|
|
|
Also see: GetUGEntry
|
|
*/
|
|
|
|
/*****************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#include "OptimizationEnd.h"
|
|
|
|
#endif /* __MOREFILESEXTRAS__ */
|