The AppleTalk Filing Protocol (AFP) allows applications to create, access, and delete Macintosh-format directories and files on a NetWare file server. NetWare support for AFP begins with NetWare 286 v2.15. The following is a discussion of the file-naming conventions that apply to AFP in a NetWare environment.
AFP directory and file names (also called long names) are from 1 to 31 characters. A long name is preceded by one byte specifying the length of the name. Long names can contain any ASCII character between 1 and 255 except the colon (:) but cannot be terminated by a null character (character 0). The file server automatically generates DOS-style file names (short names) for all AFP directories and any files created or accessed. The file server maintains both the long name and the short name for each AFP directory and file.
NetWare converts AFP names to DOS names by using the following conventions:
If a long name that contains no periods is converted to a short name, the first eight valid DOS characters of the long name are used:
Long Name Short Name THIS IS A NAME THISISAN
If a long name contains a period within the first nine valid DOS characters, the first eight characters before the period and the first three characters after the period (up to, but not including, another period) are used:
Long Name Short Name THIS.IS.A.NAME THIS.IS
This renaming convention permits both AFP and non-AFP workstations to access AFP directories and files. Suppose an application creates the following two files in a parent directory:
Long Name Short Name THIS IS THE FIRST FILE THISISTH THIS IS THE SECOND FILE ?
Since the two short names would be the same (THISISTH), the file server replaces the last character of the second file's short name with an ascending decimal number that will guarantee its uniqueness. Thus, in this example, the short name of the second file would be THISIST1. If two files having the long names THIS IS A 1 TIME OFFER and THIS IS A 1 TIME DEAL were created in the same directory, the corresponding short names would be THISISA1 and THISISA2, respectively. Now suppose a Macintosh workstation copies THIS IS THE SECOND FILE (THISIST1) to a floppy diskette and then copies the file from the diskette to a different directory (which is empty) on the file server. Since THIS IS THE SECOND FILE is the only file that would yield the short name THISISTH (that is, it does not conflict with another short name in the directory), the file server uses THISISTH as the short name.
Unlike NetWare directory paths that contain slashes (/) or backslashes (\) to separate directory and file names into their hierarchy, AFP paths use the null character (decimal zero) to make the distinction.
The following is an example of an AFP path:
VOLUME:DIRECTORY1 DIRECTORY2 FILE
This path is represented on the NetWare file server by
VOLUME:DIRECTOR/DIRECTOR/FILE
NetWare applications frequently target the short name of a directory or a file by combining a NetWare directory handle and a short (NetWare-style) directory or file path. Likewise, applications target the long name of a directory or a file by combining an AFP entry ID and a long (AFP-style) directory or file path. Applications should not combine NetWare directory handles and long names, or AFP entry IDs and short names. (AFP entry IDs are detailed in the calls that follow.)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (46+PathLen) word (Hi-Lo) 9 SubFunctionCode (13) byte 10 VolumeNumber byte 11 BaseDirectoryID long (Hi-Lo) 15 Reserved byte 16 FinderInfo byte[32] 48 ProDOSInfo byte[6] 54 PathLen byte 55 PathModString byte[PathLen]
Reply Format
Offset Content Type (reply header) 8 NewDirectoryID long (Hi-Lo)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 132 0x84 No Create Privileges 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 153 0x99 Directory Full Error 156 0x9C Invalid Path 158 0x9E Bad File Name 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, File Exists Error
Remarks
This call creates a directory with an AFP directory name.
The FinderInfo field is a 32-byte structure defined in Apple documentation.
The ProDOSInfo field is a 6-byte structure defined in Apple documentation.
See Also
AFP Delete (0x2222 35 03)
AFP Create Directory (0x2222 35 01)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (46+PathLen) word (Hi-Lo) 9 SubFunctionCode (14) byte 10 VolumeNumber byte 11 BaseDirectoryID long (Hi-Lo) 15 DeleteExistingFileFlag (0=no, 1=yes) byte 16 FinderInfo byte[32] 48 ProDOSInfo byte[6] 54 PathLen byte 55 PathModString byte[PathLen]
Reply Format
Offset Content Type (reply header) 8 NewDirectoryID long (Hi-Lo)
Completion Code
0 0x00 Successful 128 0x80 Lock Fail 129 0x81 Out Of Handles 131 0x83 Hard I/O Error 132 0x84 No Create Privileges 135 0x87 Create File Name Error 136 0x88 Invalid File Handle 138 0x8A No Delete Privileges 141 0x8D Some Files In Use 142 0x8E All Files In Use 143 0x8F Some Read Only 144 0x90 All Read Only 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 153 0x99 Directory Full Error 155 0x9B Bad Directory Handle 156 0x9C Invalid Path 158 0x9E Bad File Name 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, File Exists Error, No Files Found
Remarks
This call creates a file with an AFP filename. The resulting file is not opened. The file is created as a normal read-write file with system and hidden bits cleared.
The PathModString field is in AFP long-name format.
The FinderInfo field is a 32-byte structure defined in Apple documentation.
The ProDOSInfo field is a 6-byte structure defined in Apple documentation.
See Also
AFP Delete (0x2222 35 03)
AFP Create File (0x2222 35 02)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (9+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (15) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 RequestBitMap word (Hi-Lo) 17 PathStringLen byte 18 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 AFPEntryID long (Hi-Lo) 12 ParentID long (Hi-Lo) 16 Attributes word (Hi-Lo) 18 DataForkLen long (Hi-Lo) 22 ResourceForkLen long (Hi-Lo) 26 TotalOffspring word (Hi-Lo) 28 CreationDate word (Hi-Lo) 30 AccessDate word (Hi-Lo) 32 ModifyDate word (Hi-Lo) 34 ModifyTime word (Hi-Lo) 36 BackupDate word (Hi-Lo) 38 BackupTime word (Hi-Lo) 40 FinderInfo byte[32] 72 LongName byte[32] 104 OwnerID long (Hi-Lo) 108 ShortName byte[12] 112 AccessPrivileges word (Hi-Lo) 114 ProDOSInfo byte[6]
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
The AFP Entry ID of the root is always 1L. The Parent ID of the root is always 0L. The information that will be returned is determined by the bits that are set in the Request Bit Map field of the request message. The bits in the 16-bit Request Bit Map field are defined as follows:
0x0100 Return Attributes 0x0200 Return AFP Parent Entry ID 0x0400 Return Creation Date 0x0800 Return Access Date 0x1000 Return Modify Date/Time 0x2000 Return Backup Date/Time 0x4000 Return Finder Information 0x8000 Return Long Name 0x0001 Return AFP Entry ID 0x0002 Return Data Fork Length 0x0004 Return Resource Fork Length 0x0008 Return Number of Offspring 0x0010 Return Owner Object ID 0x0020 Return Short Name 0x0040 Return Access Privileges
The following information is returned in the reply message. The APF Entry ID field contains the Apple equivalent to a 1-byte NetWare directory handle, with one important exception: a NetWare directory handle points to a file server volume or directory; an AFP entry ID points to a file server volume, directory, or file.
The Parent ID field contains the AFP entry ID for the parent directory of the target file or directory.
The Attributes field indicates the attributes of the directory or file. The following bits are defined:
0x0100 Read Only 0x0200 Hidden 0x0400 System 0x0800 Execute Only 0x1000 Subdirectory 0x2000 Archive 0x4000 Undefined 0x8000 Shareable File 0x0001 Search Mode 0x0002 Search Mode 0x0004 Search Mode 0x0008 Undefined 0x0010 Transaction 0x0020 Index 0x0040 Read Audit 0x0080 Write Audit
The Data Fork Len field indicates the data size of the target AFP file. If the Path Mod String specifies an AFP directory, the Data Fork Len field returns a zero.
The Resource Fork Len field indicates the resource fork size of the target AFP file. If the Path Mod String specifies an AFP directory, the Resource Fork Len field returns a zero.
The Total Offspring field indicates the number of files and subdirectories contained within the specified directory. If the AFP directory or file path specifies an AFP file, the Total Offspring field returns a zero.
The Creation Date field contains the creation date (in AFP format) of the target directory or file.
The Access Date field indicates when the target AFP file was last accessed (returned in AFP format). If the Path Mod String specifies an AFP directory, the Access Date field returns a zero.
The Modify Date and Modify Time fields contain the last modified date and time (in AFP format) of the target AFP file. If the Path Mod String specifies an AFP directory, these fields return zeros.
The Backup Date and Backup Time fields contain the last backup date and time (in AFP format) of the specified directory or file.
The Finder Info field contains the 32-byte finder information structure associated with each AFP directory or file.
The Long Name field contains the AFP directory or filename of the specified directory or file. An AFP directory or filename can be from 1 to 31 characters long.
The Owner ID field contains the 4-byte bindery object ID of the entity that created or last modified the file.
The Short Name field contains the NetWare directory or filename of the specified directory or file. A NetWare directory or filename is in the DOS "8.3" format.
The Access Privileges field contains a one-word bit mask of the calling station's privileges for accessing the specified file or directory. The Access Privileges field contains the following bits:
0x0100 Read Privileges (files only) 0x0200 Write Privileges (files only) 0x0400 Open Privileges (files only) 0x0800 Create Privileges (files only) 0x1000 Delete Privileges (files only) 0x2000 Parental Privileges (directories only: create/delete/rename subdirectories) 0x4000 Search Privileges (directories only) 0x8000 Modify File Status Flags Privileges (both files and directories)
If the returned object is a file, the bits in the Access Privileges field indicate which rights the caller has in relation to the file. These rights are the rights that the caller has in the file's parent directory, appropriately modified if the file itself has certain rights restrictions. For example, if the file rights are set to read-only, the Write and Delete bits will be cleared. If the returned object is a directory, the bits in the Access Privileges field indicate which rights the caller has in that subdirectory.
Read the introduction to the Directory Services chapter for a complete discussion of directory and file access rights.
The ProDOSInfo field is a 6-byte structure defined in Apple documentation.
See Also
AFP 2.0 Set File Information (0x2222 35 16)
AFP Get File Information (0x2222 35 05)
AFP Set File Information (0x2222 35 09)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (17+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (17) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 MacLastSeenID long (Hi-Lo) 19 DesiredResponseCount word (Hi-Lo) 21 SearchBitMap word (Hi-Lo) 23 RequestBitMap word (Hi-Lo) 25 PathStringLen byte 26 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 ActualResponseCount word (Hi-Lo) (repeats ActualResponseCount times) 10 EntryID long (Hi-Lo) 14 ParentID long (Hi-Lo) 18 Attributes word (Hi-Lo) 20 DataForkLen long (Hi-Lo) 24 ResourceForkLen long (Hi-Lo) 28 TotalOffspring word (Hi-Lo) 30 CreationDate word (Hi-Lo) 32 AccessDate word (Hi-Lo) 34 ModifyDate word (Hi-Lo) 36 ModifyTime word (Hi-Lo) 38 BackupDate word (Hi-Lo) 40 BackupTime word (Hi-Lo) 42 FinderInfo byte[32] 74 LongName byte[32] 106 OwnerID long (Hi-Lo) 110 ShortName byte[12] 122 AccessPrivileges word (Hi-Lo) 124 ProDOSInfo byte[6]
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call returns information about an AFP entry (directory or file). Iterative scanning of a directory is supported, and up to 4 responses per request can be specified in DesiredResponseCount.
To scan all files and subdirectories of a directory, the client should set Mac Last Seen ID to -1L on the first call; for each subsequent call, the client should set Mac Last Seen ID to the Entry ID of the previous call.
If Path Mod String specifies a directory, all entries within the directory that fit the criteria in Search Bit Map and Request Bit Map will be returned.
The bits in the Search Bit Map are defined as follows:
0x0100 Search For Hidden Files/Directories 0x0200 Search For System Files/Directories 0x0400 Search For Subdirectories 0x0800 Search For Files
The bits in the Request Bit Map are defined as follows:
0x0100 Return Attributes 0x0200 Return Parent Directory ID 0x0400 Return Create Date 0x0800 Return Access Date 0x1000 Return Modify Date/Time 0x2000 Return Backup Date/Time 0x4000 Return Finder Info 0x8000 Return Long Name 0x0001 Return Entry ID 0x0002 Return Data Fork Length 0x0004 Return Resource Fork Length 0x0008 Return Number Of Offspring 0x0010 Return Owner ID 0x0020 Return Short Name 0x0040 Return Access Rights
The following information is returned in the reply message.
The APF Entry ID field contains the Apple equivalent to a 1-byte NetWare directory handle, with one important exception: a NetWare directory handle points to a server volume or directory; an AFP entry ID points to a server volume, directory, or file.
The Parent ID field contains the AFP entry ID for the parent directory of the target file or directory.
The Attributes field indicates the attributes of the directory or file. The following bits are defined:
0x0100 Read Only 0x0200 Hidden 0x0400 System 0x0800 Execute Only 0x1000 Subdirectory 0x2000 Archive 0x4000 Undefined 0x8000 Shareable File 0x0001 Search Mode 0x0002 Search Mode 0x0004 Search Mode 0x0008 Undefined 0x0010 Transaction 0x0020 Index 0x0040 Read Audit 0x0080 Write Audit
The Data Fork Len field indicates the data size of the target AFP file. If the Path Mod String specifies an AFP directory, the Data Fork Len field returns a zero.
The Resource Fork Len field indicates the resource fork size of the target AFP file. If the Path Mod String specifies an AFP directory, the Resource Fork Len field returns a zero.
The Total Offspring field indicates the number of files and subdirectories contained within the specified directory. If the AFP directory or file path specifies an AFP file, the Total Offspring field returns a zero.
The Creation Date field contains the creation date (in AFP format) of the target directory or file.
The Access Date indicates when the target AFP file was last accessed (returned in AFP format). If Path Mod String specifies an AFP directory, the Access Date field returns a zero.
The Modify Date and Modify Time fields contain the last modified date and time (in AFP format) of the target AFP file. If the Path Mod String specifies an AFP directory, these fields return zeros.
The Backup Date and Backup Time fields contain the last backup date and time (in AFP format) of the specified directory or file.
The Finder Info field contains the 32-byte finder information structure associated with each AFP directory or file.
The Long Name field contains the AFP directory or filename of the specified directory or file. An AFP directory or filename can be from 1 to 31 characters long.
The Owner ID field contains the 4-byte bindery object ID of the entity that created or last modified the file.
The Short Name field contains the NetWare directory or filename of the specified directory or file. A NetWare directory or filename is in the DOS "8.3" format.
The Access Privileges field contains a one-word bit mask of the calling station's privileges for accessing the specified file or directory. The Access Privileges field contains the following bits:
0x0100 Read Privileges (files only) 0x0200 Write Privileges (files only) 0x0400 Open Privileges (files only) 0x0800 Create Privileges (files only) 0x1000 Delete Privileges (files only) 0x2000 Parental Privileges (directories only: create/delete/rename subdirectories) 0x4000 Search Privileges (directories only) 0x8000 Modify File Status Flags Privileges (both files and directories)
If the returned object is a file, the bits in the Access Privileges field indicate which rights the caller has in relation to the file. These rights are the rights that the caller has in the file's parent directory, appropriately modified if the file itself has certain rights restrictions (that is, a read-only file would cause the Write and Delete bits to be cleared).
If the returned object is a directory, the bits in the Access Privileges field indicate the rights that the caller has in that directory.
Read the introduction to the Directory Services chapter for a complete discussion of directory and file access rights.
The ProDOSInfo field is a 6-byte structure defined in Apple documentation.
See Also
AFP 2.0 Set File Information (0x2222 35 16)
AFP Scan File Information (0x2222 35 10)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (61+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (16) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 RequestBitMap word (Hi-Lo) 17 Attributes word (Hi-Lo) 19 CreationDate word (Hi-Lo) 21 AccessDate word (Hi-Lo) 23 ModifyDate word (Hi-Lo) 25 ModifyTime word (Hi-Lo) 27 BackupDate word (Hi-Lo) 29 BackupTime word (Hi-Lo) 31 FinderInfo byte[32] 63 ProDOSInfo bye[6] 69 PathStringLen byte 70 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header)
Completion Code
0 0x00 Successful 1 0x01 Out Of Disk Space 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 148 0x94 No Write Privileges 149 0x95 File Detached 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call sets information pertaining to the specified AFP file or directory.
The bits in the Request Bit Map field are interpreted as follows:
0x0100 Set Attributes 0x0400 Set Create Date 0x0800 Set Access Date 0x1000 Set Modify Date/Time 0x2000 Set Backup Date/Time 0x4000 Set Finder Info
The Attributes field indicates the attributes of the directory or file. The following bits are defined:
0x0100 Read Only 0x0200 Hidden 0x0400 System 0x0800 Execute Only 0x1000 Subdirectory 0x2000 Archive 0x4000 Undefined 0x8000 Shareable File 0x0001 Search Mode 0x0002 Search Mode 0x0004 Search Mode 0x0008 Undefined 0x0010 Transaction 0x0020 Index 0x0040 Read Audit 0x0080 Write Audit
The Creation Date field sets the creation date (in AFP format) of the target directory or file.
The Access Date field sets the date (in AFP format) that the target AFP file was last accessed. This field is ignored for directories.
The Modify Date and Modify Time fields set the date and time (in AFP format) that the target AFP file was last modified. These fields are ignored for directories.
The Backup Date and Backup Time fields set the date and time (in AFP format) that the target AFP file was last backed up.
The Finder Info field sets the 32-bytes of finder information for the specified AFP directory or file.
The ProDOSInfo field is a 6-byte structure defined in Apple documentation.
See Also
AFP Get File Information (0x2222 35 05)
AFP 2.0 Scan File Information (0x2222 35 17)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (7+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (11) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 PathStringLen byte 16 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 NetWareDirectoryHandle byte 9 NetWareAccessRights byte
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 155 0x9B Bad Directory Handle 156 0x9C Invalid Path 157 0x9D No Directory Handles 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure
Remarks
This call maps a NetWare directory handle to an AFP directory.
The NetWare Access Rights field is a 1-byte mask that returns the effective rights that the calling station has in the target directory. This byte can be a combination of the following bits:
0x01 Read 0x02 Write 0x04 Open 0x08 Create 0x10 Delete 0x20 Parental 0x40 Search 0x80 Modify
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (40+PathLen) word (Hi-Lo) 9 SubFunctionCode (1) byte 10 VolumeNumber byte 11 BaseDirectoryID long (Hi-Lo) 15 Reserved byte 16 FinderInfo byte[32] 48 PathLen byte 49 PathModString byte[PathLen]
Reply Format
Offset Content Type (reply header) 8 NewDirectoryID long (Hi-Lo)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 132 0x84 No Create Privileges 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 153 0x99 Directory Full Error 156 0x9C Invalid Path 158 0x9E Bad File Name 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, File Exists Error
Remarks
This call creates a directory with an AFP directory name.
The Finder Info field is a 32-byte structure defined in Apple documentation.
See Also
AFP Delete (0x2222 35 03)
AFP 2.0 Create Directory (0x2222 35 13)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (40+PathLen) word (Hi-Lo) 9 SubFunctionCode (2) byte 10 VolumeNumber byte 11 BaseDirectoryID long (Hi-Lo) 15 DeleteExistingFileFlag (0=no, 1=yes) byte 16 FinderInfo byte[32] 48 PathLen byte 49 PathModString byte[PathLen]
Reply Format
Offset Content Type (reply header) 8 NewDirectoryID long (Hi-Lo)
Completion Code
0 0x00 Successful 128 0x80 Lock Fail 129 0x81 Out Of Handles 131 0x83 Hard I/O Error 132 0x84 No Create Privileges 135 0x87 Create Filename Error 136 0x88 Invalid File Handle 138 0x8A No Delete Privileges 141 0x8D Some Files In Use 142 0x8E All Files In Use 143 0x8F Some Read Only 144 0x90 All Read Only 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 153 0x99 Directory Full Error 155 0x9B Bad Directory Handle 156 0x9C Invalid Path 158 0x9E Bad File Name 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, File Exists Error, No Files Found
Remarks
This call creates a file with an AFP filename. The resulting file is not opened. The file is created as a normal read-write file with system and hidden bits cleared.
The PathModString field is in AFP long-name format.
See Also
AFP Delete (0x2222 35 03)
AFP 2.0 Create File (0x2222 35 14)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (7+PathLen) word (Hi-Lo) 9 SubFunctionCode (3) byte 10 VolumeNumber byte 11 BaseDirectoryID long (Hi-Lo) 15 PathLen byte 16 PathModString byte[PathLen]
Reply Format
Offset Content Type (reply header)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 138 0x8A No Delete Privileges 141 0x8D Some Files In Use 142 0x8E All Files In Use 143 0x8F Some Read Only 144 0x90 All Read Only 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 155 0x9B Bad Directory Handle 156 0x9C Invalid Path 158 0x9E Bad File Name 159 0x9F Directory Active 160 0xA0 Directory Not Empty 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call deletes a file or a directory.
The Path Mod String can be null.
Base Directory ID alone can specify the file or the directory.
Directories to be deleted must be empty.
Files to be deleted must be closed by all users.
See Also
AFP 2.0 Create File (0x2222 35 14)
AFP Create File (0x2222 35 02)
AFP 2.0 Create Directory (0x2222 35 13)
AFP Create Directory (0x2222 35 01)
AFP Get MacIntosh Info On Deleted File (0x2222 35 19)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (6) word (Hi-Lo) 9 SubFunctionCode (18) byte 10 VolumeNumber byte 11 MacDirectoryEntryID long (Hi-Lo)
Reply Format
Offset Content Type (reply header) 8 PathStringLen byte 9 DOSPathString byte[PathStringLen]
Completion Code
0 0x00 Successful 137 0x89 No Search Privilege 150 0x96 Server Out of Memory 150 0x96 Target Not a Subdirectory 191 0xBF Invalid Name Space
Remarks
This call obtains the DOS directory path corresponding to a 32-bit Macintosh file or directory entry ID.
The Mac Directory Entry ID is the unique 32-bit AFP identifier of the file or directory.
See Also
AFP Get Entry ID From Path Name (0x2222 35 12)
AFP Get Entry ID From Name (0x2222 35 04)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (7) word (Hi-Lo) 9 SubFunctionCode (6) byte 10 NetWareFileHandle byte[6]
Reply Format
Offset Content Type (reply header) 8 VolumeID byte 9 TargetEntryID long (Hi-Lo) 13 ForkIndicator (0=data, 1=resource) byte
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 162 0xA2 I/O Lock Error
Remarks
This call returns an AFP Entry ID for the specified NetWare file handle.
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStuctureLen (7+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (4) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 PathStringLen byte 16 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 TargetEntryID long (Hi-Lo)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call will return the 32-bit AFP ID number of the specified directory or file (long name). The ID of the root directory is 1L.
See Also
AFP Get DOS Name From Entry ID (0x2222 35 18)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (3+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (12) byte 10 NetWareDirectoryHandle byte 11 PathStringLen byte 12 NetWarePathString byte[PathStringLen]
Reply Format
Offset Content Type
(reply header) 8 TargetEntryID long (Hi-Lo)Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 155 0x9B Bad Directory Handle 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files FoundRemarks
This call converts a NetWare-style path specification into a unique 32-bit Macintosh file or directory entry ID.
The NetWare Directory Handle and the NetWare Path String specifications are given in NetWare format (short name).
The Target Entry ID is the unique 32-bit AFP identifier of the file or directory.
See Also
AFP Get DOS Name From Entry ID (0x2222 35 18)
AFP Get File Information 0x2222 35 05
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (9+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (5) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 RequestBitMap word (Hi-Lo) 17 PathStringLen byte 18 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 AFPEntryID long (Hi-Lo) 12 ParentID long (Hi-Lo) 16 Attributes word (Hi-Lo) 18 DataForkLen long (Hi-Lo) 22 ResourceForkLen long (Hi-Lo) 26 TotalOffspring word (Hi-Lo) 28 CreationDate word (Hi-Lo) 30 AccessDate word (Hi-Lo) 32 ModifyDate word (Hi-Lo) 34 ModifyTime word (Hi-Lo) 36 BackupDate word (Hi-Lo) 38 BackupTime word (Hi-Lo) 40 FinderInfo byte[32] 72 LongName byte[32] 104 OwnerID long (Hi-Lo) 108 ShortName byte[12] 112 AccessPrivileges word (Hi-Lo)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
The AFP Entry ID of the root is always 1L. The Parent ID of the root is always 0L. The information that will be returned is determined by the bits that are set in the Request Bit Map field of the request message. The bits in the 16-bit Request Bit Map field are defined as follows:
0x0100 Return Attributes 0x0200 Return AFP Parent Entry ID 0x0400 Return Creation Date 0x0800 Return Access Date 0x1000 Return Modify Date/Time 0x2000 Return Backup Date/Time 0x4000 Return Finder Information 0x8000 Return Long Name 0x0001 Return AFP Entry ID 0x0002 Return Data Fork Length 0x0004 Return Resource Fork Length 0x0008 Return Number of Offspring 0x0010 Return Owner Object ID 0x0020 Return Short Name 0x0040 Return Access Privileges
The following information is returned in the reply message. The APF Entry ID field contains the Apple equivalent to a 1-byte NetWare directory handle, with one important exception: a NetWare directory handle points to a file server volume or directory; an AFP entry ID points to a file server volume, directory, or file.
The Parent ID field contains the AFP entry ID for the parent directory of the target file or directory.
The Attributes field indicates the attributes of the directory or file. The following bits are defined:
0x0100 Read Only 0x0200 Hidden 0x0400 System 0x0800 Execute Only 0x1000 Subdirectory 0x2000 Archive 0x4000 Undefined 0x8000 Shareable File 0x0001 Search Mode 0x0002 Search Mode 0x0004 Search Mode 0x0008 Undefined 0x0010 Transaction 0x0020 Index 0x0040 Read Audit 0x0080 Write Audit
The Data Fork Len field indicates the data size of the target AFP file. If the Path Mod String specifies an AFP directory, the Data Fork Len field returns a zero.
The Resource Fork Len field indicates the resource fork size of the target AFP file. If the Path Mod String specifies an AFP directory, the Resource Fork Len field returns a zero.
The Total Offspring field indicates the number of files and subdirectories contained within the specified directory. If the AFP directory or file path specifies an AFP file, the Total Offspring field returns a zero.
The Creation Date field contains the creation date (in AFP format) of the target directory or file.
The Access Date field indicates when the target AFP file was last accessed (returned in AFP format). If the Path Mod String specifies an AFP directory, the Access Date field returns a zero.
The Modify Date and Modify Time fields contain the last modified date and time (in AFP format) of the target AFP file. If the Path Mod String specifies an AFP directory, these fields return zeros.
The Backup Date and Backup Time fields contain the last backup date and time (in AFP format) of the specified directory or file.
The Finder Info field contains the 32-byte finder information structure associated with each AFP directory or file.
The Long Name field contains the AFP directory or filename of the specified directory or file. An AFP directory or filename can be from 1 to 31 characters long.
The Owner ID field contains the 4-byte bindery object ID of the entity that created or last modified the file.
The Short Name field contains the NetWare directory or filename of the specified directory or file. A NetWare directory or filename is in the DOS "8.3" format.
The Access Privileges field contains a one-word bit mask of the calling station's privileges for accessing the specified file or directory. The Access Privileges field contains the following bits:
0x0100 Read Privileges (files only) 0x0200 Write Privileges (files only) 0x0400 Open Privileges (files only) 0x0800 Create Privileges (files only) 0x1000 Delete Privileges (files only) 0x2000 Parental Privileges (directories only: create/delete/rename subdirectories) 0x4000 Search Privileges (directories only) 0x8000 Modify File Status Flags Privileges (both files and directories)
If the returned object is a file, the bits in the Access Privileges field indicate which rights the caller has in relation to the file. These rights are the rights that the caller has in the file's parent directory, appropriately modified if the file itself has certain rights restrictions (for example, if the file rights are set to read-only, the Write and Delete bits will be cleared). If the returned object is a directory, the bits in the Access Privileges field indicate which rights the caller has in that subdirectory.
Read the introduction to the Directory Services chapter for a complete discussion of directory and file access rights.
See Also
AFP 2.0 Set File Information (0x2222 35 16)
AFP Set File Information (0x2222 35 09)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (6) word (Hi-Lo) 9 SubFunctionCode (19) byte 10 VolumeNumber byte 11 DOSDirectoryNumber long (Hi-Lo)
Reply Format
Offset Content Type (reply header) 8 FinderInfo byte[32] 40 ProDOSInfo byte[6] 46 ResourceForkSize long (Hi-Lo) 50 FileNameLen byte 51 FileName byte[FileNameLen]
Completion Code
0 0x00 Successful 156 0x9C Invalid Path 191 0xBF Invalid Name Space
Remarks
This call returns the Finder and ProDOS Info structures for a deleted Macintosh directory entry.
See Also
AFP Delete (0x2222 35 3)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (9+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (8) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 ForkIndicator (0=data, 1=resource) byte 16 AccessMode byte 17 PathStringLen byte 18 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 EntryID long (Hi-Lo) 12 ForkLen long (Hi-Lo) 16 NetWareAccessHandle byte[6]
Completion Code
0 0x00 Successful 128 0x80 Lock Fail 129 0x81 Out Of Handles 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 148 0x94 No Write Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 153 0x99 Directory Full Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, Lock Error, No Files Found
Remarks
This call opens an AFP file fork (data fork or resource fork). If a nonexistent file fork is specified, a file fork will automatically be created and opened.
The Access Mode field contains the following bits:
0x01 Read Access 0x02 Write Access 0x04 Deny Read Access 0x08 Deny Write Access 0x10 Compatibility Mode Bit (should be set)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen word (Hi-Lo) 9 SubFunctionCode (7) byte 10 VolumeNumber byte 11 MacSourceBaseID long (Hi-Lo) 15 MacDestinationBaseID long (Hi-Lo) 19 SourcePathLen byte 20 SourcePathString byte[SourcePathLen] 20+SourcePathLen DestinationPathLen byte 21+SourcePathLen DestinationPathString byte[DestinationPathLen]
* SubFuncStrucLen = 12 + SourcePathLen + DestinationPathLen
Reply Format
Offset Content Type (reply header)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 132 0x84 No Create Privileges 136 0x88 Invalid File Handle 139 0x8B No Rename Privileges 142 0x8E All Files In Use 144 0x90 All Read Only 146 0x92 All Names Exist 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 153 0x99 Directory Full Error 156 0x9C Invalid Path 158 0x9E Bad File Name 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call moves or renames an AFP file or directory. Source Path String must be set to the old directory or filename, and Destination Path String must be set to the new name.
If the file or directory is being renamed but not moved, Destination Base ID should be set to the file's current parent directory, and Destination Path String should be set to the new name of the file (or directory).
If the file or directory is being moved but not renamed, Destination Base ID should be set to the ID of the target directory, and Destination Path Len should be set to 0.
If the file or directory is being moved and renamed, the last item in Destination Path String is used as the new name of the file or directory.
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (17+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (10) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 MacLastSeenID long (Hi-Lo) 19 DesiredResponseCount word (Hi-Lo) 21 SearchBitMap word (Hi-Lo) 23 RequestBitMap word (Hi-Lo) 25 PathStringLen byte 26 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header) 8 ActualResponseCount word (Hi-Lo) (repeats ActualResponseCount times) 10 EntryID long (Hi-Lo) 14 ParentID long (Hi-Lo) 18 Attributes word (Hi-Lo) 20 DataForkLen long (Hi-Lo) 24 ResourceForkLen long (Hi-Lo) 28 TotalOffspring word (Hi-Lo) 30 CreationDate word (Hi-Lo) 32 AccessDate word (Hi-Lo) 34 ModifyDate word (Hi-Lo) 36 ModifyTime word (Hi-Lo) 38 BackupDate word (Hi-Lo) 40 BackupTime word (Hi-Lo) 42 FinderInfo byte[32] 74 LongName byte[32] 106 OwnerID long (Hi-Lo) 110 ShortName byte[12] 122 AccessPrivileges word (Hi-Lo)
Completion Code
0 0x00 Successful 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call returns information about an AFP entry (directory or file). Iterative scanning of a directory is supported, and up to 4 responses per request can be specified in DesiredResponseCount.
To scan all files and subdirectories of a directory, the client should set Mac Last Seen ID to -1L on the first call; for each subsequent call, the client should set Mac Last Seen ID to the Entry ID of the previous call.
If Path Mod String specifies a directory, all entries within the directory that fit the criteria in Search Bit Map and Request Bit Map will be returned.
The bits in the Search Bit Map are defined as follows:
0x0100 Search For Hidden Files/Directories 0x0200 Search For System Files/Directories 0x0400 Search For Subdirectories 0x0800 Search For Files
The bits in the Request Bit Map are defined as follows:
0x0100 Return Attributes 0x0200 Return Parent Directory ID 0x0400 Return Create Date 0x0800 Return Access Date 0x1000 Return Modify Date/Time 0x2000 Return Backup Date/Time 0x4000 Return Finder Info 0x8000 Return Long Name 0x0001 Return Entry ID 0x0002 Return Data Fork Length 0x0004 Return Resource Fork Length 0x0008 Return Number Of Offspring 0x0010 Return Owner ID 0x0020 Return Short Name 0x0040 Return Access Rights
The following information is returned in the reply message.
The APF Entry ID field contains the Apple equivalent to a 1-byte NetWare directory handle, with one important exception: a NetWare directory handle points to a file server volume or directory; an AFP entry ID points to a file server volume, directory, or file.
The Parent ID field contains the AFP entry ID for the parent directory of the target file or directory.
The Attributes field indicates the attributes of the directory or file. The following bits are defined:
0x0100 Read Only 0x0200 Hidden 0x0400 System 0x0800 Execute Only 0x1000 Subdirectory 0x2000 Archive 0x4000 Undefined 0x8000 Shareable File 0x0001 Search Mode 0x0002 Search Mode 0x0004 Search Mode 0x0008 Undefined 0x0010 Transaction 0x0020 Index 0x0040 Read Audit 0x0080 Write Audit
The Data Fork Len field indicates the data size of the target AFP file. If the Path Mod String specifies an AFP directory, the Data Fork Len field returns a zero.
The Resource Fork Len field indicates the resource fork size of the target AFP file. If the Path Mod String specifies an AFP directory, the Resource Fork Len field returns a zero.
The Total Offspring field indicates the number of files and subdirectories contained within the specified directory. If the AFP directory or file path specifies an AFP file, the Total Offspring field returns a zero.
The Creation Date field contains the creation date (in AFP format) of the target directory or file.
The Access Date indicates when the target AFP file was last accessed (returned in AFP format). If Path Mod String specifies an AFP directory, the Access Date field returns a zero.
The Modify Date and Modify Time fields contain the last modified date and time (in AFP format) of the target AFP file. If the Path Mod String specifies an AFP directory, these fields return zeros.
The Backup Date and Backup Time fields contain the last backup date and time (in AFP format) of the specified directory or file.
The Finder Info field contains the 32-byte finder information structure associated with each AFP directory or file.
The Long Name field contains the AFP directory or filename of the specified directory or file. An AFP directory or filename can be from 1 to 31 characters long.
The Owner ID field contains the 4-byte bindery object ID of the entity that created or last modified the file.
The Short Name field contains the NetWare directory or filename of the specified directory or file. A NetWare directory or filename is in the DOS "8.3" format.
The Access Privileges field contains a one-word bit mask of the calling station's privileges for accessing the specified file or directory. The Access Privileges field contains the following bits:
0x0100 Read Privileges (files only) 0x0200 Write Privileges (files only) 0x0400 Open Privileges (files only) 0x0800 Create Privileges (files only) 0x1000 Delete Privileges (files only) 0x2000 Parental Privileges (directories only: create/delete/rename subdirectories) 0x4000 Search Privileges (directories only) 0x8000 Modify File Status Flags Privileges (both files and directories)
If the returned object is a file, the bits in the Access Privileges field indicate which rights the caller has in relation to the file. These rights are the rights that the caller has in the file's parent directory, appropriately modified if the file itself has certain rights restrictions (that is, a read-only file would cause the Write and Delete bits to be cleared).
If the returned object is a directory, the bits in the Access Privileges field indicate the rights that the caller has in that directory.
Read the introduction to the Directory Services chapter for a complete discussion of directory and file access rights.
See Also
AFP 2.0 Scan File Information (0x2222 35 17)
AFP Set File Information (0x2222 35 09)
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (35) byte 7 SubFuncStrucLen (55+PathStringLen) word (Hi-Lo) 9 SubFunctionCode (9) byte 10 VolumeNumber byte 11 MacBaseDirectoryID long (Hi-Lo) 15 RequestBitMap word (Hi-Lo) 17 Attributes word (Hi-Lo) 19 CreationDate word (Hi-Lo) 21 AccessDate word (Hi-Lo) 23 ModifyDate word (Hi-Lo) 25 ModifyTime word (Hi-Lo) 27 BackupDate word (Hi-Lo) 29 BackupTime word (Hi-Lo) 31 FinderInfo byte[32] 63 PathStringLen byte 64 PathModString byte[PathStringLen]
Reply Format
Offset Content Type (reply header)
Completion Code
0 0x00 Successful 1 0x01 Out Of Disk Space 131 0x83 Hard I/O Error 136 0x88 Invalid File Handle 147 0x93 No Read Privileges 148 0x94 No Write Privileges 149 0x95 File Detached 150 0x96 Server Out Of Memory 152 0x98 Disk Map Error 156 0x9C Invalid Path 161 0xA1 Directory I/O Error 162 0xA2 I/O Lock Error 253 0xFD Bad Station Number 255 0xFF Failure, No Files Found
Remarks
This call sets information pertaining to the specified AFP file or directory.
The bits in the Request Bit Map field are interpreted as follows:
0x0100 Set Attributes 0x0400 Set Create Date 0x0800 Set Access Date 0x1000 Set Modify Date/Time 0x2000 Set Backup Date/Time 0x4000 Set Finder Info
The Attributes field indicates the attributes of the directory or file. The following bits are defined:
0x0100 Read Only 0x0200 Hidden 0x0400 System 0x0800 Execute Only 0x1000 Subdirectory 0x2000 Archive 0x4000 Undefined 0x8000 Shareable File 0x0001 Search Mode 0x0002 Search Mode 0x0004 Search Mode 0x0008 Undefined 0x0010 Transaction 0x0020 Index 0x0040 Read Audit 0x0080 Write Audit
The Creation Date field sets the creation date (in AFP format) of the target directory or file.
The Access Date field sets the date (in AFP format) that the target AFP file was last accessed. This field is ignored for directories.
The Modify Date and Modify Time fields set the date and time (in AFP format) that the target AFP file was last modified. These fields are ignored for directories.
The Backup Date and Backup Time fields set the date and time (in AFP format) that the target AFP file was last backed up.
The Finder Info field sets the 32-bytes of finder information for the specified AFP directory or file.
See Also
AFP Scan File Information (0x2222 35 10)
AFP 2.0 Set File Information (0x2222 35 16)