aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authormiwi <miwi@FreeBSD.org>2013-02-18 12:43:58 +0800
committermiwi <miwi@FreeBSD.org>2013-02-18 12:43:58 +0800
commit1b47a31604c8d89c6306103d5671c811d4ed4b2c (patch)
tree6c4c24197c5ec540d02ef640e97d288607c97e01 /net
parenta7c185465801fc912ae7a982431171803e72ce9f (diff)
downloadfreebsd-ports-gnome-1b47a31604c8d89c6306103d5671c811d4ed4b2c.tar.gz
freebsd-ports-gnome-1b47a31604c8d89c6306103d5671c811d4ed4b2c.tar.zst
freebsd-ports-gnome-1b47a31604c8d89c6306103d5671c811d4ed4b2c.zip
afpfs-ng is an Apple Filing Protocol client that will allow BSD,
Linux and Mac OS X systems to access files exported from a Mac OS system with AFP over TCP. WWW: http://sourceforge.net/projects/afpfs-ng/ PR: ports/172780 Submitted by: Manuel Creach <manuel.creach@icloud.com>
Diffstat (limited to 'net')
-rw-r--r--net/Makefile1
-rw-r--r--net/afpfs-ng/Makefile58
-rw-r--r--net/afpfs-ng/distinfo2
-rw-r--r--net/afpfs-ng/files/patch-Makefile.am11
-rw-r--r--net/afpfs-ng/files/patch-cmdline__cmdline_afp.c16
-rw-r--r--net/afpfs-ng/files/patch-cmdline__cmdline_testafp.c14
-rw-r--r--net/afpfs-ng/files/patch-cmdline__getstatus.c14
-rw-r--r--net/afpfs-ng/files/patch-configure.ac42
-rw-r--r--net/afpfs-ng/files/patch-fuse__client.c30
-rw-r--r--net/afpfs-ng/files/patch-fuse__commands.c26
-rw-r--r--net/afpfs-ng/files/patch-fuse__daemon.c18
-rw-r--r--net/afpfs-ng/files/patch-fuse__fuse_error.c12
-rw-r--r--net/afpfs-ng/files/patch-fuse__fuse_int.c36
-rw-r--r--net/afpfs-ng/files/patch-include__Makefile.am7
-rw-r--r--net/afpfs-ng/files/patch-include__afp.h537
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__Makefile.am10
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__afp.h537
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__afp_protocol.h365
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__codepage.h15
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__dsi.h39
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__libafpclient.h54
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__map_def.h19
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__midlevel.h68
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__uams_def.h20
-rw-r--r--net/afpfs-ng/files/patch-include__afpfs-ng__utils.h47
-rw-r--r--net/afpfs-ng/files/patch-include__codepage.h15
-rw-r--r--net/afpfs-ng/files/patch-include__dsi.h37
-rw-r--r--net/afpfs-ng/files/patch-include__libafpclient.h54
-rw-r--r--net/afpfs-ng/files/patch-include__map_def.h19
-rw-r--r--net/afpfs-ng/files/patch-include__midlevel.h68
-rw-r--r--net/afpfs-ng/files/patch-include__uams_def.h20
-rw-r--r--net/afpfs-ng/files/patch-include__utils.h47
-rw-r--r--net/afpfs-ng/files/patch-lib__Makefile.am12
-rw-r--r--net/afpfs-ng/files/patch-lib__afp.c124
-rw-r--r--net/afpfs-ng/files/patch-lib__afp_internal.h12
-rw-r--r--net/afpfs-ng/files/patch-lib__afp_url.c41
-rw-r--r--net/afpfs-ng/files/patch-lib__client.c11
-rw-r--r--net/afpfs-ng/files/patch-lib__codepage.c14
-rw-r--r--net/afpfs-ng/files/patch-lib__connect.c23
-rw-r--r--net/afpfs-ng/files/patch-lib__did.c23
-rw-r--r--net/afpfs-ng/files/patch-lib__dsi.c142
-rw-r--r--net/afpfs-ng/files/patch-lib__forklist.c12
-rw-r--r--net/afpfs-ng/files/patch-lib__identify.c28
-rw-r--r--net/afpfs-ng/files/patch-lib__log.c12
-rw-r--r--net/afpfs-ng/files/patch-lib__loop.c24
-rw-r--r--net/afpfs-ng/files/patch-lib__lowlevel.c27
-rw-r--r--net/afpfs-ng/files/patch-lib__map_def.c12
-rw-r--r--net/afpfs-ng/files/patch-lib__meta.c18
-rw-r--r--net/afpfs-ng/files/patch-lib__midlevel.c34
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_attr.c27
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_desktop.c27
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_directory.c36
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_files.c19
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_fork.c19
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_login.c17
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_map.c28
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_replyblock.c16
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_server.c21
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_session.c44
-rw-r--r--net/afpfs-ng/files/patch-lib__proto_volume.c22
-rw-r--r--net/afpfs-ng/files/patch-lib__resource.c17
-rw-r--r--net/afpfs-ng/files/patch-lib__server.c26
-rw-r--r--net/afpfs-ng/files/patch-lib__status.c15
-rw-r--r--net/afpfs-ng/files/patch-lib__uams.c45
-rw-r--r--net/afpfs-ng/files/patch-lib__users.c14
-rw-r--r--net/afpfs-ng/files/patch-lib__utils.c25
-rw-r--r--net/afpfs-ng/pkg-descr5
-rw-r--r--net/afpfs-ng/pkg-plist16
68 files changed, 3266 insertions, 0 deletions
diff --git a/net/Makefile b/net/Makefile
index 61a2f50893e2..e3271a2c1bd9 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -14,6 +14,7 @@
SUBDIR += abills
SUBDIR += activemq
SUBDIR += acx100
+ SUBDIR += afpfs-ng
SUBDIR += aget
SUBDIR += aoe
SUBDIR += apinger
diff --git a/net/afpfs-ng/Makefile b/net/afpfs-ng/Makefile
new file mode 100644
index 000000000000..fffee60ec6d4
--- /dev/null
+++ b/net/afpfs-ng/Makefile
@@ -0,0 +1,58 @@
+# Created by: Manuel Creach <manuel.creach@icloud.com>
+# $FreeBSD$
+
+PORTNAME= afpfs-ng
+PORTVERSION= 0.8.1
+CATEGORIES= net
+MASTER_SITES= SF
+
+MAINTAINER= manuel.creach@icloud.com
+COMMENT= The afpfs-ng is an Apple Filing Protocol client library
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+OPTIONS_DEFINE= FUSE GCRYPT
+
+USE_BZIP2= yes
+USE_GCC= any
+USE_GMAKE= yes
+USE_AUTOTOOLS= aclocal autoheader automake autoconf libtoolize
+ACLOCAL_ARGS= -I.
+AUTOMAKE_ARGS= --add-missing
+USE_LDCONFIG= yes
+
+CFLAGS+= -D_FILE_OFFSET_BITS=64 -I${LOCALBASE}/include
+LDFLAGS+= -L${LOCALBASE}/lib
+
+.include <bsd.port.options.mk>
+
+CONFIGURE_ARGS+=--prefix="${PREFIX}"
+
+MAN1= afpcmd.1 afpgetstatus.1
+
+.if ${PORT_OPTIONS:MFUSE}
+LIB_DEPENDS+= fuse:${PORTSDIR}/sysutils/fusefs-libs
+CONFIGURE_ARGS+=--enable-fuse
+.else
+CONFIGURE_ARGS+=--disable-fuse
+.endif
+
+.if ${PORT_OPTIONS:MGCRYPT}
+LIB_DEPENDS+= gcrypt:${PORTSDIR}/security/libgcrypt
+CONFIGURE_ARGS+=--enable-gcrypt
+.else
+CONFIGURE_ARGS+=--disable-gcrypt
+.endif
+
+.include <bsd.port.pre.mk>
+
+post-patch: .SILENT
+ ${REINPLACE_CMD} 's|$$(libdir)/\(pkgconfig\)|$$(prefix)/libdata/\1|' \
+ ${WRKSRC}/Makefile.am
+
+post-configure: .SILENT
+ ${REINPLACE_CMD} 's|LIBS = |LIBS = -liconv |' \
+ ${WRKSRC}/cmdline/Makefile
+
+.include <bsd.port.post.mk>
diff --git a/net/afpfs-ng/distinfo b/net/afpfs-ng/distinfo
new file mode 100644
index 000000000000..b7fb694bb23d
--- /dev/null
+++ b/net/afpfs-ng/distinfo
@@ -0,0 +1,2 @@
+SHA256 (afpfs-ng-0.8.1.tar.bz2) = 688560de1cde57ab8d9e0ef7dc6436dbf0267fe8884f9014e50ff92b297b01a8
+SIZE (afpfs-ng-0.8.1.tar.bz2) = 344014
diff --git a/net/afpfs-ng/files/patch-Makefile.am b/net/afpfs-ng/files/patch-Makefile.am
new file mode 100644
index 000000000000..84789effc47f
--- /dev/null
+++ b/net/afpfs-ng/files/patch-Makefile.am
@@ -0,0 +1,11 @@
+--- Makefile.am.orig 2008-02-18 03:24:14.000000000 +0000
++++ Makefile.am 2012-10-14 13:11:34.000000000 +0000
+@@ -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
+diff -Naur afpfs-ng-0.8.1.orig/cmdline/cmdline_afp.c afpfs-ng-0.8.1/cmdline/cmdline_afp.c
diff --git a/net/afpfs-ng/files/patch-cmdline__cmdline_afp.c b/net/afpfs-ng/files/patch-cmdline__cmdline_afp.c
new file mode 100644
index 000000000000..ae09d56e204e
--- /dev/null
+++ b/net/afpfs-ng/files/patch-cmdline__cmdline_afp.c
@@ -0,0 +1,16 @@
+--- cmdline/cmdline_afp.c.orig 2008-02-19 01:54:19.000000000 +0000
++++ cmdline/cmdline_afp.c 2012-10-14 13:11:33.000000000 +0000
+@@ -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.orig/cmdline/cmdline_testafp.c afpfs-ng-0.8.1/cmdline/cmdline_testafp.c
diff --git a/net/afpfs-ng/files/patch-cmdline__cmdline_testafp.c b/net/afpfs-ng/files/patch-cmdline__cmdline_testafp.c
new file mode 100644
index 000000000000..60522246bac4
--- /dev/null
+++ b/net/afpfs-ng/files/patch-cmdline__cmdline_testafp.c
@@ -0,0 +1,14 @@
+--- cmdline/cmdline_testafp.c.orig 2008-03-04 20:16:50.000000000 +0000
++++ cmdline/cmdline_testafp.c 2012-10-14 13:11:33.000000000 +0000
+@@ -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.orig/cmdline/getstatus.c afpfs-ng-0.8.1/cmdline/getstatus.c
diff --git a/net/afpfs-ng/files/patch-cmdline__getstatus.c b/net/afpfs-ng/files/patch-cmdline__getstatus.c
new file mode 100644
index 000000000000..70ad53e19fd0
--- /dev/null
+++ b/net/afpfs-ng/files/patch-cmdline__getstatus.c
@@ -0,0 +1,14 @@
+--- cmdline/getstatus.c.orig 2008-02-18 03:28:09.000000000 +0000
++++ cmdline/getstatus.c 2012-10-14 13:11:43.000000000 +0000
+@@ -1,8 +1,9 @@
+ #include <stdio.h>
++#include <stdlib.h>
+ #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.orig/configure.ac afpfs-ng-0.8.1/configure.ac
diff --git a/net/afpfs-ng/files/patch-configure.ac b/net/afpfs-ng/files/patch-configure.ac
new file mode 100644
index 000000000000..6d4166f11a04
--- /dev/null
+++ b/net/afpfs-ng/files/patch-configure.ac
@@ -0,0 +1,42 @@
+--- configure.ac.orig 2008-03-08 16:23:12.000000000 +0000
++++ configure.ac 2012-10-14 13:11:39.000000000 +0000
+@@ -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':
+@@ -50,21 +51,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] )
+ ;;
+@@ -105,7 +91,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.orig/fuse/client.c afpfs-ng-0.8.1/fuse/client.c
diff --git a/net/afpfs-ng/files/patch-fuse__client.c b/net/afpfs-ng/files/patch-fuse__client.c
new file mode 100644
index 000000000000..1ebe95fc9cfa
--- /dev/null
+++ b/net/afpfs-ng/files/patch-fuse__client.c
@@ -0,0 +1,30 @@
+--- fuse/client.c.orig 2008-03-08 02:44:16.000000000 +0000
++++ fuse/client.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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"
+
+@@ -61,8 +61,9 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/fuse/commands.c afpfs-ng-0.8.1/fuse/commands.c
diff --git a/net/afpfs-ng/files/patch-fuse__commands.c b/net/afpfs-ng/files/patch-fuse__commands.c
new file mode 100644
index 000000000000..1b1d781298bf
--- /dev/null
+++ b/net/afpfs-ng/files/patch-fuse__commands.c
@@ -0,0 +1,26 @@
+--- fuse/commands.c.orig 2008-03-08 16:06:25.000000000 +0000
++++ fuse/commands.c 2012-10-14 13:11:33.000000000 +0000
+@@ -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.orig/fuse/daemon.c afpfs-ng-0.8.1/fuse/daemon.c
diff --git a/net/afpfs-ng/files/patch-fuse__daemon.c b/net/afpfs-ng/files/patch-fuse__daemon.c
new file mode 100644
index 000000000000..b8c940aefefa
--- /dev/null
+++ b/net/afpfs-ng/files/patch-fuse__daemon.c
@@ -0,0 +1,18 @@
+--- fuse/daemon.c.orig 2008-03-04 17:26:05.000000000 +0000
++++ fuse/daemon.c 2012-10-14 13:11:33.000000000 +0000
+@@ -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.orig/fuse/fuse_error.c afpfs-ng-0.8.1/fuse/fuse_error.c
diff --git a/net/afpfs-ng/files/patch-fuse__fuse_error.c b/net/afpfs-ng/files/patch-fuse__fuse_error.c
new file mode 100644
index 000000000000..fb8c20eacef8
--- /dev/null
+++ b/net/afpfs-ng/files/patch-fuse__fuse_error.c
@@ -0,0 +1,12 @@
+--- fuse/fuse_error.c.orig 2008-01-18 04:40:10.000000000 +0000
++++ fuse/fuse_error.c 2012-10-14 13:11:33.000000000 +0000
+@@ -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.orig/fuse/fuse_int.c afpfs-ng-0.8.1/fuse/fuse_int.c
diff --git a/net/afpfs-ng/files/patch-fuse__fuse_int.c b/net/afpfs-ng/files/patch-fuse__fuse_int.c
new file mode 100644
index 000000000000..dc8e4a783071
--- /dev/null
+++ b/net/afpfs-ng/files/patch-fuse__fuse_int.c
@@ -0,0 +1,36 @@
+--- fuse/fuse_int.c.orig 2008-03-02 05:06:24.000000000 +0000
++++ fuse/fuse_int.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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: */
+@@ -197,7 +197,7 @@
+ ret = ml_open(volume,path,flags,&fp);
+
+ if (ret==0)
+- fi->fh=(void *) fp;
++ fi->fh=(unsigned long) fp;
+
+ return ret;
+ }
+diff -Naur afpfs-ng-0.8.1.orig/include/Makefile.am afpfs-ng-0.8.1/include/Makefile.am
diff --git a/net/afpfs-ng/files/patch-include__Makefile.am b/net/afpfs-ng/files/patch-include__Makefile.am
new file mode 100644
index 000000000000..10b60633c001
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__Makefile.am
@@ -0,0 +1,7 @@
+--- include/Makefile.am.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/Makefile.am 2012-10-14 13:11:34.000000000 +0000
+@@ -0,0 +1,3 @@
++## Process this file with automake to produce Makefile.in
++
++SUBDIRS = afpfs-ng
+diff -Naur afpfs-ng-0.8.1.orig/include/afp.h afpfs-ng-0.8.1/include/afp.h
diff --git a/net/afpfs-ng/files/patch-include__afp.h b/net/afpfs-ng/files/patch-include__afp.h
new file mode 100644
index 000000000000..7a28ac70f099
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afp.h
@@ -0,0 +1,537 @@
+--- include/afp.h.orig 2008-03-08 16:08:18.000000000 +0000
++++ include/afp.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/afp_protocol.h afpfs-ng-0.8.1/include/afp_protocol.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__Makefile.am b/net/afpfs-ng/files/patch-include__afpfs-ng__Makefile.am
new file mode 100644
index 000000000000..a9de63fda427
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__Makefile.am
@@ -0,0 +1,10 @@
+--- include/afpfs-ng/Makefile.am.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/Makefile.am 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/afpfs-ng/afp.h afpfs-ng-0.8.1/include/afpfs-ng/afp.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__afp.h b/net/afpfs-ng/files/patch-include__afpfs-ng__afp.h
new file mode 100644
index 000000000000..2992c7f6a278
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__afp.h
@@ -0,0 +1,537 @@
+--- include/afpfs-ng/afp.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/afp.h 2012-10-14 13:11:44.000000000 +0000
+@@ -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.orig/include/afpfs-ng/afp_protocol.h afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__afp_protocol.h b/net/afpfs-ng/files/patch-include__afpfs-ng__afp_protocol.h
new file mode 100644
index 000000000000..d9a5a5df6fb8
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__afp_protocol.h
@@ -0,0 +1,365 @@
+--- include/afpfs-ng/afp_protocol.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/afp_protocol.h 2012-10-14 13:11:33.000000000 +0000
+@@ -0,0 +1,361 @@
++
++#ifndef _AFP_PROTOCOL_H_
++#define _AFP_PROTOCOL_H_
++
++#include <sys/types.h>
++#include <stddef.h>
++#include <unistd.h>
++#include <stdint.h>
++
++/* This file defines constants for the Apple File Protocol.
++ All page references are from "Apple Filing Protocol Programming" version 3.2.
++ except where noted.
++*/
++
++#define AFP_SERVER_NAME_LEN 33
++#define AFP_SERVER_NAME_UTF8_LEN 255
++#define AFP_VOLUME_NAME_LEN 33
++#define AFP_VOLUME_NAME_UTF8_LEN 33
++#define AFP_SIGNATURE_LEN 16
++#define AFP_MACHINETYPE_LEN 33
++#define AFP_LOGINMESG_LEN 200
++#define AFP_VOLPASS_LEN 8
++#define AFP_HOSTNAME_LEN 255
++/* This is actually just a guess, and only used for appletalk */
++#define AFP_ZONE_LEN 255
++
++#define AFP_SERVER_ICON_LEN 256
++
++
++#define AFP_MAX_USERNAME_LEN 127
++#define AFP_MAX_PASSWORD_LEN 127
++
++
++/* This is the maximum length of any UAM string */
++#define AFP_UAM_LENGTH 24
++
++/* This is the maximum length of any path description */
++#define AFP_MAX_PATH 768
++
++#define AFP_VOL_FLAT 1
++#define AFP_VOL_FIXED 2
++#define AFP_VOL_VARIABLE 3
++
++/* The root directory ID, p.26 */
++
++#define AFP_ROOT_DID 2
++
++/* Path type constants, p.249 */
++
++enum {
++kFPShortName = 1,
++kFPLongName = 2,
++kFPUTF8Name = 3
++};
++
++/* fork types */
++
++#define AFP_FORKTYPE_DATA 0x0
++#define AFP_FORKTYPE_RESOURCE 0x80
++
++/* openfork access modes, from p.196 */
++
++#define AFP_OPENFORK_ALLOWREAD 1
++#define AFP_OPENFORK_ALLOWWRITE 2
++#define AFP_OPENFORK_DENYREAD 0x10
++#define AFP_OPENFORK_DENYWRITE 0x20
++
++/* Message type for getsrvmesg, p. 169*/
++
++typedef enum {
++ AFPMESG_LOGIN = 0,
++ AFPMESG_SERVER = 1
++} afpmessage_t;
++
++/* Message bitmap for getsrvrmsg */
++
++#define AFP_GETSRVRMSG_UTF8 0x2
++#define AFP_GETSRVRMSG_GETMSG 0x1
++
++
++/* Maximum Version length, p.17 */
++#define AFP_MAX_VERSION_LENGTH 16
++
++/* Maximum length of a token, this is undocumented */
++#define AFP_TOKEN_MAX_LEN 256
++
++/* The maximum size of a file for AFP 2 */
++#define AFP_MAX_AFP2_FILESIZE (4294967296)
++
++/* Unix privs, p.240 */
++
++struct afp_unixprivs {
++ uint32_t uid __attribute__((__packed__));
++ uint32_t gid __attribute__((__packed__));
++ uint32_t permissions __attribute__((__packed__));
++ uint32_t ua_permissions __attribute__((__packed__));
++
++};
++
++
++/* AFP Volume attributes bitmap, p.241 */
++
++enum {
++ kReadOnly = 0x01,
++ kHasVolumePassword = 0x02,
++ kSupportsFileIDs = 0x04,
++ kSupportsCatSearch = 0x08,
++ kSupportsBlankAccessPrivs = 0x10,
++ kSupportsUnixPrivs = 0x20,
++ kSupportsUTF8Names = 0x40,
++ kNoNetworkUserIDs = 0x80,
++ kDefaultPrivsFromParent = 0x100,
++ kNoExchangeFiles = 0x200,
++ kSupportsExtAttrs = 0x400,
++ kSupportsACLs=0x800
++};
++
++/* AFP file creation constantes, p.250 */
++enum {
++kFPSoftCreate = 0,
++kFPHardCreate = 0x80
++};
++
++/* AFP Directory attributes, taken from the protocol guide p.236 */
++
++enum {
++ kFPAttributeBit = 0x1,
++ kFPParentDirIDBit = 0x2,
++ kFPCreateDateBit = 0x4,
++ kFPModDateBit = 0x8,
++ kFPBackupDateBit = 0x10,
++ kFPFinderInfoBit = 0x20,
++ kFPLongNameBit = 0x40,
++ kFPShortNameBit = 0x80,
++ kFPNodeIDBit = 0x100,
++ kFPOffspringCountBit = 0x0200,
++ kFPOwnerIDBit = 0x0400,
++ kFPGroupIDBit = 0x0800,
++ kFPAccessRightsBit = 0x1000,
++ kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier
++ kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later
++ kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later
++};
++
++/* AFP File bitmap, p.238. These are the ones not in the AFP Directory
++ attributes map. */
++
++enum {
++ kFPDataForkLenBit = 0x0200,
++ kFPRsrcForkLenBit = 0x0400,
++ kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later
++ kFPLaunchLimitBit = 0x1000,
++ kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later
++};
++
++/* AFP Extended Attributes Bitmap, p.238 */
++
++enum {
++ kXAttrNoFollow = 0x1,
++ kXAttrCreate = 0x2,
++ kXAttrREplace=0x4
++};
++
++
++/* AFP function codes */
++enum AFPFunction
++{
++ afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork,
++ afpCopyFile, afpCreateDir, afpCreateFile,
++ afpDelete, afpEnumerate, afpFlush, afpFlushFork,
++ afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms,
++ afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID,
++ afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork,
++ afpRead, afpRename, afpSetDirParms, afpSetFileParms,
++ afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms,
++ afpSetFileDirParms, afpChangePassword,
++ afpGetUserInfo=37,afpGetSrvrMsg = 38,
++ afpOpenDT=48,
++ afpCloseDT=49,
++ afpGetIcon=51, afpGetIconInfo=52,
++ afpAddComment=56, afpRemoveComment=57, afpGetComment=58,
++ afpByteRangeLockExt=59, afpReadExt, afpWriteExt,
++ afpGetAuthMethods=62,
++ afp_LoginExt=63,
++ afpGetSessionToken=64,
++ afpDisconnectOldSession=65,
++ afpEnumerateExt=66,
++ afpCatSearchExt = 67,
++ afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr,
++ afpRemoveExtAttr , afpListExtAttrs,
++ afpZzzzz = 122,
++ afpAddIcon=192,
++};
++
++/* AFP Volume bitmap. Take from 242 of the protocol guide. */
++enum {
++ kFPBadVolPre222Bitmap = 0xFe00,
++ kFPBadVolBitmap = 0xF000,
++ kFPVolAttributeBit = 0x1,
++ kFPVolSignatureBit = 0x2,
++ kFPVolCreateDateBit = 0x4,
++ kFPVolModDateBit = 0x8,
++ kFPVolBackupDateBit = 0x10,
++ kFPVolIDBit = 0x20,
++ kFPVolBytesFreeBit = 0x40,
++ kFPVolBytesTotalBit = 0x80,
++ kFPVolNameBit = 0x100,
++ kFPVolExtBytesFreeBit = 0x200,
++ kFPVolExtBytesTotalBit = 0x400,
++ kFPVolBlockSizeBit = 0x800
++};
++
++/* AFP Attention Codes -- 4 bits */
++#define AFPATTN_SHUTDOWN (1 << 15) /* shutdown/disconnect */
++#define AFPATTN_CRASH (1 << 14) /* server crashed */
++#define AFPATTN_MESG (1 << 13) /* server has message */
++#define AFPATTN_NORECONNECT (1 << 12) /* don't reconnect */
++/* server notification */
++#define AFPATTN_NOTIFY (AFPATTN_MESG | AFPATTN_NORECONNECT)
++
++/* extended bitmap -- 12 bits. volchanged is only useful w/ a server
++ * notification, and time is only useful for shutdown. */
++#define AFPATTN_VOLCHANGED (1 << 0) /* volume has changed */
++#define AFPATTN_TIME(x) ((x) & 0xfff) /* time in minutes */
++
++#define kFPNoErr 0
++
++/* AFP result codes, p252 */
++#define kASPSessClosed -1072
++#define kFPAccessDenied -5000
++#define kFPAuthContinue -5001
++#define kFPBadUAM -5002
++#define kFPBadVersNum -5003
++#define kFPBitmapErr -5004
++#define kFPCantMove -5005
++#define kFPDenyConflict -5006
++#define kFPDirNotEmpty -5007
++#define kFPDiskFull -5008
++#define kFPEOFErr -5009
++#define kFPFileBusy -5010
++#define kFPFlatVol -5011
++#define kFPItemNotFound -5012
++#define kFPLockErr -5013
++#define kFPMiscErr -5014
++#define kFPNoMoreLocks -5015
++#define kFPNoServer -5016
++#define kFPObjectExists -5017
++#define kFPObjectNotFound -5018
++#define kFPParamErr -5019
++#define kFPRangeNotLocked -5020
++#define kFPRangeOverlap -5021
++#define kFPSessClosed -5022
++#define kFPUserNotAuth -5023
++#define kFPCallNotSupported -5024
++#define kFPObjectTypeErr -5025
++#define kFPTooManyFilesOpen -5026
++#define kFPServerGoingDown -5027
++#define kFPCantRename -5028
++#define kFPDirNotFound -5029
++#define kFPIconTypeError -5030
++#define kFPVolLocked -5031
++#define kFPObjectLocked -5032
++#define kFPContainsSharedErr -5033
++#define kFPIDNotFound -5034
++#define kFPIDExists -5035
++#define kFPDiffVolErr -5036
++#define kFPCatalogChanged -5037
++#define kFPSameObjectErr -5038
++#define kFPBadIDErr -5039
++#define kFPPwdSameErr -5040
++#define kFPPwdTooShortErr -5041
++#define kFPPwdExpiredErr -5042
++#define kFPInsideSharedErr -5043
++#define kFPInsideTrashErr -5044
++#define kFPPwdNeedsChangeErr -5045
++#define kFPPwdPolicyErr -5046
++#define kFPDiskQuotaExceeded –5047
++
++
++
++/* These flags determine to lock or unlock in ByteRangeLock(Ext) */
++
++enum {
++ByteRangeLock_Lock = 0,
++ByteRangeLock_Unlock = 1
++};
++
++/* These flags are used in volopen and getsrvrparm replies, p.171 */
++
++#define HasConfigInfo 0x1
++#define HasPassword 0x80
++
++/* These are the subfunction for kFPMapID, as per p.248 */
++
++enum {
++kUserIDToName = 1,
++kGroupIDToName = 2,
++kUserIDToUTF8Name = 3,
++kGroupIDToUTF8Name = 4,
++kUserUUIDToUTF8Name = 5,
++kGroupUUIDToUTF8Name = 6
++};
++
++
++/* These are the subfunction flags described in the FPMapName command, p.286.
++ Note that this is different than what's described on p. 186. */
++
++enum {
++kNameToUserID = 1,
++kNameToGroupID = 2,
++kUTF8NameToUserID = 3,
++kUTF8NameToGroupID = 4,
++kUTF8NameToUserUUID = 5,
++kUTF8NameToGroupUUID = 6
++};
++
++/* These are bits for FPGetUserInfo, p.173. */
++#define kFPGetUserInfo_USER_ID 1
++#define kFPGetUserInfo_PRI_GROUPID 2
++
++/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */
++
++enum {
++ kSupportsCopyfile = 0x01,
++ kSupportsChgPwd = 0x02,
++ kDontAllowSavePwd = 0x04,
++ kSupportsSrvrMsg = 0x08,
++ kSrvrSig = 0x10,
++ kSupportsTCP = 0x20,
++ kSupportsSrvrNotify = 0x40,
++ kSupportsReconnect = 0x80,
++ kSupportsDirServices = 0x100,
++ kSupportsUTF8SrvrName = 0x200,
++ kSupportsUUIDs = 0x400,
++ kSupportsSuperClient = 0x8000
++};
++
++
++/* p.247 */
++
++enum {
++ kLoginWithoutID = 0,
++ kLoginWithID = 1,
++ kReconnWithID = 2,
++ kLoginWithTimeAndID = 3,
++ kReconnWithTimeAndID = 4,
++ kRecon1Login = 5,
++ kRecon1ReconnectLogin = 6,
++ kRecon1Refresh = 7, kGetKerberosSessionKey = 8
++};
++
++
++#define AFP_CHMOD_ALLOWED_BITS_22 \
++ (S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG )
++
++
++#endif
++
++
++
++
+diff -Naur afpfs-ng-0.8.1.orig/include/afpfs-ng/codepage.h afpfs-ng-0.8.1/include/afpfs-ng/codepage.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__codepage.h b/net/afpfs-ng/files/patch-include__afpfs-ng__codepage.h
new file mode 100644
index 000000000000..79094bb37011
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__codepage.h
@@ -0,0 +1,15 @@
+--- include/afpfs-ng/codepage.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/codepage.h 2012-10-14 13:11:33.000000000 +0000
+@@ -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.orig/include/afpfs-ng/dsi.h afpfs-ng-0.8.1/include/afpfs-ng/dsi.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__dsi.h b/net/afpfs-ng/files/patch-include__afpfs-ng__dsi.h
new file mode 100644
index 000000000000..752a85e767e4
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__dsi.h
@@ -0,0 +1,39 @@
+--- include/afpfs-ng/dsi.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/dsi.h 2012-10-14 13:11:47.000000000 +0000
+@@ -0,0 +1,35 @@
++
++#ifndef __DSI_H_
++#define __DSI_H_
++
++#include "afpfs-ng/afp.h"
++
++struct dsi_request
++{
++ 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);
++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.orig/include/afpfs-ng/libafpclient.h afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__libafpclient.h b/net/afpfs-ng/files/patch-include__afpfs-ng__libafpclient.h
new file mode 100644
index 000000000000..28a90c19435e
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__libafpclient.h
@@ -0,0 +1,54 @@
+--- include/afpfs-ng/libafpclient.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/libafpclient.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/afpfs-ng/map_def.h afpfs-ng-0.8.1/include/afpfs-ng/map_def.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__map_def.h b/net/afpfs-ng/files/patch-include__afpfs-ng__map_def.h
new file mode 100644
index 000000000000..21c30fa514f1
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__map_def.h
@@ -0,0 +1,19 @@
+--- include/afpfs-ng/map_def.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/map_def.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/afpfs-ng/midlevel.h afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__midlevel.h b/net/afpfs-ng/files/patch-include__afpfs-ng__midlevel.h
new file mode 100644
index 000000000000..31b11ef4fa11
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__midlevel.h
@@ -0,0 +1,68 @@
+--- include/afpfs-ng/midlevel.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/midlevel.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/afpfs-ng/uams_def.h afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__uams_def.h b/net/afpfs-ng/files/patch-include__afpfs-ng__uams_def.h
new file mode 100644
index 000000000000..2827b63ba7b6
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__uams_def.h
@@ -0,0 +1,20 @@
+--- include/afpfs-ng/uams_def.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/uams_def.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/afpfs-ng/utils.h afpfs-ng-0.8.1/include/afpfs-ng/utils.h
diff --git a/net/afpfs-ng/files/patch-include__afpfs-ng__utils.h b/net/afpfs-ng/files/patch-include__afpfs-ng__utils.h
new file mode 100644
index 000000000000..09b86544eae4
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__afpfs-ng__utils.h
@@ -0,0 +1,47 @@
+--- include/afpfs-ng/utils.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ include/afpfs-ng/utils.h 2012-10-14 13:11:44.000000000 +0000
+@@ -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((((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 */
++
++#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.orig/include/codepage.h afpfs-ng-0.8.1/include/codepage.h
diff --git a/net/afpfs-ng/files/patch-include__codepage.h b/net/afpfs-ng/files/patch-include__codepage.h
new file mode 100644
index 000000000000..0ee141a7f7de
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__codepage.h
@@ -0,0 +1,15 @@
+--- include/codepage.h.orig 2007-09-23 14:21:30.000000000 +0000
++++ include/codepage.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/dsi.h afpfs-ng-0.8.1/include/dsi.h
diff --git a/net/afpfs-ng/files/patch-include__dsi.h b/net/afpfs-ng/files/patch-include__dsi.h
new file mode 100644
index 000000000000..3045607c99c4
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__dsi.h
@@ -0,0 +1,37 @@
+--- include/dsi.h.orig 2008-02-18 03:33:24.000000000 +0000
++++ include/dsi.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/libafpclient.h afpfs-ng-0.8.1/include/libafpclient.h
diff --git a/net/afpfs-ng/files/patch-include__libafpclient.h b/net/afpfs-ng/files/patch-include__libafpclient.h
new file mode 100644
index 000000000000..63f5c97f22fe
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__libafpclient.h
@@ -0,0 +1,54 @@
+--- include/libafpclient.h.orig 2008-01-30 04:37:59.000000000 +0000
++++ include/libafpclient.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/map_def.h afpfs-ng-0.8.1/include/map_def.h
diff --git a/net/afpfs-ng/files/patch-include__map_def.h b/net/afpfs-ng/files/patch-include__map_def.h
new file mode 100644
index 000000000000..09bfa2c5a3fc
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__map_def.h
@@ -0,0 +1,19 @@
+--- include/map_def.h.orig 2008-01-17 04:55:46.000000000 +0000
++++ include/map_def.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/midlevel.h afpfs-ng-0.8.1/include/midlevel.h
diff --git a/net/afpfs-ng/files/patch-include__midlevel.h b/net/afpfs-ng/files/patch-include__midlevel.h
new file mode 100644
index 000000000000..b7791b017b0c
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__midlevel.h
@@ -0,0 +1,68 @@
+--- include/midlevel.h.orig 2007-12-24 19:39:25.000000000 +0000
++++ include/midlevel.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/uams_def.h afpfs-ng-0.8.1/include/uams_def.h
diff --git a/net/afpfs-ng/files/patch-include__uams_def.h b/net/afpfs-ng/files/patch-include__uams_def.h
new file mode 100644
index 000000000000..2cc80722fccd
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__uams_def.h
@@ -0,0 +1,20 @@
+--- include/uams_def.h.orig 2007-09-07 13:10:51.000000000 +0000
++++ include/uams_def.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/include/utils.h afpfs-ng-0.8.1/include/utils.h
diff --git a/net/afpfs-ng/files/patch-include__utils.h b/net/afpfs-ng/files/patch-include__utils.h
new file mode 100644
index 000000000000..361ea64e40c2
--- /dev/null
+++ b/net/afpfs-ng/files/patch-include__utils.h
@@ -0,0 +1,47 @@
+--- include/utils.h.orig 2008-02-18 03:33:58.000000000 +0000
++++ include/utils.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/Makefile.am afpfs-ng-0.8.1/lib/Makefile.am
diff --git a/net/afpfs-ng/files/patch-lib__Makefile.am b/net/afpfs-ng/files/patch-lib__Makefile.am
new file mode 100644
index 000000000000..fd1b83285b26
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__Makefile.am
@@ -0,0 +1,12 @@
+--- lib/Makefile.am.orig 2008-02-18 03:34:32.000000000 +0000
++++ lib/Makefile.am 2012-10-14 13:13:01.000000000 +0000
+@@ -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 -Naur afpfs-ng-0.8.1.orig/lib/afp.c afpfs-ng-0.8.1/lib/afp.c
diff --git a/net/afpfs-ng/files/patch-lib__afp.c b/net/afpfs-ng/files/patch-lib__afp.c
new file mode 100644
index 000000000000..212a91f123d6
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__afp.c
@@ -0,0 +1,124 @@
+--- lib/afp.c.orig 2008-03-08 02:44:16.000000000 +0000
++++ lib/afp.c 2012-10-14 13:13:06.000000000 +0000
+@@ -9,7 +9,7 @@
+
+
+
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ #include <config.h>
+
+ #include <stdio.h>
+@@ -19,19 +19,18 @@
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #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 },
+@@ -68,7 +67,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 +319,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 +361,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 +531,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 +552,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 +653,6 @@
+ add_server(server);
+
+ add_fd_and_signal(server->fd);
+-
+ if (!full) {
+ return 0;
+ }
+@@ -649,10 +660,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 -Naur afpfs-ng-0.8.1.orig/lib/afp_internal.h afpfs-ng-0.8.1/lib/afp_internal.h
diff --git a/net/afpfs-ng/files/patch-lib__afp_internal.h b/net/afpfs-ng/files/patch-lib__afp_internal.h
new file mode 100644
index 000000000000..cf7625c4e033
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__afp_internal.h
@@ -0,0 +1,12 @@
+--- lib/afp_internal.h.orig 2007-11-09 04:27:20.000000000 +0000
++++ lib/afp_internal.h 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/afp_url.c afpfs-ng-0.8.1/lib/afp_url.c
diff --git a/net/afpfs-ng/files/patch-lib__afp_url.c b/net/afpfs-ng/files/patch-lib__afp_url.c
new file mode 100644
index 000000000000..caad04742734
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__afp_url.c
@@ -0,0 +1,41 @@
+--- lib/afp_url.c.orig 2008-03-04 20:16:49.000000000 +0000
++++ lib/afp_url.c 2012-10-14 13:13:06.000000000 +0000
+@@ -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)
+ {
+@@ -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");
+@@ -33,7 +35,7 @@
+ 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 +190,7 @@
+ return -1;
+
+ }
+- if (p==NULL) p=toparse;
++ if (p==NULL) p=(char *)toparse;
+
+ /* Now split on the first / */
+ if (sscanf(p,"%[^/]/%[^$]",
+diff -Naur afpfs-ng-0.8.1.orig/lib/client.c afpfs-ng-0.8.1/lib/client.c
diff --git a/net/afpfs-ng/files/patch-lib__client.c b/net/afpfs-ng/files/patch-lib__client.c
new file mode 100644
index 000000000000..23b8954e93a3
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__client.c
@@ -0,0 +1,11 @@
+--- lib/client.c.orig 2008-02-18 03:36:30.000000000 +0000
++++ lib/client.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/codepage.c afpfs-ng-0.8.1/lib/codepage.c
diff --git a/net/afpfs-ng/files/patch-lib__codepage.c b/net/afpfs-ng/files/patch-lib__codepage.c
new file mode 100644
index 000000000000..8b02341a7b6b
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__codepage.c
@@ -0,0 +1,14 @@
+--- lib/codepage.c.orig 2008-02-18 03:36:54.000000000 +0000
++++ lib/codepage.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/connect.c afpfs-ng-0.8.1/lib/connect.c
diff --git a/net/afpfs-ng/files/patch-lib__connect.c b/net/afpfs-ng/files/patch-lib__connect.c
new file mode 100644
index 000000000000..20a92c89e4ee
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__connect.c
@@ -0,0 +1,23 @@
+--- lib/connect.c.orig 2008-02-18 03:38:59.000000000 +0000
++++ lib/connect.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/did.c afpfs-ng-0.8.1/lib/did.c
diff --git a/net/afpfs-ng/files/patch-lib__did.c b/net/afpfs-ng/files/patch-lib__did.c
new file mode 100644
index 000000000000..a32d221c0e72
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__did.c
@@ -0,0 +1,23 @@
+--- lib/did.c.orig 2008-02-18 03:39:17.000000000 +0000
++++ lib/did.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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
+
+@@ -226,7 +226,7 @@
+
+
+ /* 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 -Naur afpfs-ng-0.8.1.orig/lib/dsi.c afpfs-ng-0.8.1/lib/dsi.c
diff --git a/net/afpfs-ng/files/patch-lib__dsi.c b/net/afpfs-ng/files/patch-lib__dsi.c
new file mode 100644
index 000000000000..c0c15ae764a0
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__dsi.c
@@ -0,0 +1,142 @@
+--- lib/dsi.c.orig 2008-02-18 03:53:03.000000000 +0000
++++ lib/dsi.c 2012-10-14 13:12:03.000000000 +0000
+@@ -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"
+
+@@ -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
+@@ -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
+@@ -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 -Naur afpfs-ng-0.8.1.orig/lib/forklist.c afpfs-ng-0.8.1/lib/forklist.c
diff --git a/net/afpfs-ng/files/patch-lib__forklist.c b/net/afpfs-ng/files/patch-lib__forklist.c
new file mode 100644
index 000000000000..540980d20f9e
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__forklist.c
@@ -0,0 +1,12 @@
+--- lib/forklist.c.orig 2008-01-17 04:49:16.000000000 +0000
++++ lib/forklist.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/identify.c afpfs-ng-0.8.1/lib/identify.c
diff --git a/net/afpfs-ng/files/patch-lib__identify.c b/net/afpfs-ng/files/patch-lib__identify.c
new file mode 100644
index 000000000000..eda3c9a39ce2
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__identify.c
@@ -0,0 +1,28 @@
+--- lib/identify.c.orig 1970-01-01 00:00:00.000000000 +0000
++++ lib/identify.c 2012-10-14 13:12:57.000000000 +0000
+@@ -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 -Naur afpfs-ng-0.8.1.orig/lib/log.c afpfs-ng-0.8.1/lib/log.c
diff --git a/net/afpfs-ng/files/patch-lib__log.c b/net/afpfs-ng/files/patch-lib__log.c
new file mode 100644
index 000000000000..8adbc79683d2
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__log.c
@@ -0,0 +1,12 @@
+--- lib/log.c.orig 2008-01-30 04:37:58.000000000 +0000
++++ lib/log.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/loop.c afpfs-ng-0.8.1/lib/loop.c
diff --git a/net/afpfs-ng/files/patch-lib__loop.c b/net/afpfs-ng/files/patch-lib__loop.c
new file mode 100644
index 000000000000..330f40c45b9d
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__loop.c
@@ -0,0 +1,24 @@
+--- lib/loop.c.orig 2008-02-18 03:40:11.000000000 +0000
++++ lib/loop.c 2012-10-14 13:11:44.000000000 +0000
+@@ -16,16 +16,16 @@
+ #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
+
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/lowlevel.c afpfs-ng-0.8.1/lib/lowlevel.c
diff --git a/net/afpfs-ng/files/patch-lib__lowlevel.c b/net/afpfs-ng/files/patch-lib__lowlevel.c
new file mode 100644
index 000000000000..95fb611f8190
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__lowlevel.c
@@ -0,0 +1,27 @@
+--- lib/lowlevel.c.orig 2008-02-20 01:33:17.000000000 +0000
++++ lib/lowlevel.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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"
+
+@@ -582,7 +582,7 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/map_def.c afpfs-ng-0.8.1/lib/map_def.c
diff --git a/net/afpfs-ng/files/patch-lib__map_def.c b/net/afpfs-ng/files/patch-lib__map_def.c
new file mode 100644
index 000000000000..34b503d2111e
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__map_def.c
@@ -0,0 +1,12 @@
+--- lib/map_def.c.orig 2007-09-07 13:10:59.000000000 +0000
++++ lib/map_def.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/meta.c afpfs-ng-0.8.1/lib/meta.c
diff --git a/net/afpfs-ng/files/patch-lib__meta.c b/net/afpfs-ng/files/patch-lib__meta.c
new file mode 100644
index 000000000000..54ec43d660eb
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__meta.c
@@ -0,0 +1,18 @@
+--- lib/meta.c.orig 2008-01-04 03:52:44.000000000 +0000
++++ lib/meta.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/midlevel.c afpfs-ng-0.8.1/lib/midlevel.c
diff --git a/net/afpfs-ng/files/patch-lib__midlevel.c b/net/afpfs-ng/files/patch-lib__midlevel.c
new file mode 100644
index 000000000000..44210e670932
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__midlevel.c
@@ -0,0 +1,34 @@
+--- lib/midlevel.c.orig 2008-03-08 16:08:18.000000000 +0000
++++ lib/midlevel.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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"
+@@ -713,7 +713,7 @@
+ {
+
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/proto_attr.c afpfs-ng-0.8.1/lib/proto_attr.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_attr.c b/net/afpfs-ng/files/patch-lib__proto_attr.c
new file mode 100644
index 000000000000..3f3b48afe6b8
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_attr.c
@@ -0,0 +1,27 @@
+--- lib/proto_attr.c.orig 2008-01-30 04:37:58.000000000 +0000
++++ lib/proto_attr.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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
+@@ -166,7 +166,7 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/proto_desktop.c afpfs-ng-0.8.1/lib/proto_desktop.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_desktop.c b/net/afpfs-ng/files/patch-lib__proto_desktop.c
new file mode 100644
index 000000000000..1d3db758ca0f
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_desktop.c
@@ -0,0 +1,27 @@
+--- lib/proto_desktop.c.orig 2008-02-18 03:44:11.000000000 +0000
++++ lib/proto_desktop.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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 */
+@@ -168,7 +168,7 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/proto_directory.c afpfs-ng-0.8.1/lib/proto_directory.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_directory.c b/net/afpfs-ng/files/patch-lib__proto_directory.c
new file mode 100644
index 000000000000..54c1c50f84c4
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_directory.c
@@ -0,0 +1,36 @@
+--- lib/proto_directory.c.orig 2008-02-19 02:39:29.000000000 +0000
++++ lib/proto_directory.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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"
+
+@@ -248,6 +248,7 @@
+
+ return 0;
+ }
++
+ int afp_enumerateext2_reply(struct afp_server *server, char * buf, unsigned int size, void * other)
+ {
+
+@@ -266,8 +267,7 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/proto_files.c afpfs-ng-0.8.1/lib/proto_files.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_files.c b/net/afpfs-ng/files/patch-lib__proto_files.c
new file mode 100644
index 000000000000..1fc6ae1dc457
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_files.c
@@ -0,0 +1,19 @@
+--- lib/proto_files.c.orig 2008-02-18 03:46:18.000000000 +0000
++++ lib/proto_files.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/proto_fork.c afpfs-ng-0.8.1/lib/proto_fork.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_fork.c b/net/afpfs-ng/files/patch-lib__proto_fork.c
new file mode 100644
index 000000000000..08dc13ebe90d
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_fork.c
@@ -0,0 +1,19 @@
+--- lib/proto_fork.c.orig 2008-01-30 04:37:58.000000000 +0000
++++ lib/proto_fork.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/proto_login.c afpfs-ng-0.8.1/lib/proto_login.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_login.c b/net/afpfs-ng/files/patch-lib__proto_login.c
new file mode 100644
index 000000000000..1b9e8e98271b
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_login.c
@@ -0,0 +1,17 @@
+--- lib/proto_login.c.orig 2008-01-30 04:37:59.000000000 +0000
++++ lib/proto_login.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/proto_map.c afpfs-ng-0.8.1/lib/proto_map.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_map.c b/net/afpfs-ng/files/patch-lib__proto_map.c
new file mode 100644
index 000000000000..7aca93e687b7
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_map.c
@@ -0,0 +1,28 @@
+--- lib/proto_map.c.orig 2008-01-30 04:37:59.000000000 +0000
++++ lib/proto_map.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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 {
+@@ -122,7 +122,7 @@
+
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/proto_replyblock.c afpfs-ng-0.8.1/lib/proto_replyblock.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_replyblock.c b/net/afpfs-ng/files/patch-lib__proto_replyblock.c
new file mode 100644
index 000000000000..957e3652b81a
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_replyblock.c
@@ -0,0 +1,16 @@
+--- lib/proto_replyblock.c.orig 2008-02-18 03:46:19.000000000 +0000
++++ lib/proto_replyblock.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/proto_server.c afpfs-ng-0.8.1/lib/proto_server.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_server.c b/net/afpfs-ng/files/patch-lib__proto_server.c
new file mode 100644
index 000000000000..a25cd6dc290d
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_server.c
@@ -0,0 +1,21 @@
+--- lib/proto_server.c.orig 2008-02-19 01:56:21.000000000 +0000
++++ lib/proto_server.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/proto_session.c afpfs-ng-0.8.1/lib/proto_session.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_session.c b/net/afpfs-ng/files/patch-lib__proto_session.c
new file mode 100644
index 000000000000..bc5ce1fecc1b
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_session.c
@@ -0,0 +1,44 @@
+--- lib/proto_session.c.orig 2008-02-18 03:46:19.000000000 +0000
++++ lib/proto_session.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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,
+@@ -39,7 +39,7 @@
+ 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 @@
+ 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 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/proto_volume.c afpfs-ng-0.8.1/lib/proto_volume.c
diff --git a/net/afpfs-ng/files/patch-lib__proto_volume.c b/net/afpfs-ng/files/patch-lib__proto_volume.c
new file mode 100644
index 000000000000..3f64c5c8766e
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__proto_volume.c
@@ -0,0 +1,22 @@
+--- lib/proto_volume.c.orig 2008-02-18 03:47:48.000000000 +0000
++++ lib/proto_volume.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/resource.c afpfs-ng-0.8.1/lib/resource.c
diff --git a/net/afpfs-ng/files/patch-lib__resource.c b/net/afpfs-ng/files/patch-lib__resource.c
new file mode 100644
index 000000000000..8ef7ebe7aa7d
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__resource.c
@@ -0,0 +1,17 @@
+--- lib/resource.c.orig 2008-02-18 03:46:56.000000000 +0000
++++ lib/resource.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/server.c afpfs-ng-0.8.1/lib/server.c
diff --git a/net/afpfs-ng/files/patch-lib__server.c b/net/afpfs-ng/files/patch-lib__server.c
new file mode 100644
index 000000000000..4e40bf780275
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__server.c
@@ -0,0 +1,26 @@
+--- lib/server.c.orig 2008-02-19 01:56:21.000000000 +0000
++++ lib/server.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/status.c afpfs-ng-0.8.1/lib/status.c
diff --git a/net/afpfs-ng/files/patch-lib__status.c b/net/afpfs-ng/files/patch-lib__status.c
new file mode 100644
index 000000000000..1102df7c0902
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__status.c
@@ -0,0 +1,15 @@
+--- lib/status.c.orig 2008-03-08 16:08:38.000000000 +0000
++++ lib/status.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/uams.c afpfs-ng-0.8.1/lib/uams.c
diff --git a/net/afpfs-ng/files/patch-lib__uams.c b/net/afpfs-ng/files/patch-lib__uams.c
new file mode 100644
index 000000000000..e34c19008971
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__uams.c
@@ -0,0 +1,45 @@
+--- lib/uams.c.orig 2008-01-04 03:52:44.000000000 +0000
++++ lib/uams.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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
+@@ -180,7 +180,7 @@
+ 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 @@
+ 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 @@
+ 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 -Naur afpfs-ng-0.8.1.orig/lib/users.c afpfs-ng-0.8.1/lib/users.c
diff --git a/net/afpfs-ng/files/patch-lib__users.c b/net/afpfs-ng/files/patch-lib__users.c
new file mode 100644
index 000000000000..f79ed90b3156
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__users.c
@@ -0,0 +1,14 @@
+--- lib/users.c.orig 2008-02-18 03:48:56.000000000 +0000
++++ lib/users.c 2012-10-14 13:11:34.000000000 +0000
+@@ -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.orig/lib/utils.c afpfs-ng-0.8.1/lib/utils.c
diff --git a/net/afpfs-ng/files/patch-lib__utils.c b/net/afpfs-ng/files/patch-lib__utils.c
new file mode 100644
index 000000000000..56b0ffe757c8
--- /dev/null
+++ b/net/afpfs-ng/files/patch-lib__utils.c
@@ -0,0 +1,25 @@
+--- lib/utils.c.orig 2008-02-18 03:53:37.000000000 +0000
++++ lib/utils.c 2012-10-14 13:11:44.000000000 +0000
+@@ -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;
+@@ -196,7 +196,7 @@
+ maxlen=255;
+
+
+- p=filename+1;
++ p=(char *)filename+1;
+ while ((q=strchr(p,'/'))) {
+ if (q>p+maxlen)
+ return 1;
diff --git a/net/afpfs-ng/pkg-descr b/net/afpfs-ng/pkg-descr
new file mode 100644
index 000000000000..1a99b8ef448d
--- /dev/null
+++ b/net/afpfs-ng/pkg-descr
@@ -0,0 +1,5 @@
+afpfs-ng is an Apple Filing Protocol client that will allow BSD,
+Linux and Mac OS X systems to access files exported from a
+Mac OS system with AFP over TCP.
+
+WWW: http://sourceforge.net/projects/afpfs-ng/
diff --git a/net/afpfs-ng/pkg-plist b/net/afpfs-ng/pkg-plist
new file mode 100644
index 000000000000..0997f7465216
--- /dev/null
+++ b/net/afpfs-ng/pkg-plist
@@ -0,0 +1,16 @@
+lib/libafpclient.la
+lib/libafpclient.so
+lib/libafpclient.so.0
+lib/libafpclient.a
+bin/afpcmd
+bin/afpgetstatus
+include/afpfs-ng/dsi.h
+include/afpfs-ng/afp_protocol.h
+include/afpfs-ng/map_def.h
+include/afpfs-ng/codepage.h
+include/afpfs-ng/midlevel.h
+include/afpfs-ng/libafpclient.h
+include/afpfs-ng/uams_def.h
+include/afpfs-ng/afp.h
+include/afpfs-ng/utils.h
+@dirrm include/afpfs-ng