mirror of
https://github.com/mabam/CAP.git
synced 2024-10-03 08:55:14 +00:00
288 lines
11 KiB
C
288 lines
11 KiB
C
|
/*
|
||
|
* $Author: djh $ $Date: 1996/04/25 01:06:27 $
|
||
|
* $Header: /mac/src/cap60/netat/RCS/afp.h,v 2.5 1996/04/25 01:06:27 djh Rel djh $
|
||
|
* $Revision: 2.5 $
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* afp.h - header file for AppleTalk Filing Protocol
|
||
|
*
|
||
|
* AppleTalk package for UNIX (4.2 BSD).
|
||
|
*
|
||
|
* Copyright (c) 1986, 1987, 1988 by The Trustees of Columbia University in the
|
||
|
* City of New York.
|
||
|
*
|
||
|
* Edit History:
|
||
|
*
|
||
|
* March, 1987 Schilit Created
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef _MACFILE
|
||
|
#include <netat/macfile.h>
|
||
|
#endif _MACFILE
|
||
|
|
||
|
/* AFP Errors. The little "ae" prevents conflicts with other codes */
|
||
|
|
||
|
#define aeAccessDenied -5000
|
||
|
#define aeAuthContinue -5001 /* Authorization not yet complete */
|
||
|
#define aeBadUAM -5002 /* Unknown User Auth Method */
|
||
|
#define aeBadVersNum -5003 /* Server cannot speak AFP version */
|
||
|
#define aeBitMapErr -5004
|
||
|
#define aeCantMove -5005
|
||
|
#define aeDenyConflict -5006
|
||
|
#define aeDirNotEmpty -5007
|
||
|
#define aeDiskFull -5008
|
||
|
#define aeEOFErr -5009
|
||
|
#define aeFileBusy -5010
|
||
|
#define aeFlatVol -5011
|
||
|
#define aeItemNotFound -5012
|
||
|
#define aeLockErr -5013
|
||
|
#define aeMiscErr -5014
|
||
|
#define aeNoMoreLocks -5015
|
||
|
#define aeNoServer -5016 /* Server not responding */
|
||
|
#define aeObjectExists -5017
|
||
|
#define aeObjectNotFound -5018
|
||
|
#define aeParamErr -5019
|
||
|
#define aeRangeNotLocked -5020
|
||
|
#define aeRangeOverlap -5021
|
||
|
#define aeSessClosed -5022 /* Sessions was closed, no response */
|
||
|
#define aeUserNotAuth -5023 /* User authorization failure */
|
||
|
#define aeCallNotSupported -5024
|
||
|
#define aeObjectTypeErr -5025
|
||
|
#define aeTooManyFilesOpen -5026
|
||
|
#define aeServerGoingDown -5027
|
||
|
#define aeCantRename -5028
|
||
|
#define aeDirNotFound -5029
|
||
|
#define aeIconTypeError -5030
|
||
|
#define aeVolumeLocked -5031 /* AFP2.0 */
|
||
|
#define aeObjectLocked -5032 /* AFP2.0 */
|
||
|
#define aeIDNotFound -5034 /* AFP2.1 */
|
||
|
#define aeIDExists -5035 /* AFP2.1 */
|
||
|
#define aeCatalogChanged -5037 /* AFP2.1 */
|
||
|
#define aeSameObjectErr -5038 /* AFP2.1 */
|
||
|
#define aeBadIDErr -5039 /* AFP2.1 */
|
||
|
#define aePwdSameErr -5040 /* AFP2.1 */
|
||
|
#define aePwdTooShort -5041 /* AFP2.1 */
|
||
|
#define aePwdExpired -5042 /* AFP2.1 */
|
||
|
#define aeInsideSharedErr -5043 /* AFP2.1 */
|
||
|
#define aeInsideTrashErr -5044 /* AFP2.1 */
|
||
|
|
||
|
/* AFP Commands Definitions */
|
||
|
|
||
|
#define AFPByteRangeLock 1 /* Lock a range of bytes in a file */
|
||
|
#define AFPCloseVol 2 /* Close a volume */
|
||
|
#define AFPCloseDir 3 /* Close a directory */
|
||
|
#define AFPCloseFork 4 /* Close a fork */
|
||
|
#define AFPCopyFile 5 /* Copy a file */
|
||
|
#define AFPCreateDir 6 /* Create a directory */
|
||
|
#define AFPCreateFile 7 /* Create a file */
|
||
|
#define AFPDelete 8 /* Delete a file or directory */
|
||
|
#define AFPEnumerate 9 /* Enumerate directory entries */
|
||
|
#define AFPFlush 10 /* Flush a volume */
|
||
|
#define AFPFlushFork 11 /* Flush a fork */
|
||
|
#define AFPGetForkParms 14 /* Get fork parameters */
|
||
|
#define AFPGetSrvrInfo 15 /* Get server info */
|
||
|
#define AFPGetSrvrParms 16 /* Get server parameters */
|
||
|
#define AFPGetVolParms 17 /* Get volume parameters */
|
||
|
#define AFPLogin 18 /* Login to the server */
|
||
|
#define AFPLoginCont 19 /* Continue a login sequence */
|
||
|
#define AFPLogout 20 /* Logout (FPLogout) */
|
||
|
#define AFPMapID 21 /* Map a protection ID to: */
|
||
|
#define MapID_C 1 /* creater name */
|
||
|
#define MapID_G 2 /* group name */
|
||
|
#define AFPMapName 22 /* Map a protection name to: */
|
||
|
#define MapName_C 3 /* creator ID (uid) */
|
||
|
#define MapName_G 4 /* group ID (gid) */
|
||
|
#define AFPMove 23 /* Move a file */
|
||
|
#define AFPOpenVol 24 /* Open a volume */
|
||
|
#define AFPOpenDir 25 /* Open a directory */
|
||
|
#define AFPOpenFork 26 /* Open a fork */
|
||
|
#define AFPRead 27 /* Read from a fork */
|
||
|
#define AFPRename 28 /* Rename a file or directory */
|
||
|
#define AFPSetDirParms 29 /* Set directory parameters */
|
||
|
#define AFPSetFileParms 30 /* Set file parameters */
|
||
|
#define AFPSetForkParms 31 /* Set fork parameters */
|
||
|
#define AFPSetVolParms 32 /* Set volume parameters */
|
||
|
#define AFPWrite 33 /* Write to a fork */
|
||
|
#define AFPGetFileDirParms 34 /* Get params for a file or directory */
|
||
|
#define AFPSetFileDirParms 35 /* Set params for a file or directory */
|
||
|
#define AFPChgPasswd 36 /* AFP2.0: Change Password */
|
||
|
#define AFPGetUserInfo 37 /* AFP2.0: Get User Information */
|
||
|
#define AFPGetSrvrMsg 38 /* AFP2.1: Get Server Message */
|
||
|
#define AFPCreateID 39 /* AFP2.1: Create a File ID */
|
||
|
#define AFPDeleteID 40 /* AFP2.1: Invalidate a File ID */
|
||
|
#define AFPResolveID 41 /* AFP2.1: Get params for a file by File ID */
|
||
|
#define AFPExchangeFiles 42 /* AFP2.1: Exchange 2 files Data/Resource */
|
||
|
#define AFPCatSearch 43 /* AFP2.1: Search volume for files */
|
||
|
#define AFPOpenDT 48 /* Open the volume's desktop database */
|
||
|
#define AFPCloseDT 49 /* Close the volume's desktop database */
|
||
|
#define AFPGetIcon 51 /* Get an icon from the dt database */
|
||
|
#define AFPGetIconInfo 52 /* Get icon info from the dt database */
|
||
|
#define AFPAddAPPL 53 /* Find an application from the dt database */
|
||
|
#define AFPRmvAPPL 54 /* Remove an application from the dt ... */
|
||
|
#define AFPGetAPPL 55 /* Get an application ... */
|
||
|
#define AFPAddComment 56 /* Add a comment to the dt */
|
||
|
#define AFPRmvComment 57 /* Remove a comment from the dt */
|
||
|
#define AFPGetComment 58 /* Get a comment from the dt */
|
||
|
#define AFPAddIcon 192 /* Add an icon to the dt */
|
||
|
#define AFPMaxCmd AFPAddIcon
|
||
|
#define AFPShutDown 0xffff /* Shutdown server - unlikely command? */
|
||
|
|
||
|
#define MAXSNAM 31 /* max server name string */
|
||
|
#define MAXUAME 16 /* max size for each UAM string */
|
||
|
#define MAXVERE 16 /* max size for each version string */
|
||
|
|
||
|
/* some base definitions */
|
||
|
#define MAXPSTR 255 /* max size of a pascal string */
|
||
|
#define MAXVLEN 27 /* max size of volume name */
|
||
|
#define MAXVNAME MAXVLEN
|
||
|
#define MAXPLEN 8 /* max size of volume password */
|
||
|
#define MAXPASSWD 8
|
||
|
#define MAXDLEN 1024 /* max length of a path */
|
||
|
#ifndef MAXPATH
|
||
|
#define MAXPATH MAXDLEN
|
||
|
#endif MAXPATH
|
||
|
#ifdef AIX
|
||
|
#undef MAXPATH
|
||
|
#define MAXPATH MAXDLEN
|
||
|
#endif AIX
|
||
|
#define MAXLFLEN 31 /* max length of long file name */
|
||
|
#define MAXSFLEN 12 /* max length of short file name */
|
||
|
#define MAXUFLEN ((3*MAXLFLEN)+1) /* max length of unix expanded name */
|
||
|
|
||
|
typedef struct { /* Directory Only Parms */
|
||
|
sdword dp_dirid; /* directory id */
|
||
|
word dp_nchild; /* number of offspring */
|
||
|
sdword dp_ownerid; /* owner id */
|
||
|
sdword dp_groupid; /* group id */
|
||
|
dword dp_accright; /* access rights */
|
||
|
} DirParm;
|
||
|
|
||
|
typedef struct { /* File Only Parms */
|
||
|
sdword fp_fileno; /* file number */
|
||
|
sdword fp_rflen; /* resource fork length */
|
||
|
sdword fp_dflen; /* data fork length */
|
||
|
} FileParm;
|
||
|
|
||
|
#define FDP_DIRFLG 0x80 /* directory flag */
|
||
|
#define FDP_ISDIR(flg) (((flg) & FDP_DIRFLG) != 0)
|
||
|
|
||
|
typedef struct { /* FileDirParms */
|
||
|
byte fdp_flg; /* Directory flag */
|
||
|
byte fdp_zero; /* zero byte for packing */
|
||
|
word fdp_attr; /* attribute flags */
|
||
|
sdword fdp_pdirid; /* parent directory ID */
|
||
|
sdword fdp_cdate; /* creation date */
|
||
|
sdword fdp_mdate; /* modification date */
|
||
|
sdword fdp_bdate; /* backup date */
|
||
|
byte fdp_finfo[FINFOLEN]; /* Finder info */
|
||
|
char fdp_lname[MAXLFLEN]; /* long name */
|
||
|
char fdp_sname[MAXSFLEN]; /* short name */
|
||
|
word fdp_fbitmap; /* file bitmap for packing */
|
||
|
word fdp_dbitmap; /* directory bitmap for packing */
|
||
|
union { /* union for file/directory only parms */
|
||
|
DirParm dp_parms; /* directory only parms */
|
||
|
FileParm fp_parms; /* file only parms */
|
||
|
} fdp_parms; /* these are called fdp_parms */
|
||
|
word fdp_prodos_ft; /* prodos file type information */
|
||
|
dword fdp_prodos_aux; /* prodos aux file type info */
|
||
|
} FileDirParm, *FDParmPtr;
|
||
|
|
||
|
/* Volume Params */
|
||
|
|
||
|
#define VP_ATTR 00001 /* attributes */
|
||
|
#define VP_SIG 00002 /* signature byte */
|
||
|
#define VP_CDATE 00004 /* creation date */
|
||
|
#define VP_MDATE 00010 /* modification date */
|
||
|
#define VP_BDATE 00020 /* backup date */
|
||
|
#define VP_VOLID 00040 /* volume id */
|
||
|
#define VP_FREE 00100 /* free bytes */
|
||
|
#define VP_SIZE 00200 /* size in bytes */
|
||
|
#define VP_NAME 00400 /* volume name */
|
||
|
#define VP_EFREE 01000 /* AFP2.2: extended free bytes */
|
||
|
#define VP_ESIZE 02000 /* AFP2.2: extended total bytes */
|
||
|
#define VP_ALLOC 04000 /* AFP2.2: allocation block size */
|
||
|
#define VP_ALL (07777)
|
||
|
|
||
|
#define VOL_VAR_DIRID 0x03 /* volume has variable dirids */
|
||
|
#define VOL_FIXED_DIRID 0x02 /* volume has fixed dirids */
|
||
|
#define VOL_FLAT 0x01 /* volume is flat file systems */
|
||
|
|
||
|
/* DirParms - Directory Parameters Bitmap */
|
||
|
/* Bit on signifies item is present in packed parameters block */
|
||
|
|
||
|
#define DP_ATTR 0x0001 /* (LSB) attributes */
|
||
|
#define DP_PDIR 0x0002 /* parent directory id */
|
||
|
#define DP_CDATE 0x0004 /* creation date */
|
||
|
#define DP_MDATE 0x0008 /* modify date */
|
||
|
#define DP_BDATE 0x0010 /* backup date */
|
||
|
#define DP_FINFO 0x0020 /* finder info */
|
||
|
#define DP_LNAME 0x0040 /* long name flag */
|
||
|
#define DP_SNAME 0x0080 /* short name flag */
|
||
|
#define DP_DIRID 0x0100 /* directory id */
|
||
|
#define DP_CHILD 0x0200 /* number of directory offspring */
|
||
|
#define DP_CRTID 0x0400 /* creator id */
|
||
|
#define DP_GRPID 0x0800 /* group id */
|
||
|
#define DP_ACCES 0x1000 /* access bits */
|
||
|
#define DP_PDOS 0x2000 /* AFP2.0: prodos file type */
|
||
|
|
||
|
/* list of all bitmap items aufs can fill in or set */
|
||
|
|
||
|
#ifdef SHORT_NAMES
|
||
|
#define DP_AUFS_VALID (DP_ATTR|DP_PDIR|DP_CDATE|DP_MDATE|DP_BDATE|DP_FINFO|\
|
||
|
DP_SNAME|DP_LNAME|DP_DIRID|DP_CHILD|DP_CRTID|DP_GRPID|\
|
||
|
DP_ACCES|DP_PDOS)
|
||
|
#else SHORT_NAMES
|
||
|
#define DP_AUFS_VALID (DP_ATTR|DP_PDIR|DP_CDATE|DP_MDATE|DP_BDATE|DP_FINFO|\
|
||
|
DP_LNAME|DP_DIRID|DP_CHILD|DP_CRTID|DP_GRPID|DP_ACCES|DP_PDOS)
|
||
|
#endif SHORT_NAMES
|
||
|
|
||
|
#define DP_ALL (0x3777) /* all bits */
|
||
|
|
||
|
/* File Params */
|
||
|
|
||
|
#define FP_ATTR 0x0001 /* attributes: */
|
||
|
#define FPA_INV 0x001 /* invisible */
|
||
|
#define FPA_MUS 0x002 /* multi-user */
|
||
|
#define FPA_SYS 0x004 /* AFP2.0: System */
|
||
|
#define FPA_DAO 0x008 /* DAlreadyOpen */
|
||
|
#define FPA_RAO 0x010 /* RAlreadyOpen */
|
||
|
#define FPA_WRI 0x020 /* Write Inhibit */
|
||
|
#define FPA_BKUP 0x040 /* AFP2.0: backup needed */
|
||
|
#define FPA_RNI 0x080 /* AFP2.0: rename inhibit */
|
||
|
#define FPA_DEI 0x100 /* AFP2.0: delete inhibit */
|
||
|
#define FPA_CPR 0x400 /* AFP2.0: copy protect */
|
||
|
#define FPA_SCL 0x8000 /* set/clear */
|
||
|
#define FPA_MASK1 (FPA_INV|FPA_MUS|FPA_DAO|FPA_RAO|FPA_WRI) /* AFP 1.1 */
|
||
|
#define FP_PDIR 0x0002 /* parent directory id */
|
||
|
#define FP_CDATE 0x0004 /* creation date */
|
||
|
#define FP_MDATE 0x0008 /* modification date */
|
||
|
#define FP_BDATE 0x0010 /* backup date */
|
||
|
#define FP_FINFO 0x0020 /* finder info */
|
||
|
#define FP_LNAME 0x0040 /* long name */
|
||
|
#define FP_SNAME 0x0080 /* short name */
|
||
|
#define FP_FILNO 0x0100 /* file number */
|
||
|
#define FP_DFLEN 0x0200 /* data fork length */
|
||
|
#define FP_RFLEN 0x0400 /* resource fork length */
|
||
|
#define FP_PDOS 0x2000 /* AFP2.0: prodos file type */
|
||
|
#ifdef SHORT_NAMES
|
||
|
#define FP_AUFS_VALID (FP_ATTR|FP_PDIR|FP_CDATE|FP_MDATE|FP_BDATE|FP_FINFO|\
|
||
|
FP_SNAME|FP_LNAME|FP_FILNO|FP_DFLEN|FP_RFLEN|FP_PDOS)
|
||
|
#else SHORT_NAMES
|
||
|
#define FP_AUFS_VALID (FP_ATTR|FP_PDIR|FP_CDATE|FP_MDATE|FP_BDATE|FP_FINFO|\
|
||
|
FP_LNAME|FP_FILNO|FP_DFLEN|FP_RFLEN|FP_PDOS)
|
||
|
#endif SHORT_NAMES
|
||
|
|
||
|
/* Get User Info bitmap items */
|
||
|
|
||
|
#define UIP_USERID 0x1 /* user id (dword) */
|
||
|
#define UIP_PRIMARY_GID 0x2 /* primary group (dword) */
|
||
|
|
||
|
#define AFSTYPE "AFPServer" /* NBP type for AFS */
|
||
|
|
||
|
#define ASIP_PORT 548 /* AppleShare over TCP/IP well-known port */
|
||
|
|
||
|
char *afperr(); /* in afperr.c */
|