--- include/afpfs-ng/afp_protocol.h.orig	1970-01-01 00:00:00.000000000 +0000
+++ include/afpfs-ng/afp_protocol.h	2012-10-14 13:11:33.000000000 +0000
@@ -0,0 +1,361 @@
+
+#ifndef _AFP_PROTOCOL_H_
+#define _AFP_PROTOCOL_H_
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <unistd.h>
+#include <stdint.h>
+
+/* This file defines constants for the Apple File Protocol.
+   All page references are from "Apple Filing Protocol Programming" version 3.2.
+   except where noted.
+*/
+
+#define AFP_SERVER_NAME_LEN 33
+#define AFP_SERVER_NAME_UTF8_LEN 255
+#define AFP_VOLUME_NAME_LEN 33
+#define AFP_VOLUME_NAME_UTF8_LEN 33
+#define AFP_SIGNATURE_LEN 16
+#define AFP_MACHINETYPE_LEN 33
+#define AFP_LOGINMESG_LEN 200
+#define AFP_VOLPASS_LEN 8
+#define AFP_HOSTNAME_LEN 255
+/* This is actually just a guess, and only used for appletalk */
+#define AFP_ZONE_LEN 255
+
+#define AFP_SERVER_ICON_LEN 256
+
+
+#define AFP_MAX_USERNAME_LEN 127
+#define AFP_MAX_PASSWORD_LEN 127
+
+
+/* This is the maximum length of any UAM string */
+#define AFP_UAM_LENGTH 24
+
+/* This is the maximum length of any path description */
+#define AFP_MAX_PATH 768
+
+#define AFP_VOL_FLAT 1
+#define AFP_VOL_FIXED 2
+#define AFP_VOL_VARIABLE 3
+
+/* The root directory ID, p.26 */
+
+#define AFP_ROOT_DID 2
+
+/* Path type constants, p.249 */
+
+enum {
+kFPShortName = 1,
+kFPLongName = 2,
+kFPUTF8Name = 3
+};
+
+/* fork types */
+
+#define AFP_FORKTYPE_DATA 0x0
+#define AFP_FORKTYPE_RESOURCE 0x80
+
+/* openfork access modes, from p.196 */
+
+#define AFP_OPENFORK_ALLOWREAD 1
+#define AFP_OPENFORK_ALLOWWRITE 2
+#define AFP_OPENFORK_DENYREAD 0x10
+#define AFP_OPENFORK_DENYWRITE 0x20
+
+/* Message type for getsrvmesg, p. 169*/
+
+typedef enum {
+  AFPMESG_LOGIN = 0,
+  AFPMESG_SERVER = 1
+} afpmessage_t;
+
+/* Message bitmap for getsrvrmsg */
+
+#define AFP_GETSRVRMSG_UTF8 0x2
+#define AFP_GETSRVRMSG_GETMSG 0x1
+
+
+/* Maximum Version length, p.17 */
+#define AFP_MAX_VERSION_LENGTH 16
+
+/* Maximum length of a token, this is undocumented */
+#define AFP_TOKEN_MAX_LEN 256
+
+/* The maximum size of a file for AFP 2 */
+#define AFP_MAX_AFP2_FILESIZE (4294967296)
+
+/* Unix privs, p.240 */
+
+struct afp_unixprivs {
+	uint32_t uid __attribute__((__packed__));
+	uint32_t gid __attribute__((__packed__));
+	uint32_t permissions __attribute__((__packed__));
+	uint32_t ua_permissions __attribute__((__packed__));
+
+};
+
+
+/* AFP Volume attributes bitmap, p.241 */
+
+enum {
+    kReadOnly = 0x01,
+    kHasVolumePassword = 0x02,
+    kSupportsFileIDs = 0x04,
+    kSupportsCatSearch = 0x08,
+    kSupportsBlankAccessPrivs = 0x10,
+    kSupportsUnixPrivs = 0x20,
+    kSupportsUTF8Names = 0x40,
+    kNoNetworkUserIDs = 0x80,
+    kDefaultPrivsFromParent = 0x100,
+    kNoExchangeFiles = 0x200,
+    kSupportsExtAttrs = 0x400,
+    kSupportsACLs=0x800
+};
+
+/* AFP file creation constantes, p.250 */
+enum {
+kFPSoftCreate = 0,
+kFPHardCreate = 0x80
+};
+
+/* AFP Directory attributes, taken from the protocol guide p.236 */
+
+enum {
+    kFPAttributeBit = 0x1,
+    kFPParentDirIDBit = 0x2,
+    kFPCreateDateBit = 0x4,
+    kFPModDateBit = 0x8,
+    kFPBackupDateBit = 0x10,
+    kFPFinderInfoBit = 0x20,
+    kFPLongNameBit = 0x40,
+    kFPShortNameBit = 0x80,
+    kFPNodeIDBit = 0x100,
+    kFPOffspringCountBit = 0x0200,
+    kFPOwnerIDBit = 0x0400,
+    kFPGroupIDBit = 0x0800,
+    kFPAccessRightsBit = 0x1000,
+    kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier
+    kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later
+    kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later
+};
+
+/* AFP File bitmap, p.238.  These are the ones not in the AFP Directory
+   attributes map. */
+
+enum {
+	kFPDataForkLenBit = 0x0200,
+	kFPRsrcForkLenBit = 0x0400,
+	kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later
+	kFPLaunchLimitBit = 0x1000,
+	kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later
+};
+
+/* AFP Extended Attributes Bitmap, p.238  */
+
+enum {
+	kXAttrNoFollow = 0x1,
+	kXAttrCreate = 0x2,
+	kXAttrREplace=0x4
+};
+
+
+/* AFP function codes */
+enum AFPFunction
+{
+        afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork,
+        afpCopyFile, afpCreateDir, afpCreateFile,
+        afpDelete, afpEnumerate, afpFlush, afpFlushFork,
+        afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms,
+        afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID,
+        afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork,
+        afpRead, afpRename, afpSetDirParms, afpSetFileParms,
+        afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms,
+	afpSetFileDirParms, afpChangePassword,
+        afpGetUserInfo=37,afpGetSrvrMsg = 38,
+	afpOpenDT=48,
+	afpCloseDT=49,
+	afpGetIcon=51, afpGetIconInfo=52,
+	afpAddComment=56, afpRemoveComment=57, afpGetComment=58,
+	afpByteRangeLockExt=59, afpReadExt, afpWriteExt,
+	afpGetAuthMethods=62,
+	afp_LoginExt=63,
+	afpGetSessionToken=64,
+	afpDisconnectOldSession=65,
+	afpEnumerateExt=66,
+	afpCatSearchExt = 67,
+	afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr, 
+	afpRemoveExtAttr , afpListExtAttrs,
+	afpZzzzz = 122,
+	afpAddIcon=192,
+};
+
+/* AFP Volume bitmap.  Take from 242 of the protocol guide. */
+enum {
+	kFPBadVolPre222Bitmap = 0xFe00,
+	kFPBadVolBitmap = 0xF000,
+	kFPVolAttributeBit = 0x1,
+	kFPVolSignatureBit = 0x2,
+	kFPVolCreateDateBit = 0x4,
+	kFPVolModDateBit = 0x8,
+	kFPVolBackupDateBit = 0x10,
+	kFPVolIDBit = 0x20,
+	kFPVolBytesFreeBit = 0x40,
+	kFPVolBytesTotalBit = 0x80,
+	kFPVolNameBit = 0x100,
+	kFPVolExtBytesFreeBit = 0x200,
+	kFPVolExtBytesTotalBit = 0x400,
+	kFPVolBlockSizeBit = 0x800
+};
+
+/* AFP Attention Codes -- 4 bits */
+#define AFPATTN_SHUTDOWN     (1 << 15)            /* shutdown/disconnect */
+#define AFPATTN_CRASH        (1 << 14)            /* server crashed */
+#define AFPATTN_MESG         (1 << 13)            /* server has message */
+#define AFPATTN_NORECONNECT  (1 << 12)            /* don't reconnect */
+/* server notification */
+#define AFPATTN_NOTIFY       (AFPATTN_MESG | AFPATTN_NORECONNECT) 
+
+/* extended bitmap -- 12 bits. volchanged is only useful w/ a server
+ * notification, and time is only useful for shutdown. */
+#define AFPATTN_VOLCHANGED   (1 << 0)             /* volume has changed */
+#define AFPATTN_TIME(x)      ((x) & 0xfff)        /* time in minutes */
+
+#define kFPNoErr 0
+
+/* AFP result codes, p252 */
+#define kASPSessClosed -1072
+#define kFPAccessDenied -5000
+#define kFPAuthContinue -5001
+#define kFPBadUAM -5002
+#define kFPBadVersNum -5003
+#define kFPBitmapErr -5004
+#define kFPCantMove -5005
+#define kFPDenyConflict -5006
+#define kFPDirNotEmpty -5007
+#define kFPDiskFull -5008
+#define kFPEOFErr -5009
+#define kFPFileBusy -5010
+#define kFPFlatVol -5011
+#define kFPItemNotFound -5012
+#define kFPLockErr -5013
+#define kFPMiscErr -5014
+#define kFPNoMoreLocks -5015
+#define kFPNoServer -5016
+#define kFPObjectExists -5017
+#define kFPObjectNotFound -5018
+#define kFPParamErr -5019
+#define kFPRangeNotLocked -5020
+#define kFPRangeOverlap -5021
+#define kFPSessClosed -5022
+#define kFPUserNotAuth -5023
+#define kFPCallNotSupported -5024
+#define kFPObjectTypeErr -5025
+#define kFPTooManyFilesOpen -5026
+#define kFPServerGoingDown -5027
+#define kFPCantRename -5028
+#define kFPDirNotFound -5029
+#define kFPIconTypeError -5030
+#define kFPVolLocked -5031
+#define kFPObjectLocked -5032
+#define kFPContainsSharedErr -5033
+#define kFPIDNotFound -5034
+#define kFPIDExists -5035
+#define kFPDiffVolErr  -5036
+#define kFPCatalogChanged -5037
+#define kFPSameObjectErr -5038
+#define kFPBadIDErr -5039
+#define kFPPwdSameErr -5040
+#define kFPPwdTooShortErr -5041
+#define kFPPwdExpiredErr -5042
+#define kFPInsideSharedErr -5043
+#define kFPInsideTrashErr -5044
+#define kFPPwdNeedsChangeErr -5045
+#define kFPPwdPolicyErr -5046
+#define kFPDiskQuotaExceeded –5047 
+
+
+
+/* These flags determine to lock or unlock in ByteRangeLock(Ext) */
+
+enum {
+ByteRangeLock_Lock = 0,
+ByteRangeLock_Unlock = 1
+};
+
+/* These flags are used in volopen and getsrvrparm replies, p.171 */
+
+#define HasConfigInfo 0x1
+#define HasPassword 0x80
+
+/* These are the subfunction for kFPMapID, as per p.248 */
+
+enum {
+kUserIDToName = 1,
+kGroupIDToName = 2,
+kUserIDToUTF8Name = 3,
+kGroupIDToUTF8Name = 4,
+kUserUUIDToUTF8Name = 5,
+kGroupUUIDToUTF8Name = 6
+};
+
+
+/* These are the subfunction flags described in the FPMapName command, p.286.
+   Note that this is different than what's described on p. 186. */
+
+enum {
+kNameToUserID = 1,
+kNameToGroupID = 2,
+kUTF8NameToUserID = 3,
+kUTF8NameToGroupID = 4,
+kUTF8NameToUserUUID = 5,
+kUTF8NameToGroupUUID = 6
+};
+
+/* These are bits for FPGetUserInfo, p.173. */
+#define kFPGetUserInfo_USER_ID 1
+#define kFPGetUserInfo_PRI_GROUPID 2
+
+/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */
+
+enum {
+	kSupportsCopyfile = 0x01,
+	kSupportsChgPwd = 0x02,
+	kDontAllowSavePwd = 0x04,
+	kSupportsSrvrMsg = 0x08,
+	kSrvrSig = 0x10,
+	kSupportsTCP = 0x20,
+	kSupportsSrvrNotify = 0x40,
+	kSupportsReconnect = 0x80,
+	kSupportsDirServices = 0x100,
+	kSupportsUTF8SrvrName = 0x200,
+	kSupportsUUIDs = 0x400,
+	kSupportsSuperClient = 0x8000
+};
+
+
+/* p.247 */
+
+enum {
+	kLoginWithoutID = 0,
+	kLoginWithID = 1,
+	kReconnWithID = 2,
+	kLoginWithTimeAndID = 3,
+	kReconnWithTimeAndID = 4,
+	kRecon1Login = 5,
+	kRecon1ReconnectLogin = 6,
+	kRecon1Refresh = 7, kGetKerberosSessionKey = 8
+};
+
+
+#define AFP_CHMOD_ALLOWED_BITS_22 \
+	(S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG )
+
+
+#endif
+
+
+
+
diff -Naur afpfs-ng-0.8.1.orig/include/afpfs-ng/codepage.h afpfs-ng-0.8.1/include/afpfs-ng/codepage.h
