afpfs-ng-mac/patches/00_fix_afpfs-ng_includes.patch

3083 lines
89 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff -Naur afpfs-ng-0.8.1/cmdline/cmdline_afp.c afpfs-ng-0.8.1.patch/cmdline/cmdline_afp.c
--- afpfs-ng-0.8.1/cmdline/cmdline_afp.c 2008-02-19 02:54:19.000000000 +0100
+++ afpfs-ng-0.8.1.patch/cmdline/cmdline_afp.c 2011-09-10 12:13:50.102124369 +0200
@@ -3,9 +3,9 @@
*/
-#include "afp.h"
-#include "midlevel.h"
-#include "map_def.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/midlevel.h"
+#include "afpfs-ng/map_def.h"
#include <string.h>
#include <stdio.h>
diff -Naur afpfs-ng-0.8.1/cmdline/cmdline_testafp.c afpfs-ng-0.8.1.patch/cmdline/cmdline_testafp.c
--- afpfs-ng-0.8.1/cmdline/cmdline_testafp.c 2008-03-04 21:16:50.000000000 +0100
+++ afpfs-ng-0.8.1.patch/cmdline/cmdline_testafp.c 2011-09-10 12:13:50.102124369 +0200
@@ -3,8 +3,8 @@
*/
-#include "afp.h"
-#include "midlevel.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/midlevel.h"
#include "cmdline_main.h"
diff -Naur afpfs-ng-0.8.1/cmdline/getstatus.c afpfs-ng-0.8.1.patch/cmdline/getstatus.c
--- afpfs-ng-0.8.1/cmdline/getstatus.c 2008-02-18 04:28:09.000000000 +0100
+++ afpfs-ng-0.8.1.patch/cmdline/getstatus.c 2011-09-10 12:13:50.109124463 +0200
@@ -2,7 +2,7 @@
#include <string.h>
#include <pthread.h>
-#include "afp.h"
+#include "afpfs-ng/afp.h"
static int getstatus(char * address_string, unsigned int port)
{
diff -Naur afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1.patch/configure.ac
--- afpfs-ng-0.8.1/configure.ac 2008-03-08 17:23:12.000000000 +0100
+++ afpfs-ng-0.8.1.patch/configure.ac 2011-09-10 12:13:50.109124463 +0200
@@ -11,6 +11,7 @@
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LIBTOOL
+AM_PROG_CC_C_O
# Checks for libraries.
# FIXME: Replace `main' with a function in `-lncurses':
@@ -105,7 +106,7 @@
-AC_CONFIG_FILES([lib/Makefile fuse/Makefile cmdline/Makefile Makefile docs/Makefile])
+AC_CONFIG_FILES([lib/Makefile fuse/Makefile cmdline/Makefile Makefile include/Makefile include/afpfs-ng/Makefile docs/Makefile])
AC_OUTPUT
diff -Naur afpfs-ng-0.8.1/fuse/client.c afpfs-ng-0.8.1.patch/fuse/client.c
--- afpfs-ng-0.8.1/fuse/client.c 2008-03-08 03:44:16.000000000 +0100
+++ afpfs-ng-0.8.1.patch/fuse/client.c 2011-09-10 12:13:50.110124477 +0200
@@ -12,11 +12,11 @@
#include <grp.h>
#include "config.h"
-#include <afp.h>
+#include <afpfs-ng/afp.h>
#include "afp_server.h"
-#include "uams_def.h"
-#include "map_def.h"
-#include "libafpclient.h"
+#include "afpfs-ng/uams_def.h"
+#include "afpfs-ng/map_def.h"
+#include "afpfs-ng/libafpclient.h"
#define default_uam "Cleartxt Passwrd"
diff -Naur afpfs-ng-0.8.1/fuse/commands.c afpfs-ng-0.8.1.patch/fuse/commands.c
--- afpfs-ng-0.8.1/fuse/commands.c 2008-03-08 17:06:25.000000000 +0100
+++ afpfs-ng-0.8.1.patch/fuse/commands.c 2011-09-10 12:13:50.110124477 +0200
@@ -19,15 +19,15 @@
#include <getopt.h>
#include <signal.h>
-#include "afp.h"
-#include "dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/dsi.h"
#include "afp_server.h"
-#include "utils.h"
+#include "afpfs-ng/utils.h"
#include "daemon.h"
-#include "uams_def.h"
-#include "codepage.h"
-#include "libafpclient.h"
-#include "map_def.h"
+#include "afpfs-ng/uams_def.h"
+#include "afpfs-ng/codepage.h"
+#include "afpfs-ng/libafpclient.h"
+#include "afpfs-ng/map_def.h"
#include "fuse_int.h"
#include "fuse_error.h"
#include "fuse_internal.h"
diff -Naur afpfs-ng-0.8.1/fuse/daemon.c afpfs-ng-0.8.1.patch/fuse/daemon.c
--- afpfs-ng-0.8.1/fuse/daemon.c 2008-03-04 18:26:05.000000000 +0100
+++ afpfs-ng-0.8.1.patch/fuse/daemon.c 2011-09-10 12:13:50.110124477 +0200
@@ -23,11 +23,11 @@
#include <signal.h>
#include <sys/socket.h>
-#include "afp.h"
+#include "afpfs-ng/afp.h"
-#include "dsi.h"
+#include "afpfs-ng/dsi.h"
#include "afp_server.h"
-#include "utils.h"
+#include "afpfs-ng/utils.h"
#include "daemon.h"
#include "commands.h"
diff -Naur afpfs-ng-0.8.1/fuse/fuse_error.c afpfs-ng-0.8.1.patch/fuse/fuse_error.c
--- afpfs-ng-0.8.1/fuse/fuse_error.c 2008-01-18 05:40:10.000000000 +0100
+++ afpfs-ng-0.8.1.patch/fuse/fuse_error.c 2011-09-10 12:13:50.111124491 +0200
@@ -4,7 +4,7 @@
#include <unistd.h>
#include <string.h>
#include <stdio.h>
-#include "libafpclient.h"
+#include "afpfs-ng/libafpclient.h"
#include "fuse_internal.h"
#define TMP_FILE "/tmp/fuse_stderr"
diff -Naur afpfs-ng-0.8.1/fuse/fuse_int.c afpfs-ng-0.8.1.patch/fuse/fuse_int.c
--- afpfs-ng-0.8.1/fuse/fuse_int.c 2008-03-02 06:06:24.000000000 +0100
+++ afpfs-ng-0.8.1.patch/fuse/fuse_int.c 2011-09-10 12:13:50.111124491 +0200
@@ -18,7 +18,7 @@
#define FUSE_USE_VERSION 25
-#include "afp.h"
+#include "afpfs-ng/afp.h"
#include <fuse.h>
#include <stdio.h>
@@ -39,10 +39,10 @@
#include <pwd.h>
#include <stdarg.h>
-#include "dsi.h"
-#include "afp_protocol.h"
-#include "codepage.h"
-#include "midlevel.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp_protocol.h"
+#include "afpfs-ng/codepage.h"
+#include "afpfs-ng/midlevel.h"
#include "fuse_error.h"
/* Uncomment the following line to enable full debugging: */
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h
--- afpfs-ng-0.8.1/include/afpfs-ng/afp.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h 2011-09-10 12:13:50.112124505 +0200
@@ -0,0 +1,533 @@
+
+#ifndef _AFP_H_
+#define _AFP_H_
+
+#include <arpa/inet.h>
+#include <pthread.h>
+#include <netdb.h>
+#include <sys/statvfs.h>
+#include <pwd.h>
+#include <afpfs-ng/afp_protocol.h>
+#include <afpfs-ng/libafpclient.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <netinet/in.h>
+
+
+#define AFPFS_VERSION "0.8.1"
+
+/* This is the maximum AFP version this library supports */
+#define AFP_MAX_SUPPORTED_VERSION 32
+
+/* afp_url is used to pass locations around */
+struct afp_url {
+ enum {TCPIP,AT} protocol;
+ char username[AFP_MAX_USERNAME_LEN];
+ char uamname[50];
+ char password[AFP_MAX_PASSWORD_LEN];
+ char servername[AFP_SERVER_NAME_UTF8_LEN];
+ int port;
+ char volumename[AFP_VOLUME_NAME_UTF8_LEN];
+ char path[AFP_MAX_PATH];
+
+ int requested_version;
+ char zone[AFP_ZONE_LEN]; /* Only used for Appletalk */
+ char volpassword[9];;
+};
+
+struct afp_token {
+ unsigned int length;
+ char data[AFP_TOKEN_MAX_LEN];
+};
+
+#define SERVER_MAX_VERSIONS 10
+#define SERVER_MAX_UAMS 10
+
+struct afp_rx_buffer {
+ unsigned int size;
+ unsigned int maxsize;
+ char * data;
+ int errorcode;
+};
+
+
+struct afp_file_info {
+ unsigned short attributes;
+ unsigned int did;
+ unsigned int creation_date;
+ unsigned int modification_date;
+ unsigned int backup_date;
+ unsigned int fileid;
+ unsigned short offspring;
+ char sync;
+ char finderinfo[32];
+ char name[AFP_MAX_PATH];
+ char basename[AFP_MAX_PATH];
+ char translated_name[AFP_MAX_PATH];
+ struct afp_unixprivs unixprivs;
+ unsigned int accessrights;
+ struct afp_file_info * next;
+ struct afp_file_info * largelist_next;
+ unsigned char isdir;
+ unsigned long long size;
+ unsigned short resourcesize;
+ unsigned int resource;
+ unsigned short forkid;
+ struct afp_icon * icon;
+ int eof;
+};
+
+
+#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_KNOWN 0x1
+#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_BROKEN 0x2
+#define VOLUME_EXTRA_FLAGS_SHOW_APPLEDOUBLE 0x4
+#define VOLUME_EXTRA_FLAGS_VOL_SUPPORTS_UNIX 0x8
+#define VOLUME_EXTRA_FLAGS_NO_LOCKING 0x10
+#define VOLUME_EXTRA_FLAGS_IGNORE_UNIXPRIVS 0x20
+#define VOLUME_EXTRA_FLAGS_READONLY 0x40
+
+#define AFP_VOLUME_UNMOUNTED 0
+#define AFP_VOLUME_MOUNTED 1
+#define AFP_VOLUME_UNMOUNTING 2
+
+struct afp_volume {
+ unsigned short volid;
+ char flags; /* This is from afpGetSrvrParms */
+ unsigned short attributes; /* This is from VolOpen */
+ unsigned short signature; /* This is fixed or variable */
+ unsigned int creation_date;
+ unsigned int modification_date;
+ unsigned int backup_date;
+ struct statvfs stat;
+ unsigned char mounted;
+ char mountpoint[255];
+ struct afp_server * server;
+ char volume_name[AFP_VOLUME_NAME_LEN];
+ char volume_name_printable[AFP_VOLUME_NAME_UTF8_LEN];
+ unsigned short dtrefnum;
+ char volpassword[AFP_VOLPASS_LEN];
+ unsigned int extra_flags; /* This is an afpfs-ng specific field */
+
+ /* Our directory ID cache */
+ struct did_cache_entry * did_cache_base;
+ pthread_mutex_t did_cache_mutex;
+
+ /* Our journal of open forks */
+ struct afp_file_info * open_forks;
+ pthread_mutex_t open_forks_mutex;
+
+ /* Used to trigger startup */
+ pthread_cond_t startup_condition_cond;
+
+ struct {
+ uint64_t hits;
+ uint64_t misses;
+ uint64_t expired;
+ uint64_t force_removed;
+ } did_cache_stats;
+
+ void * priv; /* This is a private structure for fuse/cmdline, etc */
+ pthread_t thread; /* This is the per-volume thread */
+
+ int mapping;
+
+};
+
+#define SERVER_STATE_CONNECTED 1
+#define SERVER_STATE_DISCONNECTED 2
+
+enum server_type{
+ AFPFS_SERVER_TYPE_UNKNOWN,
+ AFPFS_SERVER_TYPE_NETATALK,
+ AFPFS_SERVER_TYPE_AIRPORT,
+ AFPFS_SERVER_TYPE_MACINTOSH,
+};
+
+#define is_netatalk(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_NETATALK )
+#define is_airport(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_AIRPORT )
+#define is_macintosh(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_MACINTOSH )
+
+
+
+struct afp_versions {
+ char *av_name;
+ int av_number;
+};
+extern struct afp_versions afp_versions[];
+
+struct afp_server {
+
+ /* Our buffer sizes */
+ unsigned int tx_quantum;
+ unsigned int rx_quantum;
+
+ unsigned int tx_delay;
+
+ /* Connection information */
+ struct sockaddr_in address;
+ int fd;
+
+ /* Some stats, for information only */
+ struct {
+ uint64_t runt_packets;
+ uint64_t incoming_dsi;
+ uint64_t rx_bytes;
+ uint64_t tx_bytes;
+ uint64_t requests_pending;
+ } stats;
+
+ /* General information */
+ char server_name[AFP_SERVER_NAME_LEN];
+ char server_name_utf8[AFP_SERVER_NAME_UTF8_LEN];
+ char server_name_printable[AFP_SERVER_NAME_UTF8_LEN];
+
+ char machine_type[17];
+ char icon[256];
+ char signature[16];
+ unsigned short flags;
+ int connect_state;
+ enum server_type server_type;
+
+ /* This is the time we connected */
+ time_t connect_time;
+
+ /* UAMs */
+ unsigned int supported_uams;
+ unsigned int using_uam;
+
+ /* Authentication */
+ char username[AFP_MAX_USERNAME_LEN];
+ char password[AFP_MAX_PASSWORD_LEN];
+
+ /* Session */
+ struct afp_token token;
+ char need_resume;
+
+ /* Versions */
+ unsigned char requested_version;
+ unsigned char versions[SERVER_MAX_VERSIONS];
+ struct afp_versions *using_version;
+
+ /* Volumes */
+ unsigned char num_volumes;
+ struct afp_volume * volumes;
+
+ void * dsi;
+ unsigned int exit_flag;
+
+ /* Our DSI request queue */
+ pthread_mutex_t requestid_mutex;
+ pthread_mutex_t request_queue_mutex;
+ unsigned short lastrequestid;
+ unsigned short expectedrequestid;
+ struct dsi_request * command_requests;
+
+
+ char loginmesg[200];
+ char servermesg[200];
+ char path_encoding;
+
+ /* This is the data for the incoming buffer */
+ char * incoming_buffer;
+ int data_read;
+ int bufsize;
+
+ /* And this is for the outgoing queue */
+ pthread_mutex_t send_mutex;
+
+ /* This is for user mapping */
+ struct passwd passwd;
+ unsigned int server_uid, server_gid;
+ int server_gid_valid;
+
+ struct afp_server *next;
+
+ /* These are for DSI attention packets */
+ unsigned int attention_quantum;
+ unsigned int attention_len;
+ char * attention_buffer;
+
+};
+
+struct afp_extattr_info {
+ unsigned int maxsize;
+ unsigned int size;
+ char data[1024];
+};
+struct afp_comment {
+ unsigned int maxsize;
+ unsigned int size;
+ char *data;
+};
+
+struct afp_icon {
+ unsigned int maxsize;
+ unsigned int size;
+ char *data;
+};
+
+#define AFP_DEFAULT_ATTENTION_QUANTUM 1024
+
+void afp_unixpriv_to_stat(struct afp_file_info *fp,
+ struct stat *stat);
+
+int init_uams(void) ;
+
+unsigned int find_uam_by_name(const char * name);
+char * uam_bitmap_to_string(unsigned int bitmap);
+
+
+char * get_uam_names_list(void);
+
+unsigned int default_uams_mask(void);
+
+struct afp_volume * find_volume_by_name(struct afp_server * server,
+ const char * volname);
+
+struct afp_connection_request {
+ unsigned int uam_mask;
+ struct afp_url url;
+};
+
+void afp_default_url(struct afp_url *url);
+int afp_parse_url(struct afp_url * url, const char * toparse, int verbose);
+void afp_print_url(struct afp_url * url);
+int afp_url_validate(char * url_string, struct afp_url * valid_url);
+
+int afp_list_volnames(struct afp_server * server, char * names, int max);
+
+/* User mapping */
+int afp_detect_mapping(struct afp_volume * volume);
+
+/* These are some functions that help with simple status text generation */
+
+int afp_status_header(char * text, int * len);
+int afp_status_server(struct afp_server * s,char * text, int * len);
+
+
+struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req);
+
+void * just_end_it_now(void *other);
+void add_fd_and_signal(int fd);
+void loop_disconnect(struct afp_server *s);
+void afp_wait_for_started_loop(void);
+
+
+struct afp_versions * pick_version(unsigned char *versions,
+ unsigned char requested) ;
+int pick_uam(unsigned int u1, unsigned int u2);
+
+int afp_server_login(struct afp_server *server,
+ char * mesg, unsigned int *l, unsigned int max);
+
+
+int afp_dologin(struct afp_server *server,
+ unsigned int uam, char * username, char * passwd);
+
+void afp_free_server(struct afp_server **server);
+
+struct afp_server * afp_server_init(struct sockaddr_in * address);
+int afp_get_address(void * priv, const char * hostname, unsigned int port,
+ struct sockaddr_in * address);
+
+
+int afp_main_loop(int command_fd);
+int afp_main_quick_startup(pthread_t * thread);
+
+int afp_server_destroy(struct afp_server *s) ;
+int afp_server_reconnect(struct afp_server * s, char * mesg,
+ unsigned int *l, unsigned int max);
+int afp_server_connect(struct afp_server *s, int full);
+
+struct afp_server * afp_server_complete_connection(
+ void * priv,
+ struct afp_server * server,
+ struct sockaddr_in * address, unsigned char * versions,
+ unsigned int uams, char * username, char * password,
+ unsigned int requested_version, unsigned int uam_mask);
+
+int afp_connect_volume(struct afp_volume * volume, struct afp_server * server,
+ char * mesg, unsigned int * l, unsigned int max);
+int something_is_mounted(struct afp_server * server);
+
+int add_cache_entry(struct afp_file_info * file) ;
+struct afp_file_info * get_cache_by_name(char * name);
+struct afp_server * find_server_by_address(struct sockaddr_in * address);
+struct afp_server * find_server_by_signature(char * signature);
+struct afp_server * find_server_by_name(char * name);
+int server_still_valid(struct afp_server * server);
+
+
+struct afp_server * get_server_base(void);
+int afp_server_remove(struct afp_server * server);
+
+int afp_unmount_volume(struct afp_volume * volume);
+int afp_unmount_all_volumes(struct afp_server * server);
+
+#define volume_is_readonly(x) (((x)->attributes&kReadOnly) || \
+ ((x)->extra_flags & VOLUME_EXTRA_FLAGS_READONLY))
+
+int afp_opendt(struct afp_volume *volume, unsigned short * refnum);
+
+int afp_closedt(struct afp_server * server, unsigned short * refnum);
+
+int afp_getcomment(struct afp_volume *volume, unsigned int did,
+ const char * pathname, struct afp_comment * comment);
+
+int afp_addcomment(struct afp_volume *volume, unsigned int did,
+ const char * pathname, char * comment,uint64_t *size);
+
+int afp_geticon(struct afp_volume * volume, unsigned int filecreator,
+ unsigned int filetype, unsigned char icontype,
+ unsigned short length, struct afp_icon * icon);
+
+/* Things you want to do to a server */
+
+int afp_getsrvrmsg(struct afp_server *server, unsigned short messagetype,unsigned char utf8, unsigned char block, char * mesg);
+
+int afp_login(struct afp_server *server, char * uaname,
+ char * userauthinfo, unsigned int userauthinfo_len,
+ struct afp_rx_buffer *rx);
+
+int afp_changepassword(struct afp_server *server, char * uaname,
+ char * userauthinfo, unsigned int userauthinfo_len,
+ struct afp_rx_buffer *rx);
+
+int afp_logincont(struct afp_server *server, unsigned short id,
+ char * userauthinfo, unsigned int userauthinfo_len,
+ struct afp_rx_buffer *rx);
+
+int afp_getsessiontoken(struct afp_server * server, int type,
+ unsigned int timestamp, struct afp_token *outgoing_token,
+ struct afp_token * incoming_token);
+
+int afp_getsrvrparms(struct afp_server *server);
+
+int afp_logout(struct afp_server *server,unsigned char wait);
+
+int afp_mapname(struct afp_server * server, unsigned char subfunction,
+ char * name, unsigned int * id);
+
+int afp_mapid(struct afp_server * server, unsigned char subfunction,
+ unsigned int id, char *name);
+
+int afp_getuserinfo(struct afp_server * server, int thisuser,
+ unsigned int userid, unsigned short bitmap,
+ unsigned int *newuid, unsigned int *newgid);
+
+int afp_zzzzz(struct afp_server *server);
+
+int afp_volopen(struct afp_volume * volume,
+ unsigned short bitmap, char * password);
+
+int afp_flush(struct afp_volume * volume);
+
+int afp_getfiledirparms(struct afp_volume *volume, unsigned int did,
+ unsigned int filebitmap, unsigned int dirbitmap, const char * pathname,
+ struct afp_file_info *fp);
+
+int afp_enumerate(struct afp_volume * volume,
+ unsigned int dirid,
+ unsigned int filebitmap, unsigned int dirbitmap,
+ unsigned short reqcount,
+ unsigned short startindex,
+ char * path,
+ struct afp_file_info ** file_p);
+
+int afp_enumerateext2(struct afp_volume * volume,
+ unsigned int dirid,
+ unsigned int filebitmap, unsigned int dirbitmap,
+ unsigned short reqcount,
+ unsigned long startindex,
+ char * path,
+ struct afp_file_info ** file_p);
+
+int afp_openfork(struct afp_volume * volume,
+ unsigned char forktype,
+ unsigned int dirid,
+ unsigned short accessmode,
+ char * filename,
+ struct afp_file_info *fp);
+
+int afp_read(struct afp_volume * volume, unsigned short forkid,
+ uint32_t offset,
+ uint32_t count, struct afp_rx_buffer * rx);
+
+int afp_readext(struct afp_volume * volume, unsigned short forkid,
+ uint64_t offset,
+ uint64_t count, struct afp_rx_buffer * rx);
+
+int afp_getvolparms(struct afp_volume * volume, unsigned short bitmap);
+
+
+int afp_createdir(struct afp_volume * volume, unsigned int dirid, const char * pathname, unsigned int *did_p);
+
+int afp_delete(struct afp_volume * volume,
+ unsigned int dirid, char * pathname);
+
+
+int afp_createfile(struct afp_volume * volume, unsigned char flag,
+ unsigned int did, char * pathname);
+
+int afp_write(struct afp_volume * volume, unsigned short forkid,
+ uint32_t offset, uint32_t reqcount,
+ char * data, uint32_t * written);
+
+int afp_writeext(struct afp_volume * volume, unsigned short forkid,
+ uint64_t offset, uint64_t reqcount,
+ char * data, uint64_t * written);
+
+int afp_flushfork(struct afp_volume * volume, unsigned short forkid);
+
+int afp_closefork(struct afp_volume * volume, unsigned short forkid);
+int afp_setfileparms(struct afp_volume * volume,
+ unsigned int dirid, const char * pathname, unsigned short bitmap,
+ struct afp_file_info *fp);
+int afp_setfiledirparms(struct afp_volume * volume,
+ unsigned int dirid, const char * pathname, unsigned short bitmap,
+ struct afp_file_info *fp);
+
+int afp_setdirparms(struct afp_volume * volume,
+ unsigned int dirid, const char * pathname, unsigned short bitmap,
+ struct afp_file_info *fp);
+
+int afp_volclose(struct afp_volume * volume);
+
+
+int afp_setforkparms(struct afp_volume *volume,
+ unsigned short forkid, unsigned short bitmap, unsigned long len);
+
+int afp_byterangelock(struct afp_volume * volume,
+ unsigned char flag,
+ unsigned short forkid,
+ uint32_t offset,
+ uint32_t len, uint32_t *generated_offset);
+
+int afp_byterangelockext(struct afp_volume * volume,
+ unsigned char flag,
+ unsigned short forkid,
+ uint64_t offset,
+ uint64_t len, uint64_t *generated_offset);
+
+int afp_moveandrename(struct afp_volume *volume,
+ unsigned int src_did,
+ unsigned int dst_did,
+ char * src_path, char * dst_path, char *new_name);
+
+int afp_rename(struct afp_volume * volume,
+ unsigned int dirid,
+ char * path_from, char * path_to);
+
+int afp_listextattr(struct afp_volume * volume,
+ unsigned int dirid, unsigned short bitmap,
+ char * pathname, struct afp_extattr_info * info);
+
+/* This is a currently undocumented command */
+int afp_newcommand76(struct afp_volume * volume, unsigned int dlen, char * data);
+
+/* For debugging */
+char * afp_get_command_name(char code);
+
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp_protocol.h
--- afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp_protocol.h 2011-09-10 12:13:50.112124505 +0200
@@ -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/include/afpfs-ng/codepage.h afpfs-ng-0.8.1.patch/include/afpfs-ng/codepage.h
--- afpfs-ng-0.8.1/include/afpfs-ng/codepage.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/codepage.h 2011-09-10 12:13:50.113124518 +0200
@@ -0,0 +1,11 @@
+#ifndef __CODE_PAGE_H_
+#define __CODE_PAGE_H_
+int convert_utf8dec_to_utf8pre(const char *src, int src_len,
+ char * dest, int dest_len);
+int convert_utf8pre_to_utf8dec(const char * src, int src_len,
+ char * dest, int dest_len);
+int convert_path_to_unix(char encoding, char * dest,
+ char * src, int dest_len);
+int convert_path_to_afp(char encoding, char * dest,
+ char * src, int dest_len);
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/dsi.h afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h
--- afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h 2011-09-10 12:13:50.115124544 +0200
@@ -0,0 +1,33 @@
+
+#ifndef __DSI_H_
+#define __DSI_H_
+
+#include "afpfs-ng/afp.h"
+
+struct dsi_request
+{
+ unsigned short requestid;
+ unsigned char subcommand;
+ void * other;
+ unsigned char wait;
+ pthread_cond_t condition_cond;
+ struct dsi_request * next;
+ int return_code;
+};
+
+int dsi_receive(struct afp_server * server, void * data, int size);
+int dsi_getstatus(struct afp_server * server);
+
+int dsi_opensession(struct afp_server *server);
+
+int dsi_send(struct afp_server *server, char * msg, int size,int wait,unsigned char subcommand, void ** other);
+struct dsi_session * dsi_create(struct afp_server *server);
+int dsi_restart(struct afp_server *server);
+int dsi_recv(struct afp_server * server);
+
+#define DSI_BLOCK_TIMEOUT -1
+#define DSI_DONT_WAIT 0
+#define DSI_DEFAULT_TIMEOUT 5
+
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h afpfs-ng-0.8.1.patch/include/afpfs-ng/libafpclient.h
--- afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/libafpclient.h 2011-09-10 12:13:50.115124544 +0200
@@ -0,0 +1,50 @@
+
+#ifndef __CLIENT_H_
+#define __CLIENT_H_
+
+#include <unistd.h>
+#include <syslog.h>
+
+#define MAX_CLIENT_RESPONSE 2048
+
+
+enum loglevels {
+ AFPFSD,
+};
+
+struct afp_server;
+struct afp_volume;
+
+struct libafpclient {
+ int (*unmount_volume) (struct afp_volume * volume);
+ void (*log_for_client)(void * priv,
+ enum loglevels loglevel, int logtype, const char *message);
+ void (*forced_ending_hook)(void);
+ int (*scan_extra_fds)(int command_fd,fd_set *set, int * max_fd);
+ void (*loop_started)(void);
+} ;
+
+extern struct libafpclient * libafpclient;
+
+void libafpclient_register(struct libafpclient * tmpclient);
+
+
+void signal_main_thread(void);
+
+/* These are logging functions */
+
+#define MAXLOGSIZE 2048
+
+#define LOG_METHOD_SYSLOG 1
+#define LOG_METHOD_STDOUT 2
+
+void set_log_method(int m);
+
+
+void log_for_client(void * priv,
+ enum loglevels loglevel, int logtype, char * message,...);
+
+void stdout_log_for_client(void * priv,
+ enum loglevels loglevel, int logtype, const char *message);
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/Makefile.am afpfs-ng-0.8.1.patch/include/afpfs-ng/Makefile.am
--- afpfs-ng-0.8.1/include/afpfs-ng/Makefile.am 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/Makefile.am 2011-09-10 12:13:50.115124544 +0200
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in
+
+afpfsincludedir = $(includedir)/afpfs-ng
+
+afpfsinclude_HEADERS = afp.h afp_protocol.h libafpclient.h
+nodist_afpfsinclude_HEADERS = codepage.h dsi.h map_def.h midlevel.h uams_def.h utils.h
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/map_def.h afpfs-ng-0.8.1.patch/include/afpfs-ng/map_def.h
--- afpfs-ng-0.8.1/include/afpfs-ng/map_def.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/map_def.h 2011-09-10 12:13:50.116124557 +0200
@@ -0,0 +1,15 @@
+#ifndef __MAP_H_
+#define __MAP_H_
+
+#include "afpfs-ng/afp.h"
+
+#define AFP_MAPPING_UNKNOWN 0
+#define AFP_MAPPING_COMMON 1
+#define AFP_MAPPING_LOGINIDS 2
+#define AFP_MAPPING_NAME 3
+
+unsigned int map_string_to_num(char * name);
+char * get_mapping_name(struct afp_volume * volume);
+
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h afpfs-ng-0.8.1.patch/include/afpfs-ng/midlevel.h
--- afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/midlevel.h 2011-09-10 12:13:50.116124557 +0200
@@ -0,0 +1,64 @@
+#ifndef __MIDLEVEL_H_
+#define __MIDLEVEL_H_
+
+#include <utime.h>
+#include "afpfs-ng/afp.h"
+
+int ml_open(struct afp_volume * volume, const char *path, int flags,
+ struct afp_file_info **newfp);
+
+int ml_creat(struct afp_volume * volume, const char *path,mode_t mode);
+
+int ml_readdir(struct afp_volume * volume,
+ const char *path,
+ struct afp_file_info **base);
+
+int ml_read(struct afp_volume * volume, const char *path,
+ char *buf, size_t size, off_t offset,
+ struct afp_file_info *fp, int * eof);
+
+int ml_chmod(struct afp_volume * vol, const char * path, mode_t mode);
+
+int ml_unlink(struct afp_volume * vol, const char *path);
+
+int ml_mkdir(struct afp_volume * vol, const char * path, mode_t mode);
+
+int ml_close(struct afp_volume * volume, const char * path,
+ struct afp_file_info * fp);
+
+int ml_getattr(struct afp_volume * volume, const char *path,
+ struct stat *stbuf);
+
+int ml_write(struct afp_volume * volume, const char * path,
+ const char *data, size_t size, off_t offset,
+ struct afp_file_info * fp, uid_t uid,
+ gid_t gid);
+
+int ml_readlink(struct afp_volume * vol, const char * path,
+ char *buf, size_t size);
+
+int ml_rmdir(struct afp_volume * vol, const char *path);
+
+int ml_chown(struct afp_volume * vol, const char * path,
+ uid_t uid, gid_t gid);
+
+int ml_truncate(struct afp_volume * vol, const char * path, off_t offset);
+
+int ml_utime(struct afp_volume * vol, const char * path,
+ struct utimbuf * timebuf);
+
+int ml_symlink(struct afp_volume *vol, const char * path1, const char * path2);
+
+int ml_rename(struct afp_volume * vol,
+ const char * path_from, const char * path_to);
+
+int ml_statfs(struct afp_volume * vol, const char *path, struct statvfs *stat);
+
+void afp_ml_filebase_free(struct afp_file_info **filebase);
+
+int ml_passwd(struct afp_server *server,
+ char * username, char * oldpasswd, char * newpasswd);
+
+
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h afpfs-ng-0.8.1.patch/include/afpfs-ng/uams_def.h
--- afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/uams_def.h 2011-09-10 12:13:50.116124557 +0200
@@ -0,0 +1,16 @@
+#ifndef __UAM_DEFS_H_
+#define __UAM_DEFS_H_
+
+#define UAM_NOUSERAUTHENT 0x1
+#define UAM_CLEARTXTPASSWRD 0x2
+#define UAM_RANDNUMEXCHANGE 0x4
+#define UAM_2WAYRANDNUM 0x8
+#define UAM_DHCAST128 0x10
+#define UAM_CLIENTKRB 0x20
+#define UAM_DHX2 0x40
+#define UAM_RECON1 0x80
+
+int uam_string_to_bitmap(char * name);
+char * uam_bitmap_to_string(unsigned int bitmap);
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/utils.h afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h
--- afpfs-ng-0.8.1/include/afpfs-ng/utils.h 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h 2011-09-10 12:13:50.116124557 +0200
@@ -0,0 +1,43 @@
+#ifndef __UTILS_H_
+#define __UTILS_H_
+#include <stdio.h>
+
+#include "afpfs-ng/afp.h"
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define hton64(x) (x)
+#define ntoh64(x) (x)
+#else /* BYTE_ORDER == BIG_ENDIAN */
+#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
+ (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
+#define ntoh64(x) (hton64(x))
+#endif /* BYTE_ORDER == BIG_ENDIAN */
+
+#define min(a,b) (((a)<(b)) ? (a) : (b))
+#define max(a,b) (((a)>(b)) ? (a) : (b))
+
+
+
+unsigned char unixpath_to_afppath(
+ struct afp_server * server,
+ char * buf);
+
+unsigned char sizeof_path_header(struct afp_server * server);
+
+
+
+unsigned char copy_from_pascal(char *dest, char *pascal,unsigned int max_len) ;
+unsigned short copy_from_pascal_two(char *dest, char *pascal,unsigned int max_len);
+
+unsigned char copy_to_pascal(char *dest, const char *src);
+unsigned short copy_to_pascal_two(char *dest, const char *src);
+
+void copy_path(struct afp_server * server, char * dest, const char * pathname, unsigned char len);
+
+
+char * create_path(struct afp_server * server, char * pathname, unsigned short * len);
+
+
+int invalid_filename(struct afp_server * server, const char * filename);
+
+#endif
diff -Naur afpfs-ng-0.8.1/include/afp.h afpfs-ng-0.8.1.patch/include/afp.h
--- afpfs-ng-0.8.1/include/afp.h 2008-03-08 17:08:18.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afp.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,533 +0,0 @@
-
-#ifndef _AFP_H_
-#define _AFP_H_
-
-#include <arpa/inet.h>
-#include <pthread.h>
-#include <netdb.h>
-#include <sys/statvfs.h>
-#include <pwd.h>
-#include <afp_protocol.h>
-#include <libafpclient.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <netinet/in.h>
-
-
-#define AFPFS_VERSION "0.8.1"
-
-/* This is the maximum AFP version this library supports */
-#define AFP_MAX_SUPPORTED_VERSION 32
-
-/* afp_url is used to pass locations around */
-struct afp_url {
- enum {TCPIP,AT} protocol;
- char username[AFP_MAX_USERNAME_LEN];
- char uamname[50];
- char password[AFP_MAX_PASSWORD_LEN];
- char servername[AFP_SERVER_NAME_UTF8_LEN];
- int port;
- char volumename[AFP_VOLUME_NAME_UTF8_LEN];
- char path[AFP_MAX_PATH];
-
- int requested_version;
- char zone[AFP_ZONE_LEN]; /* Only used for Appletalk */
- char volpassword[9];;
-};
-
-struct afp_token {
- unsigned int length;
- char data[AFP_TOKEN_MAX_LEN];
-};
-
-#define SERVER_MAX_VERSIONS 10
-#define SERVER_MAX_UAMS 10
-
-struct afp_rx_buffer {
- unsigned int size;
- unsigned int maxsize;
- char * data;
- int errorcode;
-};
-
-
-struct afp_file_info {
- unsigned short attributes;
- unsigned int did;
- unsigned int creation_date;
- unsigned int modification_date;
- unsigned int backup_date;
- unsigned int fileid;
- unsigned short offspring;
- char sync;
- char finderinfo[32];
- char name[AFP_MAX_PATH];
- char basename[AFP_MAX_PATH];
- char translated_name[AFP_MAX_PATH];
- struct afp_unixprivs unixprivs;
- unsigned int accessrights;
- struct afp_file_info * next;
- struct afp_file_info * largelist_next;
- unsigned char isdir;
- unsigned long long size;
- unsigned short resourcesize;
- unsigned int resource;
- unsigned short forkid;
- struct afp_icon * icon;
- int eof;
-};
-
-
-#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_KNOWN 0x1
-#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_BROKEN 0x2
-#define VOLUME_EXTRA_FLAGS_SHOW_APPLEDOUBLE 0x4
-#define VOLUME_EXTRA_FLAGS_VOL_SUPPORTS_UNIX 0x8
-#define VOLUME_EXTRA_FLAGS_NO_LOCKING 0x10
-#define VOLUME_EXTRA_FLAGS_IGNORE_UNIXPRIVS 0x20
-#define VOLUME_EXTRA_FLAGS_READONLY 0x40
-
-#define AFP_VOLUME_UNMOUNTED 0
-#define AFP_VOLUME_MOUNTED 1
-#define AFP_VOLUME_UNMOUNTING 2
-
-struct afp_volume {
- unsigned short volid;
- char flags; /* This is from afpGetSrvrParms */
- unsigned short attributes; /* This is from VolOpen */
- unsigned short signature; /* This is fixed or variable */
- unsigned int creation_date;
- unsigned int modification_date;
- unsigned int backup_date;
- struct statvfs stat;
- unsigned char mounted;
- char mountpoint[255];
- struct afp_server * server;
- char volume_name[AFP_VOLUME_NAME_LEN];
- char volume_name_printable[AFP_VOLUME_NAME_UTF8_LEN];
- unsigned short dtrefnum;
- char volpassword[AFP_VOLPASS_LEN];
- unsigned int extra_flags; /* This is an afpfs-ng specific field */
-
- /* Our directory ID cache */
- struct did_cache_entry * did_cache_base;
- pthread_mutex_t did_cache_mutex;
-
- /* Our journal of open forks */
- struct afp_file_info * open_forks;
- pthread_mutex_t open_forks_mutex;
-
- /* Used to trigger startup */
- pthread_cond_t startup_condition_cond;
-
- struct {
- uint64_t hits;
- uint64_t misses;
- uint64_t expired;
- uint64_t force_removed;
- } did_cache_stats;
-
- void * priv; /* This is a private structure for fuse/cmdline, etc */
- pthread_t thread; /* This is the per-volume thread */
-
- int mapping;
-
-};
-
-#define SERVER_STATE_CONNECTED 1
-#define SERVER_STATE_DISCONNECTED 2
-
-enum server_type{
- AFPFS_SERVER_TYPE_UNKNOWN,
- AFPFS_SERVER_TYPE_NETATALK,
- AFPFS_SERVER_TYPE_AIRPORT,
- AFPFS_SERVER_TYPE_MACINTOSH,
-};
-
-#define is_netatalk(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_NETATALK )
-#define is_airport(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_AIRPORT )
-#define is_macintosh(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_MACINTOSH )
-
-
-
-struct afp_versions {
- char *av_name;
- int av_number;
-};
-extern struct afp_versions afp_versions[];
-
-struct afp_server {
-
- /* Our buffer sizes */
- unsigned int tx_quantum;
- unsigned int rx_quantum;
-
- unsigned int tx_delay;
-
- /* Connection information */
- struct sockaddr_in address;
- int fd;
-
- /* Some stats, for information only */
- struct {
- uint64_t runt_packets;
- uint64_t incoming_dsi;
- uint64_t rx_bytes;
- uint64_t tx_bytes;
- uint64_t requests_pending;
- } stats;
-
- /* General information */
- char server_name[AFP_SERVER_NAME_LEN];
- char server_name_utf8[AFP_SERVER_NAME_UTF8_LEN];
- char server_name_printable[AFP_SERVER_NAME_UTF8_LEN];
-
- char machine_type[17];
- char icon[256];
- char signature[16];
- unsigned short flags;
- int connect_state;
- enum server_type server_type;
-
- /* This is the time we connected */
- time_t connect_time;
-
- /* UAMs */
- unsigned int supported_uams;
- unsigned int using_uam;
-
- /* Authentication */
- char username[AFP_MAX_USERNAME_LEN];
- char password[AFP_MAX_PASSWORD_LEN];
-
- /* Session */
- struct afp_token token;
- char need_resume;
-
- /* Versions */
- unsigned char requested_version;
- unsigned char versions[SERVER_MAX_VERSIONS];
- struct afp_versions *using_version;
-
- /* Volumes */
- unsigned char num_volumes;
- struct afp_volume * volumes;
-
- void * dsi;
- unsigned int exit_flag;
-
- /* Our DSI request queue */
- pthread_mutex_t requestid_mutex;
- pthread_mutex_t request_queue_mutex;
- unsigned short lastrequestid;
- unsigned short expectedrequestid;
- struct dsi_request * command_requests;
-
-
- char loginmesg[200];
- char servermesg[200];
- char path_encoding;
-
- /* This is the data for the incoming buffer */
- char * incoming_buffer;
- int data_read;
- int bufsize;
-
- /* And this is for the outgoing queue */
- pthread_mutex_t send_mutex;
-
- /* This is for user mapping */
- struct passwd passwd;
- unsigned int server_uid, server_gid;
- int server_gid_valid;
-
- struct afp_server *next;
-
- /* These are for DSI attention packets */
- unsigned int attention_quantum;
- unsigned int attention_len;
- char * attention_buffer;
-
-};
-
-struct afp_extattr_info {
- unsigned int maxsize;
- unsigned int size;
- char data[1024];
-};
-struct afp_comment {
- unsigned int maxsize;
- unsigned int size;
- char *data;
-};
-
-struct afp_icon {
- unsigned int maxsize;
- unsigned int size;
- char *data;
-};
-
-#define AFP_DEFAULT_ATTENTION_QUANTUM 1024
-
-void afp_unixpriv_to_stat(struct afp_file_info *fp,
- struct stat *stat);
-
-int init_uams(void) ;
-
-unsigned int find_uam_by_name(const char * name);
-char * uam_bitmap_to_string(unsigned int bitmap);
-
-
-char * get_uam_names_list(void);
-
-unsigned int default_uams_mask(void);
-
-struct afp_volume * find_volume_by_name(struct afp_server * server,
- const char * volname);
-
-struct afp_connection_request {
- unsigned int uam_mask;
- struct afp_url url;
-};
-
-void afp_default_url(struct afp_url *url);
-int afp_parse_url(struct afp_url * url, const char * toparse, int verbose);
-void afp_print_url(struct afp_url * url);
-int afp_url_validate(char * url_string, struct afp_url * valid_url);
-
-int afp_list_volnames(struct afp_server * server, char * names, int max);
-
-/* User mapping */
-int afp_detect_mapping(struct afp_volume * volume);
-
-/* These are some functions that help with simple status text generation */
-
-int afp_status_header(char * text, int * len);
-int afp_status_server(struct afp_server * s,char * text, int * len);
-
-
-struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req);
-
-void * just_end_it_now(void *other);
-void add_fd_and_signal(int fd);
-void loop_disconnect(struct afp_server *s);
-void afp_wait_for_started_loop(void);
-
-
-struct afp_versions * pick_version(unsigned char *versions,
- unsigned char requested) ;
-int pick_uam(unsigned int u1, unsigned int u2);
-
-int afp_server_login(struct afp_server *server,
- char * mesg, unsigned int *l, unsigned int max);
-
-
-int afp_dologin(struct afp_server *server,
- unsigned int uam, char * username, char * passwd);
-
-void afp_free_server(struct afp_server **server);
-
-struct afp_server * afp_server_init(struct sockaddr_in * address);
-int afp_get_address(void * priv, const char * hostname, unsigned int port,
- struct sockaddr_in * address);
-
-
-int afp_main_loop(int command_fd);
-int afp_main_quick_startup(pthread_t * thread);
-
-int afp_server_destroy(struct afp_server *s) ;
-int afp_server_reconnect(struct afp_server * s, char * mesg,
- unsigned int *l, unsigned int max);
-int afp_server_connect(struct afp_server *s, int full);
-
-struct afp_server * afp_server_complete_connection(
- void * priv,
- struct afp_server * server,
- struct sockaddr_in * address, unsigned char * versions,
- unsigned int uams, char * username, char * password,
- unsigned int requested_version, unsigned int uam_mask);
-
-int afp_connect_volume(struct afp_volume * volume, struct afp_server * server,
- char * mesg, unsigned int * l, unsigned int max);
-int something_is_mounted(struct afp_server * server);
-
-int add_cache_entry(struct afp_file_info * file) ;
-struct afp_file_info * get_cache_by_name(char * name);
-struct afp_server * find_server_by_address(struct sockaddr_in * address);
-struct afp_server * find_server_by_signature(char * signature);
-struct afp_server * find_server_by_name(char * name);
-int server_still_valid(struct afp_server * server);
-
-
-struct afp_server * get_server_base(void);
-int afp_server_remove(struct afp_server * server);
-
-int afp_unmount_volume(struct afp_volume * volume);
-int afp_unmount_all_volumes(struct afp_server * server);
-
-#define volume_is_readonly(x) (((x)->attributes&kReadOnly) || \
- ((x)->extra_flags & VOLUME_EXTRA_FLAGS_READONLY))
-
-int afp_opendt(struct afp_volume *volume, unsigned short * refnum);
-
-int afp_closedt(struct afp_server * server, unsigned short * refnum);
-
-int afp_getcomment(struct afp_volume *volume, unsigned int did,
- const char * pathname, struct afp_comment * comment);
-
-int afp_addcomment(struct afp_volume *volume, unsigned int did,
- const char * pathname, char * comment,uint64_t *size);
-
-int afp_geticon(struct afp_volume * volume, unsigned int filecreator,
- unsigned int filetype, unsigned char icontype,
- unsigned short length, struct afp_icon * icon);
-
-/* Things you want to do to a server */
-
-int afp_getsrvrmsg(struct afp_server *server, unsigned short messagetype,unsigned char utf8, unsigned char block, char * mesg);
-
-int afp_login(struct afp_server *server, char * uaname,
- char * userauthinfo, unsigned int userauthinfo_len,
- struct afp_rx_buffer *rx);
-
-int afp_changepassword(struct afp_server *server, char * uaname,
- char * userauthinfo, unsigned int userauthinfo_len,
- struct afp_rx_buffer *rx);
-
-int afp_logincont(struct afp_server *server, unsigned short id,
- char * userauthinfo, unsigned int userauthinfo_len,
- struct afp_rx_buffer *rx);
-
-int afp_getsessiontoken(struct afp_server * server, int type,
- unsigned int timestamp, struct afp_token *outgoing_token,
- struct afp_token * incoming_token);
-
-int afp_getsrvrparms(struct afp_server *server);
-
-int afp_logout(struct afp_server *server,unsigned char wait);
-
-int afp_mapname(struct afp_server * server, unsigned char subfunction,
- char * name, unsigned int * id);
-
-int afp_mapid(struct afp_server * server, unsigned char subfunction,
- unsigned int id, char *name);
-
-int afp_getuserinfo(struct afp_server * server, int thisuser,
- unsigned int userid, unsigned short bitmap,
- unsigned int *newuid, unsigned int *newgid);
-
-int afp_zzzzz(struct afp_server *server);
-
-int afp_volopen(struct afp_volume * volume,
- unsigned short bitmap, char * password);
-
-int afp_flush(struct afp_volume * volume);
-
-int afp_getfiledirparms(struct afp_volume *volume, unsigned int did,
- unsigned int filebitmap, unsigned int dirbitmap, const char * pathname,
- struct afp_file_info *fp);
-
-int afp_enumerate(struct afp_volume * volume,
- unsigned int dirid,
- unsigned int filebitmap, unsigned int dirbitmap,
- unsigned short reqcount,
- unsigned short startindex,
- char * path,
- struct afp_file_info ** file_p);
-
-int afp_enumerateext2(struct afp_volume * volume,
- unsigned int dirid,
- unsigned int filebitmap, unsigned int dirbitmap,
- unsigned short reqcount,
- unsigned long startindex,
- char * path,
- struct afp_file_info ** file_p);
-
-int afp_openfork(struct afp_volume * volume,
- unsigned char forktype,
- unsigned int dirid,
- unsigned short accessmode,
- char * filename,
- struct afp_file_info *fp);
-
-int afp_read(struct afp_volume * volume, unsigned short forkid,
- uint32_t offset,
- uint32_t count, struct afp_rx_buffer * rx);
-
-int afp_readext(struct afp_volume * volume, unsigned short forkid,
- uint64_t offset,
- uint64_t count, struct afp_rx_buffer * rx);
-
-int afp_getvolparms(struct afp_volume * volume, unsigned short bitmap);
-
-
-int afp_createdir(struct afp_volume * volume, unsigned int dirid, const char * pathname, unsigned int *did_p);
-
-int afp_delete(struct afp_volume * volume,
- unsigned int dirid, char * pathname);
-
-
-int afp_createfile(struct afp_volume * volume, unsigned char flag,
- unsigned int did, char * pathname);
-
-int afp_write(struct afp_volume * volume, unsigned short forkid,
- uint32_t offset, uint32_t reqcount,
- char * data, uint32_t * written);
-
-int afp_writeext(struct afp_volume * volume, unsigned short forkid,
- uint64_t offset, uint64_t reqcount,
- char * data, uint64_t * written);
-
-int afp_flushfork(struct afp_volume * volume, unsigned short forkid);
-
-int afp_closefork(struct afp_volume * volume, unsigned short forkid);
-int afp_setfileparms(struct afp_volume * volume,
- unsigned int dirid, const char * pathname, unsigned short bitmap,
- struct afp_file_info *fp);
-int afp_setfiledirparms(struct afp_volume * volume,
- unsigned int dirid, const char * pathname, unsigned short bitmap,
- struct afp_file_info *fp);
-
-int afp_setdirparms(struct afp_volume * volume,
- unsigned int dirid, const char * pathname, unsigned short bitmap,
- struct afp_file_info *fp);
-
-int afp_volclose(struct afp_volume * volume);
-
-
-int afp_setforkparms(struct afp_volume *volume,
- unsigned short forkid, unsigned short bitmap, unsigned long len);
-
-int afp_byterangelock(struct afp_volume * volume,
- unsigned char flag,
- unsigned short forkid,
- uint32_t offset,
- uint32_t len, uint32_t *generated_offset);
-
-int afp_byterangelockext(struct afp_volume * volume,
- unsigned char flag,
- unsigned short forkid,
- uint64_t offset,
- uint64_t len, uint64_t *generated_offset);
-
-int afp_moveandrename(struct afp_volume *volume,
- unsigned int src_did,
- unsigned int dst_did,
- char * src_path, char * dst_path, char *new_name);
-
-int afp_rename(struct afp_volume * volume,
- unsigned int dirid,
- char * path_from, char * path_to);
-
-int afp_listextattr(struct afp_volume * volume,
- unsigned int dirid, unsigned short bitmap,
- char * pathname, struct afp_extattr_info * info);
-
-/* This is a currently undocumented command */
-int afp_newcommand76(struct afp_volume * volume, unsigned int dlen, char * data);
-
-/* For debugging */
-char * afp_get_command_name(char code);
-
-
-#endif
diff -Naur afpfs-ng-0.8.1/include/afp_protocol.h afpfs-ng-0.8.1.patch/include/afp_protocol.h
--- afpfs-ng-0.8.1/include/afp_protocol.h 2008-02-18 04:33:43.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/afp_protocol.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,361 +0,0 @@
-
-#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/include/codepage.h afpfs-ng-0.8.1.patch/include/codepage.h
--- afpfs-ng-0.8.1/include/codepage.h 2007-09-23 16:21:30.000000000 +0200
+++ afpfs-ng-0.8.1.patch/include/codepage.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-#ifndef __CODE_PAGE_H_
-#define __CODE_PAGE_H_
-int convert_utf8dec_to_utf8pre(const char *src, int src_len,
- char * dest, int dest_len);
-int convert_utf8pre_to_utf8dec(const char * src, int src_len,
- char * dest, int dest_len);
-int convert_path_to_unix(char encoding, char * dest,
- char * src, int dest_len);
-int convert_path_to_afp(char encoding, char * dest,
- char * src, int dest_len);
-#endif
diff -Naur afpfs-ng-0.8.1/include/dsi.h afpfs-ng-0.8.1.patch/include/dsi.h
--- afpfs-ng-0.8.1/include/dsi.h 2008-02-18 04:33:24.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/dsi.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,33 +0,0 @@
-
-#ifndef __DSI_H_
-#define __DSI_H_
-
-#include "afp.h"
-
-struct dsi_request
-{
- unsigned short requestid;
- unsigned char subcommand;
- void * other;
- unsigned char wait;
- pthread_cond_t condition_cond;
- struct dsi_request * next;
- int return_code;
-};
-
-int dsi_receive(struct afp_server * server, void * data, int size);
-int dsi_getstatus(struct afp_server * server);
-
-int dsi_opensession(struct afp_server *server);
-
-int dsi_send(struct afp_server *server, char * msg, int size,int wait,unsigned char subcommand, void ** other);
-struct dsi_session * dsi_create(struct afp_server *server);
-int dsi_restart(struct afp_server *server);
-int dsi_recv(struct afp_server * server);
-
-#define DSI_BLOCK_TIMEOUT -1
-#define DSI_DONT_WAIT 0
-#define DSI_DEFAULT_TIMEOUT 5
-
-
-#endif
diff -Naur afpfs-ng-0.8.1/include/libafpclient.h afpfs-ng-0.8.1.patch/include/libafpclient.h
--- afpfs-ng-0.8.1/include/libafpclient.h 2008-01-30 05:37:59.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/libafpclient.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-
-#ifndef __CLIENT_H_
-#define __CLIENT_H_
-
-#include <unistd.h>
-#include <syslog.h>
-
-#define MAX_CLIENT_RESPONSE 2048
-
-
-enum loglevels {
- AFPFSD,
-};
-
-struct afp_server;
-struct afp_volume;
-
-struct libafpclient {
- int (*unmount_volume) (struct afp_volume * volume);
- void (*log_for_client)(void * priv,
- enum loglevels loglevel, int logtype, const char *message);
- void (*forced_ending_hook)(void);
- int (*scan_extra_fds)(int command_fd,fd_set *set, int * max_fd);
- void (*loop_started)(void);
-} ;
-
-extern struct libafpclient * libafpclient;
-
-void libafpclient_register(struct libafpclient * tmpclient);
-
-
-void signal_main_thread(void);
-
-/* These are logging functions */
-
-#define MAXLOGSIZE 2048
-
-#define LOG_METHOD_SYSLOG 1
-#define LOG_METHOD_STDOUT 2
-
-void set_log_method(int m);
-
-
-void log_for_client(void * priv,
- enum loglevels loglevel, int logtype, char * message,...);
-
-void stdout_log_for_client(void * priv,
- enum loglevels loglevel, int logtype, const char *message);
-
-#endif
diff -Naur afpfs-ng-0.8.1/include/Makefile.am afpfs-ng-0.8.1.patch/include/Makefile.am
--- afpfs-ng-0.8.1/include/Makefile.am 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/Makefile.am 2011-09-10 12:13:50.126124692 +0200
@@ -0,0 +1,3 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = afpfs-ng
diff -Naur afpfs-ng-0.8.1/include/map_def.h afpfs-ng-0.8.1.patch/include/map_def.h
--- afpfs-ng-0.8.1/include/map_def.h 2008-01-17 05:55:46.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/map_def.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-#ifndef __MAP_H_
-#define __MAP_H_
-
-#include "afp.h"
-
-#define AFP_MAPPING_UNKNOWN 0
-#define AFP_MAPPING_COMMON 1
-#define AFP_MAPPING_LOGINIDS 2
-#define AFP_MAPPING_NAME 3
-
-unsigned int map_string_to_num(char * name);
-char * get_mapping_name(struct afp_volume * volume);
-
-
-#endif
diff -Naur afpfs-ng-0.8.1/include/midlevel.h afpfs-ng-0.8.1.patch/include/midlevel.h
--- afpfs-ng-0.8.1/include/midlevel.h 2007-12-24 20:39:25.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/midlevel.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
-#ifndef __MIDLEVEL_H_
-#define __MIDLEVEL_H_
-
-#include <utime.h>
-#include "afp.h"
-
-int ml_open(struct afp_volume * volume, const char *path, int flags,
- struct afp_file_info **newfp);
-
-int ml_creat(struct afp_volume * volume, const char *path,mode_t mode);
-
-int ml_readdir(struct afp_volume * volume,
- const char *path,
- struct afp_file_info **base);
-
-int ml_read(struct afp_volume * volume, const char *path,
- char *buf, size_t size, off_t offset,
- struct afp_file_info *fp, int * eof);
-
-int ml_chmod(struct afp_volume * vol, const char * path, mode_t mode);
-
-int ml_unlink(struct afp_volume * vol, const char *path);
-
-int ml_mkdir(struct afp_volume * vol, const char * path, mode_t mode);
-
-int ml_close(struct afp_volume * volume, const char * path,
- struct afp_file_info * fp);
-
-int ml_getattr(struct afp_volume * volume, const char *path,
- struct stat *stbuf);
-
-int ml_write(struct afp_volume * volume, const char * path,
- const char *data, size_t size, off_t offset,
- struct afp_file_info * fp, uid_t uid,
- gid_t gid);
-
-int ml_readlink(struct afp_volume * vol, const char * path,
- char *buf, size_t size);
-
-int ml_rmdir(struct afp_volume * vol, const char *path);
-
-int ml_chown(struct afp_volume * vol, const char * path,
- uid_t uid, gid_t gid);
-
-int ml_truncate(struct afp_volume * vol, const char * path, off_t offset);
-
-int ml_utime(struct afp_volume * vol, const char * path,
- struct utimbuf * timebuf);
-
-int ml_symlink(struct afp_volume *vol, const char * path1, const char * path2);
-
-int ml_rename(struct afp_volume * vol,
- const char * path_from, const char * path_to);
-
-int ml_statfs(struct afp_volume * vol, const char *path, struct statvfs *stat);
-
-void afp_ml_filebase_free(struct afp_file_info **filebase);
-
-int ml_passwd(struct afp_server *server,
- char * username, char * oldpasswd, char * newpasswd);
-
-
-
-#endif
diff -Naur afpfs-ng-0.8.1/include/uams_def.h afpfs-ng-0.8.1.patch/include/uams_def.h
--- afpfs-ng-0.8.1/include/uams_def.h 2007-09-07 15:10:51.000000000 +0200
+++ afpfs-ng-0.8.1.patch/include/uams_def.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-#ifndef __UAM_DEFS_H_
-#define __UAM_DEFS_H_
-
-#define UAM_NOUSERAUTHENT 0x1
-#define UAM_CLEARTXTPASSWRD 0x2
-#define UAM_RANDNUMEXCHANGE 0x4
-#define UAM_2WAYRANDNUM 0x8
-#define UAM_DHCAST128 0x10
-#define UAM_CLIENTKRB 0x20
-#define UAM_DHX2 0x40
-#define UAM_RECON1 0x80
-
-int uam_string_to_bitmap(char * name);
-char * uam_bitmap_to_string(unsigned int bitmap);
-
-#endif
diff -Naur afpfs-ng-0.8.1/include/utils.h afpfs-ng-0.8.1.patch/include/utils.h
--- afpfs-ng-0.8.1/include/utils.h 2008-02-18 04:33:58.000000000 +0100
+++ afpfs-ng-0.8.1.patch/include/utils.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,43 +0,0 @@
-#ifndef __UTILS_H_
-#define __UTILS_H_
-#include <stdio.h>
-
-#include "afp.h"
-
-#if BYTE_ORDER == BIG_ENDIAN
-#define hton64(x) (x)
-#define ntoh64(x) (x)
-#else /* BYTE_ORDER == BIG_ENDIAN */
-#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
- (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
-#define ntoh64(x) (hton64(x))
-#endif /* BYTE_ORDER == BIG_ENDIAN */
-
-#define min(a,b) (((a)<(b)) ? (a) : (b))
-#define max(a,b) (((a)>(b)) ? (a) : (b))
-
-
-
-unsigned char unixpath_to_afppath(
- struct afp_server * server,
- char * buf);
-
-unsigned char sizeof_path_header(struct afp_server * server);
-
-
-
-unsigned char copy_from_pascal(char *dest, char *pascal,unsigned int max_len) ;
-unsigned short copy_from_pascal_two(char *dest, char *pascal,unsigned int max_len);
-
-unsigned char copy_to_pascal(char *dest, const char *src);
-unsigned short copy_to_pascal_two(char *dest, const char *src);
-
-void copy_path(struct afp_server * server, char * dest, const char * pathname, unsigned char len);
-
-
-char * create_path(struct afp_server * server, char * pathname, unsigned short * len);
-
-
-int invalid_filename(struct afp_server * server, const char * filename);
-
-#endif
diff -Naur afpfs-ng-0.8.1/lib/afp.c afpfs-ng-0.8.1.patch/lib/afp.c
--- afpfs-ng-0.8.1/lib/afp.c 2008-03-08 03:44:16.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/afp.c 2011-09-10 12:13:50.131124759 +0200
@@ -9,7 +9,7 @@
-#include "afp.h"
+#include "afpfs-ng/afp.h"
#include <config.h>
#include <stdio.h>
@@ -21,17 +21,17 @@
#include <sys/socket.h>
#include <errno.h>
-#include "afp_protocol.h"
-#include "libafpclient.h"
+#include "afpfs-ng/afp_protocol.h"
+#include "afpfs-ng/libafpclient.h"
#include "server.h"
-#include "dsi.h"
+#include "afpfs-ng/dsi.h"
#include "dsi_protocol.h"
-#include "utils.h"
+#include "afpfs-ng/utils.h"
#include "afp_replies.h"
#include "afp_internal.h"
#include "did.h"
#include "forklist.h"
-#include "codepage.h"
+#include "afpfs-ng/codepage.h"
struct afp_versions afp_versions[] = {
{ "AFPVersion 1.1", 11 },
diff -Naur afpfs-ng-0.8.1/lib/afp_internal.h afpfs-ng-0.8.1.patch/lib/afp_internal.h
--- afpfs-ng-0.8.1/lib/afp_internal.h 2007-11-09 05:27:20.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/afp_internal.h 2011-09-10 12:13:50.132124772 +0200
@@ -1,7 +1,7 @@
#ifndef _AFP_INTERNAL_H_
#define _AFP_INTERNAL_H_
-#include "afp.h"
+#include "afpfs-ng/afp.h"
extern struct afp_versions afp_versions[];
diff -Naur afpfs-ng-0.8.1/lib/afp_url.c afpfs-ng-0.8.1.patch/lib/afp_url.c
--- afpfs-ng-0.8.1/lib/afp_url.c 2008-03-04 21:16:49.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/afp_url.c 2011-09-10 12:13:50.132124772 +0200
@@ -3,7 +3,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
-#include "afp.h"
+#include "afpfs-ng/afp.h"
void afp_default_url(struct afp_url *url)
{
diff -Naur afpfs-ng-0.8.1/lib/client.c afpfs-ng-0.8.1.patch/lib/client.c
--- afpfs-ng-0.8.1/lib/client.c 2008-02-18 04:36:30.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/client.c 2011-09-10 12:13:50.132124772 +0200
@@ -1,5 +1,5 @@
-#include <afp.h>
-#include <libafpclient.h>
+#include <afpfs-ng/afp.h>
+#include <afpfs-ng/libafpclient.h>
struct libafpclient * libafpclient = NULL;
diff -Naur afpfs-ng-0.8.1/lib/codepage.c afpfs-ng-0.8.1.patch/lib/codepage.c
--- afpfs-ng-0.8.1/lib/codepage.c 2008-02-18 04:36:54.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/codepage.c 2011-09-10 12:13:50.133124786 +0200
@@ -14,8 +14,8 @@
#include <string.h>
#include <stdlib.h>
-#include "afp_protocol.h"
-#include "utils.h"
+#include "afpfs-ng/afp_protocol.h"
+#include "afpfs-ng/utils.h"
#include "unicode.h"
int convert_utf8dec_to_utf8pre(const char *src, int src_len,
diff -Naur afpfs-ng-0.8.1/lib/connect.c afpfs-ng-0.8.1.patch/lib/connect.c
--- afpfs-ng-0.8.1/lib/connect.c 2008-02-18 04:38:59.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/connect.c 2011-09-10 12:13:50.133124786 +0200
@@ -10,13 +10,13 @@
#include <string.h>
#include <sys/socket.h>
-#include "afp.h"
-#include "dsi.h"
-#include "utils.h"
-#include "uams_def.h"
-#include "codepage.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/uams_def.h"
+#include "afpfs-ng/codepage.h"
#include "users.h"
-#include "libafpclient.h"
+#include "afpfs-ng/libafpclient.h"
#include "server.h"
diff -Naur afpfs-ng-0.8.1/lib/did.c afpfs-ng-0.8.1.patch/lib/did.c
--- afpfs-ng-0.8.1/lib/did.c 2008-02-18 04:39:17.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/did.c 2011-09-10 12:13:50.133124786 +0200
@@ -9,8 +9,8 @@
#include <string.h>
#include <stdio.h>
-#include "afp.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/afp_protocol.h"
#undef DID_CACHE_DISABLE
diff -Naur afpfs-ng-0.8.1/lib/dsi.c afpfs-ng-0.8.1.patch/lib/dsi.c
--- afpfs-ng-0.8.1/lib/dsi.c 2008-02-18 04:53:03.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/dsi.c 2011-09-10 12:13:50.134124800 +0200
@@ -19,12 +19,12 @@
#include <signal.h>
#include <iconv.h>
-#include "utils.h"
-#include "dsi.h"
-#include "afp.h"
-#include "uams_def.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/uams_def.h"
#include "dsi_protocol.h"
-#include "libafpclient.h"
+#include "afpfs-ng/libafpclient.h"
#include "afp_internal.h"
#include "afp_replies.h"
diff -Naur afpfs-ng-0.8.1/lib/forklist.c afpfs-ng-0.8.1.patch/lib/forklist.c
--- afpfs-ng-0.8.1/lib/forklist.c 2008-01-17 05:49:16.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/forklist.c 2011-09-10 12:13:50.135124814 +0200
@@ -10,7 +10,7 @@
*/
-#include "afp.h"
+#include "afpfs-ng/afp.h"
#include <stdlib.h>
#include <pthread.h>
diff -Naur afpfs-ng-0.8.1/lib/log.c afpfs-ng-0.8.1.patch/lib/log.c
--- afpfs-ng-0.8.1/lib/log.c 2008-01-30 05:37:58.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/log.c 2011-09-10 12:13:50.135124814 +0200
@@ -3,7 +3,7 @@
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
-#include "libafpclient.h"
+#include "afpfs-ng/libafpclient.h"
void log_for_client(void * priv,
enum loglevels loglevel, int logtype, char *format, ...) {
diff -Naur afpfs-ng-0.8.1/lib/loop.c afpfs-ng-0.8.1.patch/lib/loop.c
--- afpfs-ng-0.8.1/lib/loop.c 2008-02-18 04:40:11.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/loop.c 2011-09-10 12:13:50.135124814 +0200
@@ -16,9 +16,9 @@
#include <sys/time.h>
#include <signal.h>
-#include "afp.h"
-#include "dsi.h"
-#include "utils.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/utils.h"
#define SIGNAL_TO_USE SIGUSR2
diff -Naur afpfs-ng-0.8.1/lib/lowlevel.c afpfs-ng-0.8.1.patch/lib/lowlevel.c
--- afpfs-ng-0.8.1/lib/lowlevel.c 2008-02-20 02:33:17.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/lowlevel.c 2011-09-10 12:13:50.136124828 +0200
@@ -19,10 +19,10 @@
#else
#include <fcntl.h>
#endif
-#include "afp.h"
-#include "afp_protocol.h"
-#include "codepage.h"
-#include "utils.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/afp_protocol.h"
+#include "afpfs-ng/codepage.h"
+#include "afpfs-ng/utils.h"
#include "did.h"
#include "users.h"
diff -Naur afpfs-ng-0.8.1/lib/map_def.c afpfs-ng-0.8.1.patch/lib/map_def.c
--- afpfs-ng-0.8.1/lib/map_def.c 2007-09-07 15:10:59.000000000 +0200
+++ afpfs-ng-0.8.1.patch/lib/map_def.c 2011-09-10 12:13:50.136124828 +0200
@@ -1,6 +1,6 @@
#include <string.h>
-#include "afp.h"
-#include "map_def.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/map_def.h"
static char *afp_map_strings[] = {
"Unknown",
diff -Naur afpfs-ng-0.8.1/lib/meta.c afpfs-ng-0.8.1.patch/lib/meta.c
--- afpfs-ng-0.8.1/lib/meta.c 2008-01-04 04:52:44.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/meta.c 2011-09-10 12:13:50.137124841 +0200
@@ -17,10 +17,10 @@
#include <unistd.h>
#include <sys/time.h>
-#include "afp.h"
-#include "dsi.h"
-#include "afp_protocol.h"
-#include "utils.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp_protocol.h"
+#include "afpfs-ng/utils.h"
int afp_meta_getattr(const char *path, struct stat *stbuf)
diff -Naur afpfs-ng-0.8.1/lib/midlevel.c afpfs-ng-0.8.1.patch/lib/midlevel.c
--- afpfs-ng-0.8.1/lib/midlevel.c 2008-03-08 17:08:18.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/midlevel.c 2011-09-10 12:13:50.160125150 +0200
@@ -10,7 +10,7 @@
*/
-#include "afp.h"
+#include "afpfs-ng/afp.h"
#include <sys/stat.h>
#include <string.h>
@@ -28,9 +28,9 @@
#include "users.h"
#include "did.h"
#include "resource.h"
-#include "utils.h"
-#include "codepage.h"
-#include "midlevel.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/codepage.h"
+#include "afpfs-ng/midlevel.h"
#include "afp_internal.h"
#include "forklist.h"
#include "uams.h"
diff -Naur afpfs-ng-0.8.1/lib/proto_attr.c afpfs-ng-0.8.1.patch/lib/proto_attr.c
--- afpfs-ng-0.8.1/lib/proto_attr.c 2008-01-30 05:37:58.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_attr.c 2011-09-10 12:13:50.168125257 +0200
@@ -7,10 +7,10 @@
#include <string.h>
#include <stdlib.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/afp_protocol.h"
#include "dsi_protocol.h"
/* This is a new command, function 76. There are currently no docs, so this
diff -Naur afpfs-ng-0.8.1/lib/proto_desktop.c afpfs-ng-0.8.1.patch/lib/proto_desktop.c
--- afpfs-ng-0.8.1/lib/proto_desktop.c 2008-02-18 04:44:11.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_desktop.c 2011-09-10 12:13:50.168125257 +0200
@@ -9,10 +9,10 @@
#include <string.h>
#include <stdlib.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/afp_protocol.h"
#include "dsi_protocol.h"
/* closedt, addicon, geticoninfo, addappl, removeappl */
diff -Naur afpfs-ng-0.8.1/lib/proto_directory.c afpfs-ng-0.8.1.patch/lib/proto_directory.c
--- afpfs-ng-0.8.1/lib/proto_directory.c 2008-02-19 03:39:29.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_directory.c 2011-09-10 12:13:50.168125257 +0200
@@ -9,10 +9,10 @@
#include <string.h>
#include <stdlib.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/afp_protocol.h"
#include "dsi_protocol.h"
#include "afp_replies.h"
diff -Naur afpfs-ng-0.8.1/lib/proto_files.c afpfs-ng-0.8.1.patch/lib/proto_files.c
--- afpfs-ng-0.8.1/lib/proto_files.c 2008-02-18 04:46:18.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_files.c 2011-09-10 12:13:50.169125270 +0200
@@ -8,11 +8,11 @@
#include <stdlib.h>
#include <string.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "dsi_protocol.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/afp_protocol.h"
#include "afp_internal.h"
/* afp_setfileparms, afp_setdirparms and afpsetfiledirparms are all remarkably
diff -Naur afpfs-ng-0.8.1/lib/proto_fork.c afpfs-ng-0.8.1.patch/lib/proto_fork.c
--- afpfs-ng-0.8.1/lib/proto_fork.c 2008-01-30 05:37:58.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_fork.c 2011-09-10 12:13:50.169125270 +0200
@@ -9,11 +9,11 @@
#include <stdlib.h>
#include <string.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "dsi_protocol.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/afp_protocol.h"
int afp_setforkparms(struct afp_volume * volume,
unsigned short forkid, unsigned short bitmap, unsigned long len)
diff -Naur afpfs-ng-0.8.1/lib/proto_login.c afpfs-ng-0.8.1.patch/lib/proto_login.c
--- afpfs-ng-0.8.1/lib/proto_login.c 2008-01-30 05:37:59.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_login.c 2011-09-10 12:13:50.169125270 +0200
@@ -10,10 +10,10 @@
#include <stdlib.h>
#include <string.h>
-#include "dsi.h"
+#include "afpfs-ng/dsi.h"
#include "dsi_protocol.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "afp_internal.h"
diff -Naur afpfs-ng-0.8.1/lib/proto_map.c afpfs-ng-0.8.1.patch/lib/proto_map.c
--- afpfs-ng-0.8.1/lib/proto_map.c 2008-01-30 05:37:59.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_map.c 2011-09-10 12:13:50.170125283 +0200
@@ -9,11 +9,11 @@
#include <stdlib.h>
#include <string.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "dsi_protocol.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/afp_protocol.h"
/* This is used to pass the return values back from afp_getuserinfo_reply() */
struct uidgid {
diff -Naur afpfs-ng-0.8.1/lib/proto_replyblock.c afpfs-ng-0.8.1.patch/lib/proto_replyblock.c
--- afpfs-ng-0.8.1/lib/proto_replyblock.c 2008-02-18 04:46:19.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_replyblock.c 2011-09-10 12:13:50.170125283 +0200
@@ -6,9 +6,9 @@
*/
#include <string.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "afp_internal.h"
diff -Naur afpfs-ng-0.8.1/lib/proto_server.c afpfs-ng-0.8.1.patch/lib/proto_server.c
--- afpfs-ng-0.8.1/lib/proto_server.c 2008-02-19 02:56:21.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_server.c 2011-09-10 12:13:50.170125283 +0200
@@ -7,12 +7,12 @@
*/
#include <stdlib.h>
#include <string.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "dsi_protocol.h"
-#include "afp_protocol.h"
-#include "codepage.h"
+#include "afpfs-ng/afp_protocol.h"
+#include "afpfs-ng/codepage.h"
#include "afp_internal.h"
int afp_getsrvrparms(struct afp_server *server)
diff -Naur afpfs-ng-0.8.1/lib/proto_session.c afpfs-ng-0.8.1.patch/lib/proto_session.c
--- afpfs-ng-0.8.1/lib/proto_session.c 2008-02-18 04:46:19.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_session.c 2011-09-10 12:13:50.170125283 +0200
@@ -8,10 +8,10 @@
*/
#include <stdlib.h>
#include <string.h>
-#include "dsi.h"
+#include "afpfs-ng/dsi.h"
#include "dsi_protocol.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
int afp_getsessiontoken(struct afp_server * server, int type,
unsigned int timestamp, struct afp_token *outgoing_token,
diff -Naur afpfs-ng-0.8.1/lib/proto_volume.c afpfs-ng-0.8.1.patch/lib/proto_volume.c
--- afpfs-ng-0.8.1/lib/proto_volume.c 2008-02-18 04:47:48.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/proto_volume.c 2011-09-10 12:13:50.171125296 +0200
@@ -8,13 +8,13 @@
#include <string.h>
#include <stdlib.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "dsi_protocol.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/afp_protocol.h"
#include "afp_internal.h"
-#include "codepage.h"
+#include "afpfs-ng/codepage.h"
static int parse_volbitmap_reply(struct afp_server * server,
struct afp_volume * tmpvol,
diff -Naur afpfs-ng-0.8.1/lib/resource.c afpfs-ng-0.8.1.patch/lib/resource.c
--- afpfs-ng-0.8.1/lib/resource.c 2008-02-18 04:46:56.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/resource.c 2011-09-10 12:13:50.171125296 +0200
@@ -3,11 +3,11 @@
#include <string.h>
#include <errno.h>
#include <fcntl.h>
-#include "afp.h"
+#include "afpfs-ng/afp.h"
#include "resource.h"
#include "lowlevel.h"
#include "did.h"
-#include "midlevel.h"
+#include "afpfs-ng/midlevel.h"
#define appledouble ".AppleDouble"
#define finderinfo_string ".finderinfo"
diff -Naur afpfs-ng-0.8.1/lib/server.c afpfs-ng-0.8.1.patch/lib/server.c
--- afpfs-ng-0.8.1/lib/server.c 2008-02-19 02:56:21.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/server.c 2011-09-10 12:13:50.172125310 +0200
@@ -8,15 +8,15 @@
#include <string.h>
#include <time.h>
-#include "afp.h"
-#include "dsi.h"
-#include "utils.h"
-#include "uams_def.h"
-#include "codepage.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/uams_def.h"
+#include "afpfs-ng/codepage.h"
#include "users.h"
-#include "libafpclient.h"
+#include "afpfs-ng/libafpclient.h"
#include "afp_internal.h"
-#include "dsi.h"
+#include "afpfs-ng/dsi.h"
struct afp_server * afp_server_complete_connection(
diff -Naur afpfs-ng-0.8.1/lib/status.c afpfs-ng-0.8.1.patch/lib/status.c
--- afpfs-ng-0.8.1/lib/status.c 2008-03-08 17:08:38.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/status.c 2011-09-10 12:13:50.172125310 +0200
@@ -1,8 +1,8 @@
#include <string.h>
#include <stdio.h>
-#include "map_def.h"
-#include "dsi.h"
-#include "afp.h"
+#include "afpfs-ng/map_def.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
int afp_status_header(char * text, int * len)
{
diff -Naur afpfs-ng-0.8.1/lib/uams.c afpfs-ng-0.8.1.patch/lib/uams.c
--- afpfs-ng-0.8.1/lib/uams.c 2008-01-04 04:52:44.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/uams.c 2011-09-10 12:13:50.173125324 +0200
@@ -8,10 +8,10 @@
#include <string.h>
#include <stdlib.h>
-#include "dsi.h"
-#include "afp.h"
-#include "utils.h"
-#include "uams_def.h"
+#include "afpfs-ng/dsi.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
+#include "afpfs-ng/uams_def.h"
#include "config.h"
#ifdef HAVE_LIBGCRYPT
diff -Naur afpfs-ng-0.8.1/lib/users.c afpfs-ng-0.8.1.patch/lib/users.c
--- afpfs-ng-0.8.1/lib/users.c 2008-02-18 04:48:56.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/users.c 2011-09-10 12:13:50.174125338 +0200
@@ -3,8 +3,8 @@
#include <grp.h>
#include <string.h>
-#include "afp.h"
-#include "map_def.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/map_def.h"
/* How mapping works
*
diff -Naur afpfs-ng-0.8.1/lib/utils.c afpfs-ng-0.8.1.patch/lib/utils.c
--- afpfs-ng-0.8.1/lib/utils.c 2008-02-18 04:53:37.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/utils.c 2011-09-10 12:13:50.174125338 +0200
@@ -8,10 +8,10 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
-#include "afp.h"
-#include "utils.h"
+#include "afpfs-ng/afp.h"
+#include "afpfs-ng/utils.h"
#include "afp_internal.h"
-#include "afp_protocol.h"
+#include "afpfs-ng/afp_protocol.h"
struct afp_path_header_long {
unsigned char type;
diff -Naur afpfs-ng-0.8.1/Makefile.am afpfs-ng-0.8.1.patch/Makefile.am
--- afpfs-ng-0.8.1/Makefile.am 2008-02-18 04:24:14.000000000 +0100
+++ afpfs-ng-0.8.1.patch/Makefile.am 2011-09-10 12:13:50.176125365 +0200
@@ -1,5 +1,5 @@
if HAVE_LIBFUSE
-SUBDIRS = lib fuse cmdline docs
+SUBDIRS = lib fuse cmdline include docs
else
-SUBDIRS = lib cmdline docs
+SUBDIRS = lib cmdline include docs
endif