Skip to content

Commit

Permalink
Merge pull request xbmc#450 from Memphiz/afp4linux
Browse files Browse the repository at this point in the history
Afp4linux
  • Loading branch information
davilla committed Sep 29, 2011
2 parents 26655f2 + bbd0cf3 commit 8659be5
Show file tree
Hide file tree
Showing 11 changed files with 3,783 additions and 17 deletions.
30 changes: 13 additions & 17 deletions configure.in
Original file line number Diff line number Diff line change
Expand Up @@ -996,26 +996,22 @@ fi

# libafpclient
USE_LIBAFPCLIENT=0
if test "$host_vendor" = "apple" ; then
if test "x$use_libafpclient" != "xno"; then
AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
[if test "x$use_libafpclient" = "xyes"; then
AC_MSG_ERROR($libafpclient_not_found)
elif test "x$use_libafpclient" != "xno"; then
AC_MSG_NOTICE($libafpclient_not_found)
use_libafpclient="no"
fi
])
if test "x$use_libafpclient" != "xno"; then
XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
USE_LIBAFPCLIENT=1
if test "x$use_libafpclient" != "xno"; then
AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
[if test "x$use_libafpclient" = "xyes"; then
AC_MSG_ERROR($libafpclient_not_found)
elif test "x$use_libafpclient" != "xno"; then
AC_MSG_NOTICE($libafpclient_not_found)
use_libafpclient="no"
fi
else
AC_MSG_NOTICE($libafpclient_disabled)
])
if test "x$use_libafpclient" != "xno"; then
XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
USE_LIBAFPCLIENT=1
fi
else
use_libafpclient="no"
AC_MSG_NOTICE($libafpclient_disabled)
fi

# libplist for airplay feature
Expand Down
26 changes: 26 additions & 0 deletions lib/afpfs-ng/01-gcrypt.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
diff -ru afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1+iPhone/configure.ac
--- afpfs-ng-0.8.1/configure.ac 2008-03-08 16:23:12.000000000 +0000
+++ afpfs-ng-0.8.1+iPhone/configure.ac 2010-10-24 05:26:15.000000000 +0000
@@ -50,21 +50,6 @@
case $host in
*-*-darwin*)
AC_MSG_CHECKING([for correct gcrypt version])
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM([
- #include <gcrypt.h>
- #include <stdio.h>],[
- char*p= GCRYPT_VERSION;
- unsigned int vers;
- vers=atoi(p)*10000;
- p=strchr(p,'.')+1;
- vers+=atoi(p)*100;
- p=strchr(p,'.')+1;
- vers+=atoi(p);
- if (vers<10400) return 1;
- ])],
- [AC_MSG_RESULT([yes])],
- [AC_MSG_ERROR([version is < 1.4.0])])
AM_CONDITIONAL(HAVE_LIBGCRYPT, true)
AC_DEFINE([HAVE_LIBGCRYPT], [1] )
;;

280 changes: 280 additions & 0 deletions lib/afpfs-ng/02-pointer.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,280 @@
diff -up afpfs-ng-0.8.1/cmdline/getstatus.c.pointer afpfs-ng-0.8.1/cmdline/getstatus.c
--- afpfs-ng-0.8.1/cmdline/getstatus.c.pointer 2011-06-14 17:06:35.000000000 +0200
+++ afpfs-ng-0.8.1/cmdline/getstatus.c 2011-06-14 17:07:25.000000000 +0200
@@ -1,4 +1,5 @@
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <pthread.h>

