diff options
author | Memphiz <memphis@machzwo.de> | 2015-03-06 11:50:06 +0100 |
---|---|---|
committer | Memphiz <memphis@machzwo.de> | 2015-03-08 15:22:38 +0100 |
commit | e19e4b2466d8c1c92dd38d8b728522131a4e16dc (patch) | |
tree | 6c6ab5bfa2d8dbfb689fd40ce83dcc07967483b7 /lib | |
parent | ce8f476ed358db488b03afdb62d1cc4924c27a30 (diff) |
[filesystem/afp] - remove AFP implementation
Diffstat (limited to 'lib')
-rw-r--r-- | lib/afpfs-ng/01-gcrypt.patch | 26 | ||||
-rw-r--r-- | lib/afpfs-ng/02-pointer.patch | 280 | ||||
-rw-r--r-- | lib/afpfs-ng/04-boxee1.patch | 25 | ||||
-rw-r--r-- | lib/afpfs-ng/05-boxee2.patch | 89 | ||||
-rw-r--r-- | lib/afpfs-ng/06-boxee3.patch | 141 | ||||
-rw-r--r-- | lib/afpfs-ng/07-boxee4.patch | 27 | ||||
-rw-r--r-- | lib/afpfs-ng/08-boxee5.patch | 11 | ||||
-rw-r--r-- | lib/afpfs-ng/10-fix-errno.patch | 23 | ||||
-rw-r--r-- | lib/afpfs-ng/11-fix-stat.patch | 11 | ||||
-rw-r--r-- | lib/afpfs-ng/12-fix-even-more-pointers.patch | 83 | ||||
-rw-r--r-- | lib/afpfs-ng/Makefile | 68 | ||||
-rw-r--r-- | lib/afpfs-ng/fix_afpfs-ng_includes.patch | 3082 |
12 files changed, 0 insertions, 3866 deletions
diff --git a/lib/afpfs-ng/01-gcrypt.patch b/lib/afpfs-ng/01-gcrypt.patch deleted file mode 100644 index 7bcace2812..0000000000 --- a/lib/afpfs-ng/01-gcrypt.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -ru afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1+iPhone/configure.ac ---- afpfs-ng-0.8.1/configure.ac 2008-03-08 16:23:12.000000000 +0000 -+++ afpfs-ng-0.8.1+iPhone/configure.ac 2010-10-24 05:26:15.000000000 +0000 -@@ -50,21 +50,6 @@ - case $host in - *-*-darwin*) - AC_MSG_CHECKING([for correct gcrypt version]) -- AC_RUN_IFELSE( -- [AC_LANG_PROGRAM([ -- #include <gcrypt.h> -- #include <stdio.h>],[ -- char*p= GCRYPT_VERSION; -- unsigned int vers; -- vers=atoi(p)*10000; -- p=strchr(p,'.')+1; -- vers+=atoi(p)*100; -- p=strchr(p,'.')+1; -- vers+=atoi(p); -- if (vers<10400) return 1; -- ])], -- [AC_MSG_RESULT([yes])], -- [AC_MSG_ERROR([version is < 1.4.0])]) - AM_CONDITIONAL(HAVE_LIBGCRYPT, true) - AC_DEFINE([HAVE_LIBGCRYPT], [1] ) - ;; - diff --git a/lib/afpfs-ng/02-pointer.patch b/lib/afpfs-ng/02-pointer.patch deleted file mode 100644 index 80507b5725..0000000000 --- a/lib/afpfs-ng/02-pointer.patch +++ /dev/null @@ -1,280 +0,0 @@ -diff -up afpfs-ng-0.8.1/cmdline/getstatus.c.pointer afpfs-ng-0.8.1/cmdline/getstatus.c ---- afpfs-ng-0.8.1/cmdline/getstatus.c.pointer 2011-06-14 17:06:35.000000000 +0200 -+++ afpfs-ng-0.8.1/cmdline/getstatus.c 2011-06-14 17:07:25.000000000 +0200 -@@ -1,4 +1,5 @@ - #include <stdio.h> -+#include <stdlib.h> - #include <string.h> - #include <pthread.h> - -diff -up afpfs-ng-0.8.1/fuse/client.c.pointer afpfs-ng-0.8.1/fuse/client.c ---- afpfs-ng-0.8.1/fuse/client.c.pointer 2008-03-08 03:44:16.000000000 +0100 -+++ afpfs-ng-0.8.1/fuse/client.c 2011-06-14 17:02:15.000000000 +0200 -@@ -61,8 +61,9 @@ static int start_afpfsd(void) - snprintf(filename, PATH_MAX, - "/usr/local/bin/%s",AFPFSD_FILENAME); - if (access(filename,X_OK)) { -- snprintf(filename, "/usr/bin/%s", -+ snprintf(filename, sizeof(filename), "/usr/bin/%s", - AFPFSD_FILENAME); -+ filename[sizeof(filename) - 1] = 0; - if (access(filename,X_OK)) { - printf("Could not find server (%s)\n", - filename); -diff -up afpfs-ng-0.8.1/fuse/fuse_int.c.pointer afpfs-ng-0.8.1/fuse/fuse_int.c ---- afpfs-ng-0.8.1/fuse/fuse_int.c.pointer 2008-03-02 06:06:24.000000000 +0100 -+++ afpfs-ng-0.8.1/fuse/fuse_int.c 2011-06-14 17:02:15.000000000 +0200 -@@ -197,7 +197,7 @@ static int fuse_open(const char *path, s - ret = ml_open(volume,path,flags,&fp); - - if (ret==0) -- fi->fh=(void *) fp; -+ fi->fh=(unsigned long) fp; - - return ret; - } -diff -up afpfs-ng-0.8.1/include/afpfs-ng/afp.h.pointer afpfs-ng-0.8.1/include/afp.h ---- afpfs-ng-0.8.1/include/afpfs-ng/afp.h.pointer 2008-03-08 17:08:18.000000000 +0100 -+++ afpfs-ng-0.8.1/include/afpfs-ng/afp.h 2011-06-14 17:02:15.000000000 +0200 -@@ -370,7 +370,7 @@ int afp_unmount_all_volumes(struct afp_s - - int afp_opendt(struct afp_volume *volume, unsigned short * refnum); - --int afp_closedt(struct afp_server * server, 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); -diff -up afpfs-ng-0.8.1/include/afpfs-gn/utils.h.pointer afpfs-ng-0.8.1/include/utils.h ---- afpfs-ng-0.8.1/include/afpfs-ng/utils.h.pointer 2008-02-18 04:33:58.000000000 +0100 -+++ afpfs-ng-0.8.1/include/afpfs-ng/utils.h 2011-06-14 17:02:15.000000000 +0200 -@@ -8,8 +8,8 @@ - #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 hton64(x) ((u_int64_t) (htonl((((unsigned long long)(x)) >> 32) & 0xffffffffLL)) | \ -+ (u_int64_t) ((htonl((unsigned long long)(x)) & 0xffffffffLL) << 32)) - #define ntoh64(x) (hton64(x)) - #endif /* BYTE_ORDER == BIG_ENDIAN */ - -diff -up afpfs-ng-0.8.1/lib/afp_url.c.pointer afpfs-ng-0.8.1/lib/afp_url.c ---- afpfs-ng-0.8.1/lib/afp_url.c.pointer 2008-03-04 21:16:49.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/afp_url.c 2011-06-14 17:02:15.000000000 +0200 -@@ -33,7 +33,7 @@ static int check_port(char * port) - static int check_uamname(const char * uam) - { - char * p; -- for (p=uam;*p;p++) { -+ for (p=(char *)uam;*p;p++) { - if (*p==' ') continue; - if ((*p<'A') || (*p>'z')) return -1; - } -@@ -188,7 +188,7 @@ int afp_parse_url(struct afp_url * url, - return -1; - - } -- if (p==NULL) p=toparse; -+ if (p==NULL) p=(char *)toparse; - - /* Now split on the first / */ - if (sscanf(p,"%[^/]/%[^$]", -diff -up afpfs-ng-0.8.1/lib/did.c.pointer afpfs-ng-0.8.1/lib/did.c ---- afpfs-ng-0.8.1/lib/did.c.pointer 2008-02-18 04:39:17.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/did.c 2011-06-14 17:02:15.000000000 +0200 -@@ -226,7 +226,7 @@ int get_dirid(struct afp_volume * volume - - - /* Go to the end of last known entry */ -- p=path+(p-copy); -+ p=(char *)path+(p-copy); - p2=p; - - while ((p=strchr(p+1,'/'))) { -diff -up afpfs-ng-0.8.1/lib/dsi.c.pointer afpfs-ng-0.8.1/lib/dsi.c ---- afpfs-ng-0.8.1/lib/dsi.c.pointer 2008-02-18 04:53:03.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/dsi.c 2011-06-14 17:02:15.000000000 +0200 -@@ -474,7 +474,7 @@ void dsi_getstatus_reply(struct afp_serv - } - server->flags=ntohs(reply1->flags); - -- p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1)); -+ p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1)); - p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1; - - /* Now work our way through the variable bits */ -@@ -757,7 +757,7 @@ gotenough: - printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read); - #endif - ret = read(server->fd, (void *) -- (((unsigned int) server->incoming_buffer)+server->data_read), -+ (((unsigned long) server->incoming_buffer)+server->data_read), - amount_to_read); - if (ret<0) return -1; - if (ret==0) { -diff -up afpfs-ng-0.8.1/lib/loop.c.pointer afpfs-ng-0.8.1/lib/loop.c ---- afpfs-ng-0.8.1/lib/loop.c.pointer 2008-02-18 04:40:11.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/loop.c 2011-06-14 17:02:15.000000000 +0200 -@@ -25,7 +25,7 @@ - static unsigned char exit_program=0; - - static pthread_t ending_thread; --static pthread_t main_thread = NULL; -+static pthread_t main_thread = (pthread_t)NULL; - - static int loop_started=0; - static pthread_cond_t loop_started_condition; -diff -up afpfs-ng-0.8.1/lib/lowlevel.c.pointer afpfs-ng-0.8.1/lib/lowlevel.c ---- afpfs-ng-0.8.1/lib/lowlevel.c.pointer 2008-02-20 02:33:17.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/lowlevel.c 2011-06-14 17:02:15.000000000 +0200 -@@ -582,7 +582,7 @@ int ll_getattr(struct afp_volume * volum - if (volume->server->using_version->av_number>=30) - stbuf->st_mode |= fp.unixprivs.permissions; - else -- set_nonunix_perms(stbuf,&fp); -+ set_nonunix_perms(&stbuf->st_mode,&fp); - - stbuf->st_uid=fp.unixprivs.uid; - stbuf->st_gid=fp.unixprivs.gid; -diff -up afpfs-ng-0.8.1/lib/midlevel.c.pointer afpfs-ng-0.8.1/lib/midlevel.c ---- afpfs-ng-0.8.1/lib/midlevel.c.pointer 2008-03-08 17:08:18.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/midlevel.c 2011-06-14 17:02:15.000000000 +0200 -@@ -713,7 +713,7 @@ int ml_write(struct afp_volume * volume, - { - - int ret,err=0; -- int totalwritten = 0; -+ size_t totalwritten = 0; - uint64_t sizetowrite, ignored; - unsigned char flags = 0; - unsigned int max_packet_size=volume->server->tx_quantum; -diff -up afpfs-ng-0.8.1/lib/proto_attr.c.pointer afpfs-ng-0.8.1/lib/proto_attr.c ---- afpfs-ng-0.8.1/lib/proto_attr.c.pointer 2008-01-30 05:37:58.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/proto_attr.c 2011-06-14 17:02:15.000000000 +0200 -@@ -166,7 +166,7 @@ int afp_getextattr(struct afp_volume * v - copy_path(server,p,pathname,strlen(pathname)); - unixpath_to_afppath(server,p); - p2=p+sizeof_path_header(server)+strlen(pathname); -- if (((unsigned int ) p2) & 0x1) p2++; -+ if (((unsigned long) p2) & 0x1) p2++; - req2=(void *) p2; - - req2->len=htons(namelen); -diff -up afpfs-ng-0.8.1/lib/proto_desktop.c.pointer afpfs-ng-0.8.1/lib/proto_desktop.c ---- afpfs-ng-0.8.1/lib/proto_desktop.c.pointer 2008-02-18 04:44:11.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/proto_desktop.c 2011-06-14 17:02:15.000000000 +0200 -@@ -168,7 +168,7 @@ int afp_getcomment_reply(struct afp_serv - return 0; - } - --int afp_closedt(struct afp_server * server, unsigned short * refnum) -+int afp_closedt(struct afp_server * server, unsigned short refnum) - { - struct { - struct dsi_header dsi_header __attribute__((__packed__)); -diff -up afpfs-ng-0.8.1/lib/proto_directory.c.pointer afpfs-ng-0.8.1/lib/proto_directory.c ---- afpfs-ng-0.8.1/lib/proto_directory.c.pointer 2008-02-19 03:39:29.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/proto_directory.c 2011-06-14 17:02:15.000000000 +0200 -@@ -248,6 +248,7 @@ int afp_enumerate_reply(struct afp_serve - - return 0; - } -+ - int afp_enumerateext2_reply(struct afp_server *server, char * buf, unsigned int size, void * other) - { - -@@ -266,8 +267,7 @@ int afp_enumerateext2_reply(struct afp_s - char * p = buf + sizeof(*reply); - int i; - char *max=buf+size; -- struct afp_file_info * filebase = NULL, *filecur=NULL, *new_file=NULL; -- void ** x = other; -+ struct afp_file_info * filebase = NULL, *filecur = NULL, *new_file = NULL, **x = (struct afp_file_info **) other; - - if (reply->dsi_header.return_code.error_code) { - return reply->dsi_header.return_code.error_code; -diff -up afpfs-ng-0.8.1/lib/proto_map.c.pointer afpfs-ng-0.8.1/lib/proto_map.c ---- afpfs-ng-0.8.1/lib/proto_map.c.pointer 2008-01-30 05:37:59.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/proto_map.c 2011-06-14 17:02:15.000000000 +0200 -@@ -122,7 +122,7 @@ int afp_mapid_reply(struct afp_server *s - - if (reply->header.return_code.error_code!=kFPNoErr) return -1; - -- copy_from_pascal_two(name,&reply->name,255); -+ copy_from_pascal_two(name,reply->name,255); - - return 0; - } -diff -up afpfs-ng-0.8.1/lib/proto_session.c.pointer afpfs-ng-0.8.1/lib/proto_session.c ---- afpfs-ng-0.8.1/lib/proto_session.c.pointer 2008-02-18 04:46:19.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/proto_session.c 2011-06-14 17:02:15.000000000 +0200 -@@ -39,7 +39,7 @@ int afp_getsessiontoken(struct afp_serve - switch (type) { - case kLoginWithTimeAndID: - case kReconnWithTimeAndID: { -- uint32_t *p = (void *) (((unsigned int) request)+ -+ uint32_t *p = (void *) (((unsigned long) request)+ - sizeof(*request)); - - offset=sizeof(timestamp); -@@ -63,7 +63,7 @@ int afp_getsessiontoken(struct afp_serve - goto error; - } - -- data=(void *) (((unsigned int) request)+sizeof(*request)+offset); -+ data=(void *) (((unsigned long) request)+sizeof(*request)+offset); - request->idlength=htonl(datalen); - request->pad=0; - request->type=htons(type); -@@ -127,7 +127,7 @@ int afp_disconnectoldsession(struct afp_ - if ((request=malloc(sizeof(*request) + AFP_TOKEN_MAX_LEN))==NULL) - return -1; - -- token_data = request + sizeof(*request); -+ token_data = (char *)request + sizeof(*request); - - request->type=htons(type); - -diff -up afpfs-ng-0.8.1/lib/uams.c.pointer afpfs-ng-0.8.1/lib/uams.c ---- afpfs-ng-0.8.1/lib/uams.c.pointer 2008-01-04 04:52:44.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/uams.c 2011-06-14 17:02:15.000000000 +0200 -@@ -180,7 +180,7 @@ static int cleartxt_login(struct afp_ser - goto cleartxt_fail; - - p += copy_to_pascal(p, username) + 1; -- if ((int)p & 0x1) -+ if ((long)p & 0x1) - len--; - else - p++; -@@ -230,7 +230,7 @@ static int cleartxt_passwd(struct afp_se - goto cleartxt_fail; - - p += copy_to_pascal(p, username) + 1; -- if ((int)p & 0x1) -+ if ((long)p & 0x1) - len--; - else - p++; -@@ -580,7 +580,7 @@ static int dhx_login(struct afp_server * - if (ai == NULL) - goto dhx_noctx_fail; - d += copy_to_pascal(ai, username) + 1; -- if (((int)d) % 2) -+ if (((long)d) % 2) - d++; - else - ai_len--; -diff -up afpfs-ng-0.8.1/lib/utils.c.pointer afpfs-ng-0.8.1/lib/utils.c ---- afpfs-ng-0.8.1/lib/utils.c.pointer 2008-02-18 04:53:37.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/utils.c 2011-06-14 17:02:15.000000000 +0200 -@@ -196,7 +196,7 @@ int invalid_filename(struct afp_server * - maxlen=255; - - -- p=filename+1; -+ p=(char *)filename+1; - while ((q=strchr(p,'/'))) { - if (q>p+maxlen) - return 1; diff --git a/lib/afpfs-ng/04-boxee1.patch b/lib/afpfs-ng/04-boxee1.patch deleted file mode 100644 index 9f3c20f35e..0000000000 --- a/lib/afpfs-ng/04-boxee1.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 2008-02-18 04:33:24.000000000 +0100 -+++ afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 2011-08-26 21:33:33.000000000 +0200 -@@ -6,13 +6,15 @@ - - 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; -+ unsigned short requestid; -+ unsigned char subcommand; -+ void * other; -+ int wait; -+ int done_waiting; -+ pthread_cond_t waiting_cond; -+ pthread_mutex_t waiting_mutex; -+ struct dsi_request * next; -+ int return_code; - }; - - int dsi_receive(struct afp_server * server, void * data, int size); diff --git a/lib/afpfs-ng/05-boxee2.patch b/lib/afpfs-ng/05-boxee2.patch deleted file mode 100644 index 50250bc0af..0000000000 --- a/lib/afpfs-ng/05-boxee2.patch +++ /dev/null @@ -1,89 +0,0 @@ ---- afpfs-ng-0.8.1/lib/afp.c 2008-03-08 03:44:16.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/afp.c 2011-08-26 21:33:33.000000000 +0200 -@@ -68,7 +68,7 @@ - afp_getsessiontoken_reply,afp_blank_reply, NULL, NULL, - afp_enumerateext2_reply, NULL, NULL, NULL, /*64 - 71 */ - afp_listextattrs_reply, NULL, NULL, NULL, -- afp_blank_reply, NULL, NULL, NULL, /*72 - 79 */ -+ afp_blank_reply, NULL, afp_blank_reply, afp_blank_reply, /*72 - 79 */ - - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, -@@ -320,8 +320,16 @@ - - struct dsi_request * p; - struct afp_server *s2; -+ -+ -+ if (s==NULL) -+ goto out; -+ - for (p=s->command_requests;p;p=p->next) { -- pthread_cond_signal(&p->condition_cond); -+ pthread_mutex_lock(&p->waiting_mutex); -+ p->done_waiting=1; -+ pthread_cond_signal(&p->waiting_cond); -+ pthread_mutex_unlock(&p->waiting_mutex); - } - - if (s==server_base) { -@@ -354,7 +362,7 @@ - s->exit_flag = 0; - s->path_encoding=kFPUTF8Name; /* This is a default */ - s->next=NULL; -- s->bufsize=2048; -+ s->bufsize=4096; - s->incoming_buffer=malloc(s->bufsize); - - s->attention_quantum=AFP_DEFAULT_ATTENTION_QUANTUM; -@@ -524,13 +532,14 @@ - kFPVolCreateDateBit|kFPVolIDBit | - kFPVolNameBit; - char new_encoding; -+ int ret; - - if (server->using_version->av_number>=30) - bitmap|= kFPVolNameBit|kFPVolBlockSizeBit; - -- switch (afp_volopen(volume,bitmap, -- (strlen(volume->volpassword)>0) ? volume->volpassword : NULL)) -- { -+ ret = afp_volopen(volume,bitmap, -+ (strlen(volume->volpassword)>0) ? volume->volpassword : NULL); -+ switch(ret){ - case kFPAccessDenied: - *l+=snprintf(mesg,max-*l, - "Incorrect volume password\n"); -@@ -544,6 +553,10 @@ - *l+=snprintf(mesg,max-*l, - "Could not open volume\n"); - goto error; -+ case ETIMEDOUT: -+ *l+=snprintf(mesg,max-*l, -+ "Timed out waiting to open volume\n"); -+ goto error; - } - - /* It is said that if a volume's encoding will be the same -@@ -641,7 +654,6 @@ - add_server(server); - - add_fd_and_signal(server->fd); -- - if (!full) { - return 0; - } -@@ -649,10 +661,13 @@ - /* Get the status, and calculate the transmit time. We use this to - * calculate our rx quantum. */ - gettimeofday(&t1,NULL); -+ - if ((error=dsi_getstatus(server))!=0) - goto error; - gettimeofday(&t2,NULL); - -+ afp_server_identify(server); -+ - if ((t2.tv_sec - t1.tv_sec) > 0) - server->tx_delay= (t2.tv_sec - t1.tv_sec) * 1000; - else diff --git a/lib/afpfs-ng/06-boxee3.patch b/lib/afpfs-ng/06-boxee3.patch deleted file mode 100644 index 4b7c916da3..0000000000 --- a/lib/afpfs-ng/06-boxee3.patch +++ /dev/null @@ -1,141 +0,0 @@ ---- afpfs-ng-0.8.1/lib/dsi.c 2011-08-26 17:27:16.000000000 +0200 -+++ afpfs-ng-0.8.1/lib/dsi.c 2011-08-26 21:33:33.000000000 +0200 -@@ -64,7 +64,7 @@ - rx.size=0; - dsi_setup_header(server,&header,DSI_DSIGetStatus); - /* We're intentionally ignoring the results */ -- ret=dsi_send(server,(char *) &header,sizeof(struct dsi_header),20, -+ ret=dsi_send(server,(char *) &header,sizeof(struct dsi_header),60, - 0,(void *) &rx); - - free(rx.data); -@@ -197,6 +197,7 @@ - new_request->other=other; - new_request->wait=wait; - new_request->next=NULL; -+ new_request->done_waiting=0; - - pthread_mutex_lock(&server->request_queue_mutex); - if (server->command_requests==NULL) { -@@ -208,7 +209,8 @@ - server->stats.requests_pending++; - pthread_mutex_unlock(&server->request_queue_mutex); - -- pthread_cond_init(&new_request->condition_cond,NULL); -+ pthread_cond_init(&new_request->waiting_cond,NULL); -+ pthread_mutex_init(&new_request->waiting_mutex,NULL); - - if (server->connect_state==SERVER_STATE_DISCONNECTED) { - char mesg[1024]; -@@ -240,16 +242,12 @@ - server->stats.tx_bytes+=size; - pthread_mutex_unlock(&server->send_mutex); - -- int tmpwait=new_request->wait; - #ifdef DEBUG_DSI - printf("=== Waiting for response for %d %s\n", - new_request->requestid, - afp_get_command_name(new_request->subcommand)); - #endif -- if (tmpwait<0) { -- -- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -- pthread_mutex_lock(&mutex); -+ if (new_request->wait<0) { - - /* Wait forever */ - #ifdef DEBUG_DSI -@@ -258,14 +256,17 @@ - afp_get_command_name(new_request->subcommand)); - #endif - -- rc=pthread_cond_wait( -- &new_request->condition_cond, -- &mutex ); -- pthread_mutex_unlock(&mutex); -- -- } else if (tmpwait>0) { -- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -- pthread_mutex_lock(&mutex); -+ pthread_mutex_lock(&new_request->waiting_mutex); -+ -+ if (new_request->done_waiting==0) -+ rc=pthread_cond_wait( -+ &new_request->waiting_cond, -+ &new_request->waiting_mutex ); -+ -+ pthread_mutex_unlock(&new_request->waiting_mutex); -+ -+ } else if (new_request->wait>0) { -+ /* wait for new_request->wait seconds */ - - #ifdef DEBUG_DSI - printf("=== Waiting for %d %s, for %ds\n", -@@ -283,13 +284,15 @@ - printf("=== Changing my mind, no longer waiting for %d\n", - new_request->requestid); - #endif -- pthread_mutex_unlock(&mutex); - goto skip; - } -- rc=pthread_cond_timedwait( -- &new_request->condition_cond, -- &mutex,&ts); -- pthread_mutex_unlock(&mutex); -+ pthread_mutex_lock(&new_request->waiting_mutex); -+ if (new_request->done_waiting==0) -+ rc=pthread_cond_timedwait( -+ &new_request->waiting_cond, -+ &new_request->waiting_mutex,&ts); -+ pthread_mutex_unlock(&new_request->waiting_mutex); -+ - if (rc==ETIMEDOUT) { - /* FIXME: should handle this case properly */ - #ifdef DEBUG_DSI -@@ -299,6 +302,7 @@ - goto out; - } - } else { -+ /* Don't wait */ - #ifdef DEBUG_DSI - printf("=== Skipping wait altogether for %d\n",new_request->requestid); - #endif -@@ -474,7 +478,7 @@ - } - server->flags=ntohs(reply1->flags); - -- p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1)); -+ p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1)); - p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1; - - /* Now work our way through the variable bits */ -@@ -577,6 +581,7 @@ - unsigned char mins=0; - unsigned char checkmessage=0; - -+ memset(mesg,0,AFP_LOGINMESG_LEN); - - /* The logic here's undocumented. If we get an attention packet and - there's no flag, then go check the message. Also, go check the -@@ -757,7 +762,7 @@ - printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read); - #endif - ret = read(server->fd, (void *) -- (((unsigned long) server->incoming_buffer)+server->data_read), -+ (((unsigned int) server->incoming_buffer)+server->data_read), - amount_to_read); - if (ret<0) return -1; - if (ret==0) { -@@ -862,8 +867,11 @@ - #ifdef DEBUG_DSI - printf("<<< Signalling %d, returning %d or %d\n",request->requestid,request->return_code,rc); - #endif -+ pthread_mutex_lock(&request->waiting_mutex); - request->wait=0; -- pthread_cond_signal(&request->condition_cond); -+ request->done_waiting=1; -+ pthread_cond_signal(&request->waiting_cond); -+ pthread_mutex_unlock(&request->waiting_mutex); - } else { - dsi_remove_from_request_queue(server,request); - } diff --git a/lib/afpfs-ng/07-boxee4.patch b/lib/afpfs-ng/07-boxee4.patch deleted file mode 100644 index 3e09f40dc5..0000000000 --- a/lib/afpfs-ng/07-boxee4.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- afpfs-ng-0.8.1/lib/identify.c 1970-01-01 01:00:00.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/identify.c 2011-08-26 21:33:33.000000000 +0200 -@@ -0,0 +1,24 @@ -+#include <string.h> -+#include <afpfs-ng/afp.h> -+ -+ -+/* -+ * afp_server_identify() -+ * -+ * Identifies a server -+ * -+ * Right now, this only does identification using the machine_type -+ * given in getsrvrinfo, but this could later use mDNS to get -+ * more details. -+ */ -+void afp_server_identify(struct afp_server * s) -+{ -+ if (strcmp(s->machine_type,"Netatalk")==0) -+ s->server_type=AFPFS_SERVER_TYPE_NETATALK; -+ else if (strcmp(s->machine_type,"AirPort")==0) -+ s->server_type=AFPFS_SERVER_TYPE_AIRPORT; -+ else if (strcmp(s->machine_type,"Macintosh")==0) -+ s->server_type=AFPFS_SERVER_TYPE_MACINTOSH; -+ else -+ s->server_type=AFPFS_SERVER_TYPE_UNKNOWN; -+} diff --git a/lib/afpfs-ng/08-boxee5.patch b/lib/afpfs-ng/08-boxee5.patch deleted file mode 100644 index 253fb05c97..0000000000 --- a/lib/afpfs-ng/08-boxee5.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- afpfs-ng-0.8.1/lib/Makefile.am 2008-02-18 04:34:32.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/Makefile.am 2011-08-26 21:33:33.000000000 +0200 -@@ -4,7 +4,7 @@ - - lib_LTLIBRARIES = libafpclient.la - --libafpclient_la_SOURCES = afp.c codepage.c did.c dsi.c map_def.c uams.c uams_def.c unicode.c users.c utils.c resource.c log.c client.c server.c connect.c loop.c midlevel.c proto_attr.c proto_desktop.c proto_directory.c proto_files.c proto_fork.c proto_login.c proto_map.c proto_replyblock.c proto_server.c proto_volume.c proto_session.c afp_url.c status.c forklist.c debug.c lowlevel.c -+libafpclient_la_SOURCES = afp.c codepage.c did.c dsi.c map_def.c uams.c uams_def.c unicode.c users.c utils.c resource.c log.c client.c server.c connect.c loop.c midlevel.c proto_attr.c proto_desktop.c proto_directory.c proto_files.c proto_fork.c proto_login.c proto_map.c proto_replyblock.c proto_server.c proto_volume.c proto_session.c afp_url.c status.c forklist.c debug.c lowlevel.c identify.c - - # libafpclient_la_LDFLAGS = -module -avoid-version - diff --git a/lib/afpfs-ng/10-fix-errno.patch b/lib/afpfs-ng/10-fix-errno.patch deleted file mode 100644 index ff7ce44bdb..0000000000 --- a/lib/afpfs-ng/10-fix-errno.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- afpfs-ng-0.8.1/lib/afp.c 2011-09-04 19:42:42.000000000 +0200 -+++ afpfs-ng-0.8.1/lib/afp.c 2011-09-04 19:39:44.000000000 +0200 -@@ -19,7 +19,6 @@ - #include <sys/time.h> - #include <sys/types.h> - #include <sys/socket.h> --#include <errno.h> - - #include <afpfs-ng/afp_protocol.h> - #include <afpfs-ng/libafpclient.h> ---- afpfs-ng-0.8.1/lib/afp_url.c 2011-09-04 19:42:42.000000000 +0200 -+++ afpfs-ng-0.8.1/lib/afp_url.c 2011-09-04 19:40:27.000000000 +0200 -@@ -21,7 +21,9 @@ - - static int check_port(char * port) - { -- long long ret = strtol(port,NULL,10); -+ long long ret = 0; -+ errno = 0; -+ ret = strtol(port,NULL,10); - if ((ret<0) || (ret>32767)) return -1; - if (errno) { - printf("port error\n"); diff --git a/lib/afpfs-ng/11-fix-stat.patch b/lib/afpfs-ng/11-fix-stat.patch deleted file mode 100644 index 09e9a35231..0000000000 --- a/lib/afpfs-ng/11-fix-stat.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- afpfs-ng-0.8.1/lib/lowlevel.c 2011-10-01 20:36:55.000000000 +0200 -+++ afpfs-ng-0.8.1/lib/lowlevel.c 2011-10-01 20:46:00.000000000 +0200 -@@ -579,7 +579,7 @@ - return -EIO; - } - -- if (volume->server->using_version->av_number>=30) -+ if (volume->server->using_version->av_number>=30 && fp.unixprivs.permissions != 0) - stbuf->st_mode |= fp.unixprivs.permissions; - else - set_nonunix_perms(&stbuf->st_mode,&fp); diff --git a/lib/afpfs-ng/12-fix-even-more-pointers.patch b/lib/afpfs-ng/12-fix-even-more-pointers.patch deleted file mode 100644 index b5926bceed..0000000000 --- a/lib/afpfs-ng/12-fix-even-more-pointers.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff -uPr afpfs-ng-0.8.1/include/afpfs-ng/afp.h afpfs-ng-0.8.1/include/afpfs-ng/afp.h ---- afpfs-ng-0.8.1/include/afpfs-ng/afp.h 2012-10-30 22:30:29.000000000 +0100 -+++ afpfs-ng-0.8.1/include/afpfs-ng/afp.h 2012-10-30 22:26:15.000000000 +0100 -@@ -71,7 +71,7 @@ - struct afp_file_info * largelist_next; - unsigned char isdir; - unsigned long long size; -- unsigned short resourcesize; -+ unsigned long long resourcesize; - unsigned int resource; - unsigned short forkid; - struct afp_icon * icon; ---- afpfs-ng-0.8.1/lib/loop.c 2012-10-30 22:48:19.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/loop.c 2012-10-30 22:48:47.000000000 +0100 -@@ -87,12 +87,13 @@ - static int ending=0; - void * just_end_it_now(void * ignore) - { -- if (ending) return; -+ if (ending) return NULL; - ending=1; - if (libafpclient->forced_ending_hook) - libafpclient->forced_ending_hook(); - exit_program=2; - signal_main_thread(); -+ return NULL; - } - - /*This is a hack to handle a problem where the first pthread_kill doesnt' work*/ -diff -uPr afpfs-ng-0.8.1/lib/dsi.c afpfs-ng-0.8.1/lib/dsi.c ---- afpfs-ng-0.8.1/lib/dsi.c 2012-10-30 22:30:29.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/dsi.c 2012-10-30 22:11:09.000000000 +0100 -@@ -478,7 +478,7 @@ - } - server->flags=ntohs(reply1->flags); - -- p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1)); -+ p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1)); - p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1; - - /* Now work our way through the variable bits */ -@@ -762,7 +762,7 @@ - printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read); - #endif - ret = read(server->fd, (void *) -- (((unsigned int) server->incoming_buffer)+server->data_read), -+ (((unsigned long) server->incoming_buffer)+server->data_read), - amount_to_read); - if (ret<0) return -1; - if (ret==0) { -diff -uPr afpfs-ng-0.8.1/lib/lowlevel.c afpfs-ng-0.8.1/lib/lowlevel.c ---- afpfs-ng-0.8.1/lib/lowlevel.c 2012-10-30 22:30:29.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/lowlevel.c 2012-10-30 22:29:57.000000000 +0100 -@@ -582,7 +582,7 @@ - if (volume->server->using_version->av_number>=30 && fp.unixprivs.permissions != 0) - stbuf->st_mode |= fp.unixprivs.permissions; - else -- set_nonunix_perms(&stbuf->st_mode,&fp); -+ set_nonunix_perms((mode_t *)&stbuf->st_mode,&fp); - - stbuf->st_uid=fp.unixprivs.uid; - stbuf->st_gid=fp.unixprivs.gid; -diff -uPr afpfs-ng-0.8.1/lib/proto_directory.c afpfs-ng-0.8.1/lib/proto_directory.c ---- afpfs-ng-0.8.1/lib/proto_directory.c 2012-10-30 22:30:29.000000000 +0100 -+++ afpfs-ng-0.8.1/lib/proto_directory.c 2012-10-30 22:15:28.000000000 +0100 -@@ -259,7 +259,7 @@ - uint16_t reqcount; - } __attribute__((__packed__)) * reply = (void *) buf; - -- struct { -+ struct sEntry{ - uint16_t size; - uint8_t isdir; - uint8_t pad; -@@ -293,7 +293,7 @@ - filecur=new_file; - } - -- entry = p; -+ entry = (struct sEntry *)p; - - parse_reply_block(server,p+sizeof(*entry), - ntohs(entry->size),entry->isdir, diff --git a/lib/afpfs-ng/Makefile b/lib/afpfs-ng/Makefile deleted file mode 100644 index 67ccdc2b95..0000000000 --- a/lib/afpfs-ng/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# A quick and dirty Makefile to download/build and install -# -# Usage: -# make -# sudo make install - -# lib name, version -LIBNAME=afpfs-ng -VERSION=0.8.1 -SOURCE=$(LIBNAME)-$(VERSION) - -# download location and format -BASE_URL=http://mirrors.xbmc.org/build-deps/darwin-libs -ARCHIVE=$(SOURCE).tar.gz. -TARBALLS_LOCATION=. -RETRIEVE_TOOL=/usr/bin/curl -RETRIEVE_TOOL_FLAGS=-Ls --create-dirs --output $(TARBALLS_LOCATION)/$(ARCHIVE) -ARCHIVE_TOOL=tar -ARCHIVE_TOOL_FLAGS=xf -PREFIX ?= /usr/local -AFPFSNG_CONFIGOPTS ?= --prefix=$(PREFIX) - - -ARCHIVE=$(SOURCE).tar.bz2 - - - -# configuration settings -export PATH:=$(TOOLCHAIN)/bin:$(PATH) -CONFIGURE=./configure $(AFPFSNG_CONFIGOPTS) \ - --disable-fuse ac_cv_func_malloc_0_nonnull=yes - -SO_NAME=$(SOURCE)/lib/.libs/libafpclient.so - -all: $(SO_NAME) - -$(TARBALLS_LOCATION)/$(ARCHIVE): - $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE) - -$(SOURCE): $(TARBALLS_LOCATION)/$(ARCHIVE) - rm -rf $(SOURCE) - $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) - echo $(SOURCE) > .gitignore - cd $(SOURCE); patch -p1 <../fix_afpfs-ng_includes.patch - cd $(SOURCE); patch -p1 <../01-gcrypt.patch - cd $(SOURCE); patch -p1 <../02-pointer.patch - cd $(SOURCE); patch -p1 <../04-boxee1.patch - cd $(SOURCE); patch -p1 <../05-boxee2.patch - cd $(SOURCE); patch -p1 <../06-boxee3.patch - cd $(SOURCE); patch -p1 <../07-boxee4.patch - cd $(SOURCE); patch -p1 <../08-boxee5.patch - cd $(SOURCE); patch -p1 <../10-fix-errno.patch - cd $(SOURCE); patch -p1 <../11-fix-stat.patch - cd $(SOURCE); patch -p1 <../12-fix-even-more-pointers.patch - cd $(SOURCE); autoreconf -vif - cd $(SOURCE); $(CONFIGURE) - -$(SO_NAME): $(SOURCE) - make -j 1 -C $(SOURCE) - -install: - make -C $(SOURCE) install - -clean: - make -C $(SOURCE) clean - -distclean:: - rm -rf $(SOURCE) $(ARCHIVE) diff --git a/lib/afpfs-ng/fix_afpfs-ng_includes.patch b/lib/afpfs-ng/fix_afpfs-ng_includes.patch deleted file mode 100644 index f507a485ef..0000000000 --- a/lib/afpfs-ng/fix_afpfs-ng_includes.patch +++ /dev/null @@ -1,3082 +0,0 @@ -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 |