diff -up afpfs-ng-0.8.1/fuse/client.c.pointer afpfs-ng-0.8.1/fuse/client.c
--- afpfs-ng-0.8.1/fuse/client.c.pointer 2008-03-08 03:44:16.000000000 +0100
+++ afpfs-ng-0.8.1/fuse/client.c 2011-06-14 17:02:15.000000000 +0200
@@ -61,8 +61,9 @@ static int start_afpfsd(void)
snprintf(filename, PATH_MAX,
"/usr/local/bin/%s",AFPFSD_FILENAME);
if (access(filename,X_OK)) {
- snprintf(filename, "/usr/bin/%s",
+ snprintf(filename, sizeof(filename), "/usr/bin/%s",
AFPFSD_FILENAME);
+ filename[sizeof(filename) - 1] = 0;
if (access(filename,X_OK)) {
printf("Could not find server (%s)\n",
filename);
diff -up afpfs-ng-0.8.1/fuse/fuse_int.c.pointer afpfs-ng-0.8.1/fuse/fuse_int.c
--- afpfs-ng-0.8.1/fuse/fuse_int.c.pointer 2008-03-02 06:06:24.000000000 +0100
+++ afpfs-ng-0.8.1/fuse/fuse_int.c 2011-06-14 17:02:15.000000000 +0200
@@ -197,7 +197,7 @@ static int fuse_open(const char *path, s
ret = ml_open(volume,path,flags,&fp);

if (ret==0)
- fi->fh=(void *) fp;
+ fi->fh=(unsigned long) fp;

return ret;
}
diff -up afpfs-ng-0.8.1/include/afpfs-ng/afp.h.pointer afpfs-ng-0.8.1/include/afp.h
--- afpfs-ng-0.8.1/include/afpfs-ng/afp.h.pointer 2008-03-08 17:08:18.000000000 +0100
+++ afpfs-ng-0.8.1/include/afpfs-ng/afp.h 2011-06-14 17:02:15.000000000 +0200
@@ -370,7 +370,7 @@ int afp_unmount_all_volumes(struct afp_s

int afp_opendt(struct afp_volume *volume, unsigned short * refnum);

-int afp_closedt(struct afp_server * server, unsigned short * refnum);
+int afp_closedt(struct afp_server * server, unsigned short refnum);

int afp_getcomment(struct afp_volume *volume, unsigned int did,
const char * pathname, struct afp_comment * comment);
diff -up afpfs-ng-0.8.1/include/afpfs-gn/utils.h.pointer afpfs-ng-0.8.1/include/utils.h
--- afpfs-ng-0.8.1/include/afpfs-ng/utils.h.pointer 2008-02-18 04:33:58.000000000 +0100
+++ afpfs-ng-0.8.1/include/afpfs-ng/utils.h 2011-06-14 17:02:15.000000000 +0200
@@ -8,8 +8,8 @@
#define hton64(x) (x)
#define ntoh64(x) (x)
#else /* BYTE_ORDER == BIG_ENDIAN */
-#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
- (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
+#define hton64(x) ((u_int64_t) (htonl((((unsigned long long)(x)) >> 32) & 0xffffffffLL)) | \
+ (u_int64_t) ((htonl((unsigned long long)(x)) & 0xffffffffLL) << 32))
#define ntoh64(x) (hton64(x))
#endif /* BYTE_ORDER == BIG_ENDIAN */

diff -up afpfs-ng-0.8.1/lib/afp_url.c.pointer afpfs-ng-0.8.1/lib/afp_url.c
--- afpfs-ng-0.8.1/lib/afp_url.c.pointer 2008-03-04 21:16:49.000000000 +0100
+++ afpfs-ng-0.8.1/lib/afp_url.c 2011-06-14 17:02:15.000000000 +0200
@@ -33,7 +33,7 @@ static int check_port(char * port)
static int check_uamname(const char * uam)
{
char * p;
- for (p=uam;*p;p++) {
+ for (p=(char *)uam;*p;p++) {
if (*p==' ') continue;
if ((*p<'A') || (*p>'z')) return -1;
}
@@ -188,7 +188,7 @@ int afp_parse_url(struct afp_url * url,
return -1;

}
- if (p==NULL) p=toparse;
+ if (p==NULL) p=(char *)toparse;

/* Now split on the first / */
if (sscanf(p,"%[^/]/%[^$]",
diff -up afpfs-ng-0.8.1/lib/did.c.pointer afpfs-ng-0.8.1/lib/did.c
--- afpfs-ng-0.8.1/lib/did.c.pointer 2008-02-18 04:39:17.000000000 +0100
+++ afpfs-ng-0.8.1/lib/did.c 2011-06-14 17:02:15.000000000 +0200
@@ -226,7 +226,7 @@ int get_dirid(struct afp_volume * volume


/* Go to the end of last known entry */
- p=path+(p-copy);
+ p=(char *)path+(p-copy);
p2=p;

while ((p=strchr(p+1,'/'))) {
diff -up afpfs-ng-0.8.1/lib/dsi.c.pointer afpfs-ng-0.8.1/lib/dsi.c
--- afpfs-ng-0.8.1/lib/dsi.c.pointer 2008-02-18 04:53:03.000000000 +0100
+++ afpfs-ng-0.8.1/lib/dsi.c 2011-06-14 17:02:15.000000000 +0200
@@ -474,7 +474,7 @@ void dsi_getstatus_reply(struct afp_serv
}
server->flags=ntohs(reply1->flags);

- p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1));
+ p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1));
p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1;

/* Now work our way through the variable bits */
@@ -757,7 +757,7 @@ gotenough:
printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read);
#endif
ret = read(server->fd, (void *)
- (((unsigned int) server->incoming_buffer)+server->data_read),
+ (((unsigned long) server->incoming_buffer)+server->data_read),
amount_to_read);
if (ret<0) return -1;
if (ret==0) {
diff -up afpfs-ng-0.8.1/lib/loop.c.pointer afpfs-ng-0.8.1/lib/loop.c
--- afpfs-ng-0.8.1/lib/loop.c.pointer 2008-02-18 04:40:11.000000000 +0100
+++ afpfs-ng-0.8.1/lib/loop.c 2011-06-14 17:02:15.000000000 +0200
@@ -25,7 +25,7 @@
static unsigned char exit_program=0;

static pthread_t ending_thread;
-static pthread_t main_thread = NULL;
+static pthread_t main_thread = (pthread_t)NULL;

static int loop_started=0;
static pthread_cond_t loop_started_condition;
diff -up afpfs-ng-0.8.1/lib/lowlevel.c.pointer afpfs-ng-0.8.1/lib/lowlevel.c
--- afpfs-ng-0.8.1/lib/lowlevel.c.pointer 2008-02-20 02:33:17.000000000 +0100
+++ afpfs-ng-0.8.1/lib/lowlevel.c 2011-06-14 17:02:15.000000000 +0200
@@ -582,7 +582,7 @@ int ll_getattr(struct afp_volume * volum
if (volume->server->using_version->av_number>=30)
stbuf->st_mode |= fp.unixprivs.permissions;
else
- set_nonunix_perms(stbuf,&fp);
+ set_nonunix_perms(&stbuf->st_mode,&fp);

stbuf->st_uid=fp.unixprivs.uid;
stbuf->st_gid=fp.unixprivs.gid;
diff -up afpfs-ng-0.8.1/lib/midlevel.c.pointer afpfs-ng-0.8.1/lib/midlevel.c
--- afpfs-ng-0.8.1/lib/midlevel.c.pointer 2008-03-08 17:08:18.000000000 +0100
+++ afpfs-ng-0.8.1/lib/midlevel.c 2011-06-14 17:02:15.000000000 +0200
@@ -713,7 +713,7 @@ int ml_write(struct afp_volume * volume,
{

int ret,err=0;
- int totalwritten = 0;
+ size_t totalwritten = 0;
uint64_t sizetowrite, ignored;
unsigned char flags = 0;
unsigned int max_packet_size=volume->server->tx_quantum;
diff -up afpfs-ng-0.8.1/lib/proto_attr.c.pointer afpfs-ng-0.8.1/lib/proto_attr.c
--- afpfs-ng-0.8.1/lib/proto_attr.c.pointer 2008-01-30 05:37:58.000000000 +0100
+++ afpfs-ng-0.8.1/lib/proto_attr.c 2011-06-14 17:02:15.000000000 +0200
@@ -166,7 +166,7 @@ int afp_getextattr(struct afp_volume * v
copy_path(server,p,pathname,strlen(pathname));
unixpath_to_afppath(server,p);
p2=p+sizeof_path_header(server)+strlen(pathname);
- if (((unsigned int ) p2) & 0x1) p2++;
+ if (((unsigned long) p2) & 0x1) p2++;
req2=(void *) p2;

req2->len=htons(namelen);
diff -up afpfs-ng-0.8.1/lib/proto_desktop.c.pointer afpfs-ng-0.8.1/lib/proto_desktop.c
--- afpfs-ng-0.8.1/lib/proto_desktop.c.pointer 2008-02-18 04:44:11.000000000 +0100
+++ afpfs-ng-0.8.1/lib/proto_desktop.c 2011-06-14 17:02:15.000000000 +0200
@@ -168,7 +168,7 @@ int afp_getcomment_reply(struct afp_serv
return 0;
}

-int afp_closedt(struct afp_server * server, unsigned short * refnum)
+int afp_closedt(struct afp_server * server, unsigned short refnum)
{
struct {
struct dsi_header dsi_header __attribute__((__packed__));
diff -up afpfs-ng-0.8.1/lib/proto_directory.c.pointer afpfs-ng-0.8.1/lib/proto_directory.c
--- afpfs-ng-0.8.1/lib/proto_directory.c.pointer 2008-02-19 03:39:29.000000000 +0100
+++ afpfs-ng-0.8.1/lib/proto_directory.c 2011-06-14 17:02:15.000000000 +0200
@@ -248,6 +248,7 @@ int afp_enumerate_reply(struct afp_serve

return 0;
}
+
int afp_enumerateext2_reply(struct afp_server *server, char * buf, unsigned int size, void * other)
{

@@ -266,8 +267,7 @@ int afp_enumerateext2_reply(struct afp_s
char * p = buf + sizeof(*reply);
int i;
char *max=buf+size;
- struct afp_file_info * filebase = NULL, *filecur=NULL, *new_file=NULL;
- void ** x = other;
+ struct afp_file_info * filebase = NULL, *filecur = NULL, *new_file = NULL, **x = (struct afp_file_info **) other;

if (reply->dsi_header.return_code.error_code) {
return reply->dsi_header.return_code.error_code;
diff -up afpfs-ng-0.8.1/lib/proto_map.c.pointer afpfs-ng-0.8.1/lib/proto_map.c
--- afpfs-ng-0.8.1/lib/proto_map.c.pointer 2008-01-30 05:37:59.000000000 +0100
+++ afpfs-ng-0.8.1/lib/proto_map.c 2011-06-14 17:02:15.000000000 +0200
@@ -122,7 +122,7 @@ int afp_mapid_reply(struct afp_server *s

if (reply->header.return_code.error_code!=kFPNoErr) return -1;

- copy_from_pascal_two(name,&reply->name,255);
+ copy_from_pascal_two(name,reply->name,255);

return 0;
}
diff -up afpfs-ng-0.8.1/lib/proto_session.c.pointer afpfs-ng-0.8.1/lib/proto_session.c
--- afpfs-ng-0.8.1/lib/proto_session.c.pointer 2008-02-18 04:46:19.000000000 +0100
+++ afpfs-ng-0.8.1/lib/proto_session.c 2011-06-14 17:02:15.000000000 +0200
@@ -39,7 +39,7 @@ int afp_getsessiontoken(struct afp_serve
switch (type) {
case kLoginWithTimeAndID:
case kReconnWithTimeAndID: {
- uint32_t *p = (void *) (((unsigned int) request)+
+ uint32_t *p = (void *) (((unsigned long) request)+
sizeof(*request));

offset=sizeof(timestamp);
@@ -63,7 +63,7 @@ int afp_getsessiontoken(struct afp_serve
goto error;
}

- data=(void *) (((unsigned int) request)+sizeof(*request)+offset);
+ data=(void *) (((unsigned long) request)+sizeof(*request)+offset);
request->idlength=htonl(datalen);
request->pad=0;
request->type=htons(type);
@@ -127,7 +127,7 @@ int afp_disconnectoldsession(struct afp_
if ((request=malloc(sizeof(*request) + AFP_TOKEN_MAX_LEN))==NULL)
return -1;

- token_data = request + sizeof(*request);
+ token_data = (char *)request + sizeof(*request);

request->type=htons(type);

diff -up afpfs-ng-0.8.1/lib/uams.c.pointer afpfs-ng-0.8.1/lib/uams.c
--- afpfs-ng-0.8.1/lib/uams.c.pointer 2008-01-04 04:52:44.000000000 +0100
+++ afpfs-ng-0.8.1/lib/uams.c 2011-06-14 17:02:15.000000000 +0200
@@ -180,7 +180,7 @@ static int cleartxt_login(struct afp_ser
goto cleartxt_fail;

p += copy_to_pascal(p, username) + 1;
- if ((int)p & 0x1)
+ if ((long)p & 0x1)
len--;
else
p++;
@@ -230,7 +230,7 @@ static int cleartxt_passwd(struct afp_se
goto cleartxt_fail;

p += copy_to_pascal(p, username) + 1;
- if ((int)p & 0x1)
+ if ((long)p & 0x1)
len--;
else
p++;
@@ -580,7 +580,7 @@ static int dhx_login(struct afp_server *
if (ai == NULL)
goto dhx_noctx_fail;
d += copy_to_pascal(ai, username) + 1;
- if (((int)d) % 2)
+ if (((long)d) % 2)
d++;
else
ai_len--;
diff -up afpfs-ng-0.8.1/lib/utils.c.pointer afpfs-ng-0.8.1/lib/utils.c
--- afpfs-ng-0.8.1/lib/utils.c.pointer 2008-02-18 04:53:37.000000000 +0100
+++ afpfs-ng-0.8.1/lib/utils.c 2011-06-14 17:02:15.000000000 +0200
@@ -196,7 +196,7 @@ int invalid_filename(struct afp_server *
maxlen=255;


- p=filename+1;
+ p=(char *)filename+1;
while ((q=strchr(p,'/'))) {
if (q>p+maxlen)
return 1;
25 changes: 25 additions & 0 deletions lib/afpfs-ng/04-boxee1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
--- afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 2008-02-18 04:33:24.000000000 +0100
+++ afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 2011-08-26 21:33:33.000000000 +0200
@@ -6,13 +6,15 @@

struct dsi_request
{
- unsigned short requestid;
- unsigned char subcommand;
- void * other;
- unsigned char wait;
- pthread_cond_t condition_cond;
- struct dsi_request * next;
- int return_code;
+ unsigned short requestid;
+ unsigned char subcommand;
+ void * other;
+ int wait;
+ int done_waiting;
+ pthread_cond_t waiting_cond;
+ pthread_mutex_t waiting_mutex;
+ struct dsi_request * next;
+ int return_code;
};

int dsi_receive(struct afp_server * server, void * data, int size);
Loading

0 comments on commit 8659be5

Please sign in to comment.