Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 305051 Details for
Bug 182046
net-fs/afpfs-ng (new ebuild)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
http://sourceforge.net/projects/afpfs-ng/
00-afpfs-ng-0.8.1-fix_afpfs-ng_includes.patch (text/plain), 88.76 KB, created by
hal
on 2012-03-12 23:22:57 UTC
(
hide
)
Description:
http://sourceforge.net/projects/afpfs-ng/
Filename:
MIME Type:
Creator:
hal
Created:
2012-03-12 23:22:57 UTC
Size:
88.76 KB
patch
obsolete
>diff -Naur afpfs-ng-0.8.1/cmdline/cmdline_afp.c afpfs-ng-0.8.1.patch/cmdline/cmdline_afp.c >--- afpfs-ng-0.8.1/cmdline/cmdline_afp.c 2008-02-19 02:54:19.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/cmdline/cmdline_afp.c 2011-09-10 12:13:50.102124369 +0200 >@@ -3,9 +3,9 @@ > > */ > >-#include "afp.h" >-#include "midlevel.h" >-#include "map_def.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/midlevel.h" >+#include "afpfs-ng/map_def.h" > > #include <string.h> > #include <stdio.h> >diff -Naur afpfs-ng-0.8.1/cmdline/cmdline_testafp.c afpfs-ng-0.8.1.patch/cmdline/cmdline_testafp.c >--- afpfs-ng-0.8.1/cmdline/cmdline_testafp.c 2008-03-04 21:16:50.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/cmdline/cmdline_testafp.c 2011-09-10 12:13:50.102124369 +0200 >@@ -3,8 +3,8 @@ > > */ > >-#include "afp.h" >-#include "midlevel.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/midlevel.h" > > #include "cmdline_main.h" > >diff -Naur afpfs-ng-0.8.1/cmdline/getstatus.c afpfs-ng-0.8.1.patch/cmdline/getstatus.c >--- afpfs-ng-0.8.1/cmdline/getstatus.c 2008-02-18 04:28:09.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/cmdline/getstatus.c 2011-09-10 12:13:50.109124463 +0200 >@@ -2,7 +2,7 @@ > #include <string.h> > #include <pthread.h> > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > > static int getstatus(char * address_string, unsigned int port) > { >diff -Naur afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1.patch/configure.ac >--- afpfs-ng-0.8.1/configure.ac 2008-03-08 17:23:12.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/configure.ac 2011-09-10 12:13:50.109124463 +0200 >@@ -11,6 +11,7 @@ > AC_PROG_CC > AC_PROG_INSTALL > AC_PROG_LIBTOOL >+AM_PROG_CC_C_O > > # Checks for libraries. > # FIXME: Replace `main' with a function in `-lncurses': >@@ -105,7 +106,7 @@ > > > >-AC_CONFIG_FILES([lib/Makefile fuse/Makefile cmdline/Makefile Makefile docs/Makefile]) >+AC_CONFIG_FILES([lib/Makefile fuse/Makefile cmdline/Makefile Makefile include/Makefile include/afpfs-ng/Makefile docs/Makefile]) > > AC_OUTPUT > >diff -Naur afpfs-ng-0.8.1/fuse/client.c afpfs-ng-0.8.1.patch/fuse/client.c >--- afpfs-ng-0.8.1/fuse/client.c 2008-03-08 03:44:16.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/fuse/client.c 2011-09-10 12:13:50.110124477 +0200 >@@ -12,11 +12,11 @@ > #include <grp.h> > > #include "config.h" >-#include <afp.h> >+#include <afpfs-ng/afp.h> > #include "afp_server.h" >-#include "uams_def.h" >-#include "map_def.h" >-#include "libafpclient.h" >+#include "afpfs-ng/uams_def.h" >+#include "afpfs-ng/map_def.h" >+#include "afpfs-ng/libafpclient.h" > > #define default_uam "Cleartxt Passwrd" > >diff -Naur afpfs-ng-0.8.1/fuse/commands.c afpfs-ng-0.8.1.patch/fuse/commands.c >--- afpfs-ng-0.8.1/fuse/commands.c 2008-03-08 17:06:25.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/fuse/commands.c 2011-09-10 12:13:50.110124477 +0200 >@@ -19,15 +19,15 @@ > #include <getopt.h> > #include <signal.h> > >-#include "afp.h" >-#include "dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/dsi.h" > #include "afp_server.h" >-#include "utils.h" >+#include "afpfs-ng/utils.h" > #include "daemon.h" >-#include "uams_def.h" >-#include "codepage.h" >-#include "libafpclient.h" >-#include "map_def.h" >+#include "afpfs-ng/uams_def.h" >+#include "afpfs-ng/codepage.h" >+#include "afpfs-ng/libafpclient.h" >+#include "afpfs-ng/map_def.h" > #include "fuse_int.h" > #include "fuse_error.h" > #include "fuse_internal.h" >diff -Naur afpfs-ng-0.8.1/fuse/daemon.c afpfs-ng-0.8.1.patch/fuse/daemon.c >--- afpfs-ng-0.8.1/fuse/daemon.c 2008-03-04 18:26:05.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/fuse/daemon.c 2011-09-10 12:13:50.110124477 +0200 >@@ -23,11 +23,11 @@ > #include <signal.h> > #include <sys/socket.h> > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > >-#include "dsi.h" >+#include "afpfs-ng/dsi.h" > #include "afp_server.h" >-#include "utils.h" >+#include "afpfs-ng/utils.h" > #include "daemon.h" > #include "commands.h" > >diff -Naur afpfs-ng-0.8.1/fuse/fuse_error.c afpfs-ng-0.8.1.patch/fuse/fuse_error.c >--- afpfs-ng-0.8.1/fuse/fuse_error.c 2008-01-18 05:40:10.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/fuse/fuse_error.c 2011-09-10 12:13:50.111124491 +0200 >@@ -4,7 +4,7 @@ > #include <unistd.h> > #include <string.h> > #include <stdio.h> >-#include "libafpclient.h" >+#include "afpfs-ng/libafpclient.h" > #include "fuse_internal.h" > > #define TMP_FILE "/tmp/fuse_stderr" >diff -Naur afpfs-ng-0.8.1/fuse/fuse_int.c afpfs-ng-0.8.1.patch/fuse/fuse_int.c >--- afpfs-ng-0.8.1/fuse/fuse_int.c 2008-03-02 06:06:24.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/fuse/fuse_int.c 2011-09-10 12:13:50.111124491 +0200 >@@ -18,7 +18,7 @@ > #define FUSE_USE_VERSION 25 > > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > > #include <fuse.h> > #include <stdio.h> >@@ -39,10 +39,10 @@ > #include <pwd.h> > #include <stdarg.h> > >-#include "dsi.h" >-#include "afp_protocol.h" >-#include "codepage.h" >-#include "midlevel.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp_protocol.h" >+#include "afpfs-ng/codepage.h" >+#include "afpfs-ng/midlevel.h" > #include "fuse_error.h" > > /* Uncomment the following line to enable full debugging: */ >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h >--- afpfs-ng-0.8.1/include/afpfs-ng/afp.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h 2011-09-10 12:13:50.112124505 +0200 >@@ -0,0 +1,533 @@ >+ >+#ifndef _AFP_H_ >+#define _AFP_H_ >+ >+#include <arpa/inet.h> >+#include <pthread.h> >+#include <netdb.h> >+#include <sys/statvfs.h> >+#include <pwd.h> >+#include <afpfs-ng/afp_protocol.h> >+#include <afpfs-ng/libafpclient.h> >+#include <sys/types.h> >+#include <sys/stat.h> >+#include <unistd.h> >+#include <netinet/in.h> >+ >+ >+#define AFPFS_VERSION "0.8.1" >+ >+/* This is the maximum AFP version this library supports */ >+#define AFP_MAX_SUPPORTED_VERSION 32 >+ >+/* afp_url is used to pass locations around */ >+struct afp_url { >+ enum {TCPIP,AT} protocol; >+ char username[AFP_MAX_USERNAME_LEN]; >+ char uamname[50]; >+ char password[AFP_MAX_PASSWORD_LEN]; >+ char servername[AFP_SERVER_NAME_UTF8_LEN]; >+ int port; >+ char volumename[AFP_VOLUME_NAME_UTF8_LEN]; >+ char path[AFP_MAX_PATH]; >+ >+ int requested_version; >+ char zone[AFP_ZONE_LEN]; /* Only used for Appletalk */ >+ char volpassword[9];; >+}; >+ >+struct afp_token { >+ unsigned int length; >+ char data[AFP_TOKEN_MAX_LEN]; >+}; >+ >+#define SERVER_MAX_VERSIONS 10 >+#define SERVER_MAX_UAMS 10 >+ >+struct afp_rx_buffer { >+ unsigned int size; >+ unsigned int maxsize; >+ char * data; >+ int errorcode; >+}; >+ >+ >+struct afp_file_info { >+ unsigned short attributes; >+ unsigned int did; >+ unsigned int creation_date; >+ unsigned int modification_date; >+ unsigned int backup_date; >+ unsigned int fileid; >+ unsigned short offspring; >+ char sync; >+ char finderinfo[32]; >+ char name[AFP_MAX_PATH]; >+ char basename[AFP_MAX_PATH]; >+ char translated_name[AFP_MAX_PATH]; >+ struct afp_unixprivs unixprivs; >+ unsigned int accessrights; >+ struct afp_file_info * next; >+ struct afp_file_info * largelist_next; >+ unsigned char isdir; >+ unsigned long long size; >+ unsigned short resourcesize; >+ unsigned int resource; >+ unsigned short forkid; >+ struct afp_icon * icon; >+ int eof; >+}; >+ >+ >+#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_KNOWN 0x1 >+#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_BROKEN 0x2 >+#define VOLUME_EXTRA_FLAGS_SHOW_APPLEDOUBLE 0x4 >+#define VOLUME_EXTRA_FLAGS_VOL_SUPPORTS_UNIX 0x8 >+#define VOLUME_EXTRA_FLAGS_NO_LOCKING 0x10 >+#define VOLUME_EXTRA_FLAGS_IGNORE_UNIXPRIVS 0x20 >+#define VOLUME_EXTRA_FLAGS_READONLY 0x40 >+ >+#define AFP_VOLUME_UNMOUNTED 0 >+#define AFP_VOLUME_MOUNTED 1 >+#define AFP_VOLUME_UNMOUNTING 2 >+ >+struct afp_volume { >+ unsigned short volid; >+ char flags; /* This is from afpGetSrvrParms */ >+ unsigned short attributes; /* This is from VolOpen */ >+ unsigned short signature; /* This is fixed or variable */ >+ unsigned int creation_date; >+ unsigned int modification_date; >+ unsigned int backup_date; >+ struct statvfs stat; >+ unsigned char mounted; >+ char mountpoint[255]; >+ struct afp_server * server; >+ char volume_name[AFP_VOLUME_NAME_LEN]; >+ char volume_name_printable[AFP_VOLUME_NAME_UTF8_LEN]; >+ unsigned short dtrefnum; >+ char volpassword[AFP_VOLPASS_LEN]; >+ unsigned int extra_flags; /* This is an afpfs-ng specific field */ >+ >+ /* Our directory ID cache */ >+ struct did_cache_entry * did_cache_base; >+ pthread_mutex_t did_cache_mutex; >+ >+ /* Our journal of open forks */ >+ struct afp_file_info * open_forks; >+ pthread_mutex_t open_forks_mutex; >+ >+ /* Used to trigger startup */ >+ pthread_cond_t startup_condition_cond; >+ >+ struct { >+ uint64_t hits; >+ uint64_t misses; >+ uint64_t expired; >+ uint64_t force_removed; >+ } did_cache_stats; >+ >+ void * priv; /* This is a private structure for fuse/cmdline, etc */ >+ pthread_t thread; /* This is the per-volume thread */ >+ >+ int mapping; >+ >+}; >+ >+#define SERVER_STATE_CONNECTED 1 >+#define SERVER_STATE_DISCONNECTED 2 >+ >+enum server_type{ >+ AFPFS_SERVER_TYPE_UNKNOWN, >+ AFPFS_SERVER_TYPE_NETATALK, >+ AFPFS_SERVER_TYPE_AIRPORT, >+ AFPFS_SERVER_TYPE_MACINTOSH, >+}; >+ >+#define is_netatalk(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_NETATALK ) >+#define is_airport(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_AIRPORT ) >+#define is_macintosh(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_MACINTOSH ) >+ >+ >+ >+struct afp_versions { >+ char *av_name; >+ int av_number; >+}; >+extern struct afp_versions afp_versions[]; >+ >+struct afp_server { >+ >+ /* Our buffer sizes */ >+ unsigned int tx_quantum; >+ unsigned int rx_quantum; >+ >+ unsigned int tx_delay; >+ >+ /* Connection information */ >+ struct sockaddr_in address; >+ int fd; >+ >+ /* Some stats, for information only */ >+ struct { >+ uint64_t runt_packets; >+ uint64_t incoming_dsi; >+ uint64_t rx_bytes; >+ uint64_t tx_bytes; >+ uint64_t requests_pending; >+ } stats; >+ >+ /* General information */ >+ char server_name[AFP_SERVER_NAME_LEN]; >+ char server_name_utf8[AFP_SERVER_NAME_UTF8_LEN]; >+ char server_name_printable[AFP_SERVER_NAME_UTF8_LEN]; >+ >+ char machine_type[17]; >+ char icon[256]; >+ char signature[16]; >+ unsigned short flags; >+ int connect_state; >+ enum server_type server_type; >+ >+ /* This is the time we connected */ >+ time_t connect_time; >+ >+ /* UAMs */ >+ unsigned int supported_uams; >+ unsigned int using_uam; >+ >+ /* Authentication */ >+ char username[AFP_MAX_USERNAME_LEN]; >+ char password[AFP_MAX_PASSWORD_LEN]; >+ >+ /* Session */ >+ struct afp_token token; >+ char need_resume; >+ >+ /* Versions */ >+ unsigned char requested_version; >+ unsigned char versions[SERVER_MAX_VERSIONS]; >+ struct afp_versions *using_version; >+ >+ /* Volumes */ >+ unsigned char num_volumes; >+ struct afp_volume * volumes; >+ >+ void * dsi; >+ unsigned int exit_flag; >+ >+ /* Our DSI request queue */ >+ pthread_mutex_t requestid_mutex; >+ pthread_mutex_t request_queue_mutex; >+ unsigned short lastrequestid; >+ unsigned short expectedrequestid; >+ struct dsi_request * command_requests; >+ >+ >+ char loginmesg[200]; >+ char servermesg[200]; >+ char path_encoding; >+ >+ /* This is the data for the incoming buffer */ >+ char * incoming_buffer; >+ int data_read; >+ int bufsize; >+ >+ /* And this is for the outgoing queue */ >+ pthread_mutex_t send_mutex; >+ >+ /* This is for user mapping */ >+ struct passwd passwd; >+ unsigned int server_uid, server_gid; >+ int server_gid_valid; >+ >+ struct afp_server *next; >+ >+ /* These are for DSI attention packets */ >+ unsigned int attention_quantum; >+ unsigned int attention_len; >+ char * attention_buffer; >+ >+}; >+ >+struct afp_extattr_info { >+ unsigned int maxsize; >+ unsigned int size; >+ char data[1024]; >+}; >+struct afp_comment { >+ unsigned int maxsize; >+ unsigned int size; >+ char *data; >+}; >+ >+struct afp_icon { >+ unsigned int maxsize; >+ unsigned int size; >+ char *data; >+}; >+ >+#define AFP_DEFAULT_ATTENTION_QUANTUM 1024 >+ >+void afp_unixpriv_to_stat(struct afp_file_info *fp, >+ struct stat *stat); >+ >+int init_uams(void) ; >+ >+unsigned int find_uam_by_name(const char * name); >+char * uam_bitmap_to_string(unsigned int bitmap); >+ >+ >+char * get_uam_names_list(void); >+ >+unsigned int default_uams_mask(void); >+ >+struct afp_volume * find_volume_by_name(struct afp_server * server, >+ const char * volname); >+ >+struct afp_connection_request { >+ unsigned int uam_mask; >+ struct afp_url url; >+}; >+ >+void afp_default_url(struct afp_url *url); >+int afp_parse_url(struct afp_url * url, const char * toparse, int verbose); >+void afp_print_url(struct afp_url * url); >+int afp_url_validate(char * url_string, struct afp_url * valid_url); >+ >+int afp_list_volnames(struct afp_server * server, char * names, int max); >+ >+/* User mapping */ >+int afp_detect_mapping(struct afp_volume * volume); >+ >+/* These are some functions that help with simple status text generation */ >+ >+int afp_status_header(char * text, int * len); >+int afp_status_server(struct afp_server * s,char * text, int * len); >+ >+ >+struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req); >+ >+void * just_end_it_now(void *other); >+void add_fd_and_signal(int fd); >+void loop_disconnect(struct afp_server *s); >+void afp_wait_for_started_loop(void); >+ >+ >+struct afp_versions * pick_version(unsigned char *versions, >+ unsigned char requested) ; >+int pick_uam(unsigned int u1, unsigned int u2); >+ >+int afp_server_login(struct afp_server *server, >+ char * mesg, unsigned int *l, unsigned int max); >+ >+ >+int afp_dologin(struct afp_server *server, >+ unsigned int uam, char * username, char * passwd); >+ >+void afp_free_server(struct afp_server **server); >+ >+struct afp_server * afp_server_init(struct sockaddr_in * address); >+int afp_get_address(void * priv, const char * hostname, unsigned int port, >+ struct sockaddr_in * address); >+ >+ >+int afp_main_loop(int command_fd); >+int afp_main_quick_startup(pthread_t * thread); >+ >+int afp_server_destroy(struct afp_server *s) ; >+int afp_server_reconnect(struct afp_server * s, char * mesg, >+ unsigned int *l, unsigned int max); >+int afp_server_connect(struct afp_server *s, int full); >+ >+struct afp_server * afp_server_complete_connection( >+ void * priv, >+ struct afp_server * server, >+ struct sockaddr_in * address, unsigned char * versions, >+ unsigned int uams, char * username, char * password, >+ unsigned int requested_version, unsigned int uam_mask); >+ >+int afp_connect_volume(struct afp_volume * volume, struct afp_server * server, >+ char * mesg, unsigned int * l, unsigned int max); >+int something_is_mounted(struct afp_server * server); >+ >+int add_cache_entry(struct afp_file_info * file) ; >+struct afp_file_info * get_cache_by_name(char * name); >+struct afp_server * find_server_by_address(struct sockaddr_in * address); >+struct afp_server * find_server_by_signature(char * signature); >+struct afp_server * find_server_by_name(char * name); >+int server_still_valid(struct afp_server * server); >+ >+ >+struct afp_server * get_server_base(void); >+int afp_server_remove(struct afp_server * server); >+ >+int afp_unmount_volume(struct afp_volume * volume); >+int afp_unmount_all_volumes(struct afp_server * server); >+ >+#define volume_is_readonly(x) (((x)->attributes&kReadOnly) || \ >+ ((x)->extra_flags & VOLUME_EXTRA_FLAGS_READONLY)) >+ >+int afp_opendt(struct afp_volume *volume, unsigned short * refnum); >+ >+int afp_closedt(struct afp_server * server, unsigned short * refnum); >+ >+int afp_getcomment(struct afp_volume *volume, unsigned int did, >+ const char * pathname, struct afp_comment * comment); >+ >+int afp_addcomment(struct afp_volume *volume, unsigned int did, >+ const char * pathname, char * comment,uint64_t *size); >+ >+int afp_geticon(struct afp_volume * volume, unsigned int filecreator, >+ unsigned int filetype, unsigned char icontype, >+ unsigned short length, struct afp_icon * icon); >+ >+/* Things you want to do to a server */ >+ >+int afp_getsrvrmsg(struct afp_server *server, unsigned short messagetype,unsigned char utf8, unsigned char block, char * mesg); >+ >+int afp_login(struct afp_server *server, char * uaname, >+ char * userauthinfo, unsigned int userauthinfo_len, >+ struct afp_rx_buffer *rx); >+ >+int afp_changepassword(struct afp_server *server, char * uaname, >+ char * userauthinfo, unsigned int userauthinfo_len, >+ struct afp_rx_buffer *rx); >+ >+int afp_logincont(struct afp_server *server, unsigned short id, >+ char * userauthinfo, unsigned int userauthinfo_len, >+ struct afp_rx_buffer *rx); >+ >+int afp_getsessiontoken(struct afp_server * server, int type, >+ unsigned int timestamp, struct afp_token *outgoing_token, >+ struct afp_token * incoming_token); >+ >+int afp_getsrvrparms(struct afp_server *server); >+ >+int afp_logout(struct afp_server *server,unsigned char wait); >+ >+int afp_mapname(struct afp_server * server, unsigned char subfunction, >+ char * name, unsigned int * id); >+ >+int afp_mapid(struct afp_server * server, unsigned char subfunction, >+ unsigned int id, char *name); >+ >+int afp_getuserinfo(struct afp_server * server, int thisuser, >+ unsigned int userid, unsigned short bitmap, >+ unsigned int *newuid, unsigned int *newgid); >+ >+int afp_zzzzz(struct afp_server *server); >+ >+int afp_volopen(struct afp_volume * volume, >+ unsigned short bitmap, char * password); >+ >+int afp_flush(struct afp_volume * volume); >+ >+int afp_getfiledirparms(struct afp_volume *volume, unsigned int did, >+ unsigned int filebitmap, unsigned int dirbitmap, const char * pathname, >+ struct afp_file_info *fp); >+ >+int afp_enumerate(struct afp_volume * volume, >+ unsigned int dirid, >+ unsigned int filebitmap, unsigned int dirbitmap, >+ unsigned short reqcount, >+ unsigned short startindex, >+ char * path, >+ struct afp_file_info ** file_p); >+ >+int afp_enumerateext2(struct afp_volume * volume, >+ unsigned int dirid, >+ unsigned int filebitmap, unsigned int dirbitmap, >+ unsigned short reqcount, >+ unsigned long startindex, >+ char * path, >+ struct afp_file_info ** file_p); >+ >+int afp_openfork(struct afp_volume * volume, >+ unsigned char forktype, >+ unsigned int dirid, >+ unsigned short accessmode, >+ char * filename, >+ struct afp_file_info *fp); >+ >+int afp_read(struct afp_volume * volume, unsigned short forkid, >+ uint32_t offset, >+ uint32_t count, struct afp_rx_buffer * rx); >+ >+int afp_readext(struct afp_volume * volume, unsigned short forkid, >+ uint64_t offset, >+ uint64_t count, struct afp_rx_buffer * rx); >+ >+int afp_getvolparms(struct afp_volume * volume, unsigned short bitmap); >+ >+ >+int afp_createdir(struct afp_volume * volume, unsigned int dirid, const char * pathname, unsigned int *did_p); >+ >+int afp_delete(struct afp_volume * volume, >+ unsigned int dirid, char * pathname); >+ >+ >+int afp_createfile(struct afp_volume * volume, unsigned char flag, >+ unsigned int did, char * pathname); >+ >+int afp_write(struct afp_volume * volume, unsigned short forkid, >+ uint32_t offset, uint32_t reqcount, >+ char * data, uint32_t * written); >+ >+int afp_writeext(struct afp_volume * volume, unsigned short forkid, >+ uint64_t offset, uint64_t reqcount, >+ char * data, uint64_t * written); >+ >+int afp_flushfork(struct afp_volume * volume, unsigned short forkid); >+ >+int afp_closefork(struct afp_volume * volume, unsigned short forkid); >+int afp_setfileparms(struct afp_volume * volume, >+ unsigned int dirid, const char * pathname, unsigned short bitmap, >+ struct afp_file_info *fp); >+int afp_setfiledirparms(struct afp_volume * volume, >+ unsigned int dirid, const char * pathname, unsigned short bitmap, >+ struct afp_file_info *fp); >+ >+int afp_setdirparms(struct afp_volume * volume, >+ unsigned int dirid, const char * pathname, unsigned short bitmap, >+ struct afp_file_info *fp); >+ >+int afp_volclose(struct afp_volume * volume); >+ >+ >+int afp_setforkparms(struct afp_volume *volume, >+ unsigned short forkid, unsigned short bitmap, unsigned long len); >+ >+int afp_byterangelock(struct afp_volume * volume, >+ unsigned char flag, >+ unsigned short forkid, >+ uint32_t offset, >+ uint32_t len, uint32_t *generated_offset); >+ >+int afp_byterangelockext(struct afp_volume * volume, >+ unsigned char flag, >+ unsigned short forkid, >+ uint64_t offset, >+ uint64_t len, uint64_t *generated_offset); >+ >+int afp_moveandrename(struct afp_volume *volume, >+ unsigned int src_did, >+ unsigned int dst_did, >+ char * src_path, char * dst_path, char *new_name); >+ >+int afp_rename(struct afp_volume * volume, >+ unsigned int dirid, >+ char * path_from, char * path_to); >+ >+int afp_listextattr(struct afp_volume * volume, >+ unsigned int dirid, unsigned short bitmap, >+ char * pathname, struct afp_extattr_info * info); >+ >+/* This is a currently undocumented command */ >+int afp_newcommand76(struct afp_volume * volume, unsigned int dlen, char * data); >+ >+/* For debugging */ >+char * afp_get_command_name(char code); >+ >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp_protocol.h >--- afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp_protocol.h 2011-09-10 12:13:50.112124505 +0200 >@@ -0,0 +1,361 @@ >+ >+#ifndef _AFP_PROTOCOL_H_ >+#define _AFP_PROTOCOL_H_ >+ >+#include <sys/types.h> >+#include <stddef.h> >+#include <unistd.h> >+#include <stdint.h> >+ >+/* This file defines constants for the Apple File Protocol. >+ All page references are from "Apple Filing Protocol Programming" version 3.2. >+ except where noted. >+*/ >+ >+#define AFP_SERVER_NAME_LEN 33 >+#define AFP_SERVER_NAME_UTF8_LEN 255 >+#define AFP_VOLUME_NAME_LEN 33 >+#define AFP_VOLUME_NAME_UTF8_LEN 33 >+#define AFP_SIGNATURE_LEN 16 >+#define AFP_MACHINETYPE_LEN 33 >+#define AFP_LOGINMESG_LEN 200 >+#define AFP_VOLPASS_LEN 8 >+#define AFP_HOSTNAME_LEN 255 >+/* This is actually just a guess, and only used for appletalk */ >+#define AFP_ZONE_LEN 255 >+ >+#define AFP_SERVER_ICON_LEN 256 >+ >+ >+#define AFP_MAX_USERNAME_LEN 127 >+#define AFP_MAX_PASSWORD_LEN 127 >+ >+ >+/* This is the maximum length of any UAM string */ >+#define AFP_UAM_LENGTH 24 >+ >+/* This is the maximum length of any path description */ >+#define AFP_MAX_PATH 768 >+ >+#define AFP_VOL_FLAT 1 >+#define AFP_VOL_FIXED 2 >+#define AFP_VOL_VARIABLE 3 >+ >+/* The root directory ID, p.26 */ >+ >+#define AFP_ROOT_DID 2 >+ >+/* Path type constants, p.249 */ >+ >+enum { >+kFPShortName = 1, >+kFPLongName = 2, >+kFPUTF8Name = 3 >+}; >+ >+/* fork types */ >+ >+#define AFP_FORKTYPE_DATA 0x0 >+#define AFP_FORKTYPE_RESOURCE 0x80 >+ >+/* openfork access modes, from p.196 */ >+ >+#define AFP_OPENFORK_ALLOWREAD 1 >+#define AFP_OPENFORK_ALLOWWRITE 2 >+#define AFP_OPENFORK_DENYREAD 0x10 >+#define AFP_OPENFORK_DENYWRITE 0x20 >+ >+/* Message type for getsrvmesg, p. 169*/ >+ >+typedef enum { >+ AFPMESG_LOGIN = 0, >+ AFPMESG_SERVER = 1 >+} afpmessage_t; >+ >+/* Message bitmap for getsrvrmsg */ >+ >+#define AFP_GETSRVRMSG_UTF8 0x2 >+#define AFP_GETSRVRMSG_GETMSG 0x1 >+ >+ >+/* Maximum Version length, p.17 */ >+#define AFP_MAX_VERSION_LENGTH 16 >+ >+/* Maximum length of a token, this is undocumented */ >+#define AFP_TOKEN_MAX_LEN 256 >+ >+/* The maximum size of a file for AFP 2 */ >+#define AFP_MAX_AFP2_FILESIZE (4294967296) >+ >+/* Unix privs, p.240 */ >+ >+struct afp_unixprivs { >+ uint32_t uid __attribute__((__packed__)); >+ uint32_t gid __attribute__((__packed__)); >+ uint32_t permissions __attribute__((__packed__)); >+ uint32_t ua_permissions __attribute__((__packed__)); >+ >+}; >+ >+ >+/* AFP Volume attributes bitmap, p.241 */ >+ >+enum { >+ kReadOnly = 0x01, >+ kHasVolumePassword = 0x02, >+ kSupportsFileIDs = 0x04, >+ kSupportsCatSearch = 0x08, >+ kSupportsBlankAccessPrivs = 0x10, >+ kSupportsUnixPrivs = 0x20, >+ kSupportsUTF8Names = 0x40, >+ kNoNetworkUserIDs = 0x80, >+ kDefaultPrivsFromParent = 0x100, >+ kNoExchangeFiles = 0x200, >+ kSupportsExtAttrs = 0x400, >+ kSupportsACLs=0x800 >+}; >+ >+/* AFP file creation constantes, p.250 */ >+enum { >+kFPSoftCreate = 0, >+kFPHardCreate = 0x80 >+}; >+ >+/* AFP Directory attributes, taken from the protocol guide p.236 */ >+ >+enum { >+ kFPAttributeBit = 0x1, >+ kFPParentDirIDBit = 0x2, >+ kFPCreateDateBit = 0x4, >+ kFPModDateBit = 0x8, >+ kFPBackupDateBit = 0x10, >+ kFPFinderInfoBit = 0x20, >+ kFPLongNameBit = 0x40, >+ kFPShortNameBit = 0x80, >+ kFPNodeIDBit = 0x100, >+ kFPOffspringCountBit = 0x0200, >+ kFPOwnerIDBit = 0x0400, >+ kFPGroupIDBit = 0x0800, >+ kFPAccessRightsBit = 0x1000, >+ kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier >+ kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later >+ kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later >+}; >+ >+/* AFP File bitmap, p.238. These are the ones not in the AFP Directory >+ attributes map. */ >+ >+enum { >+ kFPDataForkLenBit = 0x0200, >+ kFPRsrcForkLenBit = 0x0400, >+ kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later >+ kFPLaunchLimitBit = 0x1000, >+ kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later >+}; >+ >+/* AFP Extended Attributes Bitmap, p.238 */ >+ >+enum { >+ kXAttrNoFollow = 0x1, >+ kXAttrCreate = 0x2, >+ kXAttrREplace=0x4 >+}; >+ >+ >+/* AFP function codes */ >+enum AFPFunction >+{ >+ afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork, >+ afpCopyFile, afpCreateDir, afpCreateFile, >+ afpDelete, afpEnumerate, afpFlush, afpFlushFork, >+ afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms, >+ afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID, >+ afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork, >+ afpRead, afpRename, afpSetDirParms, afpSetFileParms, >+ afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms, >+ afpSetFileDirParms, afpChangePassword, >+ afpGetUserInfo=37,afpGetSrvrMsg = 38, >+ afpOpenDT=48, >+ afpCloseDT=49, >+ afpGetIcon=51, afpGetIconInfo=52, >+ afpAddComment=56, afpRemoveComment=57, afpGetComment=58, >+ afpByteRangeLockExt=59, afpReadExt, afpWriteExt, >+ afpGetAuthMethods=62, >+ afp_LoginExt=63, >+ afpGetSessionToken=64, >+ afpDisconnectOldSession=65, >+ afpEnumerateExt=66, >+ afpCatSearchExt = 67, >+ afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr, >+ afpRemoveExtAttr , afpListExtAttrs, >+ afpZzzzz = 122, >+ afpAddIcon=192, >+}; >+ >+/* AFP Volume bitmap. Take from 242 of the protocol guide. */ >+enum { >+ kFPBadVolPre222Bitmap = 0xFe00, >+ kFPBadVolBitmap = 0xF000, >+ kFPVolAttributeBit = 0x1, >+ kFPVolSignatureBit = 0x2, >+ kFPVolCreateDateBit = 0x4, >+ kFPVolModDateBit = 0x8, >+ kFPVolBackupDateBit = 0x10, >+ kFPVolIDBit = 0x20, >+ kFPVolBytesFreeBit = 0x40, >+ kFPVolBytesTotalBit = 0x80, >+ kFPVolNameBit = 0x100, >+ kFPVolExtBytesFreeBit = 0x200, >+ kFPVolExtBytesTotalBit = 0x400, >+ kFPVolBlockSizeBit = 0x800 >+}; >+ >+/* AFP Attention Codes -- 4 bits */ >+#define AFPATTN_SHUTDOWN (1 << 15) /* shutdown/disconnect */ >+#define AFPATTN_CRASH (1 << 14) /* server crashed */ >+#define AFPATTN_MESG (1 << 13) /* server has message */ >+#define AFPATTN_NORECONNECT (1 << 12) /* don't reconnect */ >+/* server notification */ >+#define AFPATTN_NOTIFY (AFPATTN_MESG | AFPATTN_NORECONNECT) >+ >+/* extended bitmap -- 12 bits. volchanged is only useful w/ a server >+ * notification, and time is only useful for shutdown. */ >+#define AFPATTN_VOLCHANGED (1 << 0) /* volume has changed */ >+#define AFPATTN_TIME(x) ((x) & 0xfff) /* time in minutes */ >+ >+#define kFPNoErr 0 >+ >+/* AFP result codes, p252 */ >+#define kASPSessClosed -1072 >+#define kFPAccessDenied -5000 >+#define kFPAuthContinue -5001 >+#define kFPBadUAM -5002 >+#define kFPBadVersNum -5003 >+#define kFPBitmapErr -5004 >+#define kFPCantMove -5005 >+#define kFPDenyConflict -5006 >+#define kFPDirNotEmpty -5007 >+#define kFPDiskFull -5008 >+#define kFPEOFErr -5009 >+#define kFPFileBusy -5010 >+#define kFPFlatVol -5011 >+#define kFPItemNotFound -5012 >+#define kFPLockErr -5013 >+#define kFPMiscErr -5014 >+#define kFPNoMoreLocks -5015 >+#define kFPNoServer -5016 >+#define kFPObjectExists -5017 >+#define kFPObjectNotFound -5018 >+#define kFPParamErr -5019 >+#define kFPRangeNotLocked -5020 >+#define kFPRangeOverlap -5021 >+#define kFPSessClosed -5022 >+#define kFPUserNotAuth -5023 >+#define kFPCallNotSupported -5024 >+#define kFPObjectTypeErr -5025 >+#define kFPTooManyFilesOpen -5026 >+#define kFPServerGoingDown -5027 >+#define kFPCantRename -5028 >+#define kFPDirNotFound -5029 >+#define kFPIconTypeError -5030 >+#define kFPVolLocked -5031 >+#define kFPObjectLocked -5032 >+#define kFPContainsSharedErr -5033 >+#define kFPIDNotFound -5034 >+#define kFPIDExists -5035 >+#define kFPDiffVolErr -5036 >+#define kFPCatalogChanged -5037 >+#define kFPSameObjectErr -5038 >+#define kFPBadIDErr -5039 >+#define kFPPwdSameErr -5040 >+#define kFPPwdTooShortErr -5041 >+#define kFPPwdExpiredErr -5042 >+#define kFPInsideSharedErr -5043 >+#define kFPInsideTrashErr -5044 >+#define kFPPwdNeedsChangeErr -5045 >+#define kFPPwdPolicyErr -5046 >+#define kFPDiskQuotaExceeded â5047 >+ >+ >+ >+/* These flags determine to lock or unlock in ByteRangeLock(Ext) */ >+ >+enum { >+ByteRangeLock_Lock = 0, >+ByteRangeLock_Unlock = 1 >+}; >+ >+/* These flags are used in volopen and getsrvrparm replies, p.171 */ >+ >+#define HasConfigInfo 0x1 >+#define HasPassword 0x80 >+ >+/* These are the subfunction for kFPMapID, as per p.248 */ >+ >+enum { >+kUserIDToName = 1, >+kGroupIDToName = 2, >+kUserIDToUTF8Name = 3, >+kGroupIDToUTF8Name = 4, >+kUserUUIDToUTF8Name = 5, >+kGroupUUIDToUTF8Name = 6 >+}; >+ >+ >+/* These are the subfunction flags described in the FPMapName command, p.286. >+ Note that this is different than what's described on p. 186. */ >+ >+enum { >+kNameToUserID = 1, >+kNameToGroupID = 2, >+kUTF8NameToUserID = 3, >+kUTF8NameToGroupID = 4, >+kUTF8NameToUserUUID = 5, >+kUTF8NameToGroupUUID = 6 >+}; >+ >+/* These are bits for FPGetUserInfo, p.173. */ >+#define kFPGetUserInfo_USER_ID 1 >+#define kFPGetUserInfo_PRI_GROUPID 2 >+ >+/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */ >+ >+enum { >+ kSupportsCopyfile = 0x01, >+ kSupportsChgPwd = 0x02, >+ kDontAllowSavePwd = 0x04, >+ kSupportsSrvrMsg = 0x08, >+ kSrvrSig = 0x10, >+ kSupportsTCP = 0x20, >+ kSupportsSrvrNotify = 0x40, >+ kSupportsReconnect = 0x80, >+ kSupportsDirServices = 0x100, >+ kSupportsUTF8SrvrName = 0x200, >+ kSupportsUUIDs = 0x400, >+ kSupportsSuperClient = 0x8000 >+}; >+ >+ >+/* p.247 */ >+ >+enum { >+ kLoginWithoutID = 0, >+ kLoginWithID = 1, >+ kReconnWithID = 2, >+ kLoginWithTimeAndID = 3, >+ kReconnWithTimeAndID = 4, >+ kRecon1Login = 5, >+ kRecon1ReconnectLogin = 6, >+ kRecon1Refresh = 7, kGetKerberosSessionKey = 8 >+}; >+ >+ >+#define AFP_CHMOD_ALLOWED_BITS_22 \ >+ (S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG ) >+ >+ >+#endif >+ >+ >+ >+ >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/codepage.h afpfs-ng-0.8.1.patch/include/afpfs-ng/codepage.h >--- afpfs-ng-0.8.1/include/afpfs-ng/codepage.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/codepage.h 2011-09-10 12:13:50.113124518 +0200 >@@ -0,0 +1,11 @@ >+#ifndef __CODE_PAGE_H_ >+#define __CODE_PAGE_H_ >+int convert_utf8dec_to_utf8pre(const char *src, int src_len, >+ char * dest, int dest_len); >+int convert_utf8pre_to_utf8dec(const char * src, int src_len, >+ char * dest, int dest_len); >+int convert_path_to_unix(char encoding, char * dest, >+ char * src, int dest_len); >+int convert_path_to_afp(char encoding, char * dest, >+ char * src, int dest_len); >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/dsi.h afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h >--- afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h 2011-09-10 12:13:50.115124544 +0200 >@@ -0,0 +1,33 @@ >+ >+#ifndef __DSI_H_ >+#define __DSI_H_ >+ >+#include "afpfs-ng/afp.h" >+ >+struct dsi_request >+{ >+ unsigned short requestid; >+ unsigned char subcommand; >+ void * other; >+ unsigned char wait; >+ pthread_cond_t condition_cond; >+ struct dsi_request * next; >+ int return_code; >+}; >+ >+int dsi_receive(struct afp_server * server, void * data, int size); >+int dsi_getstatus(struct afp_server * server); >+ >+int dsi_opensession(struct afp_server *server); >+ >+int dsi_send(struct afp_server *server, char * msg, int size,int wait,unsigned char subcommand, void ** other); >+struct dsi_session * dsi_create(struct afp_server *server); >+int dsi_restart(struct afp_server *server); >+int dsi_recv(struct afp_server * server); >+ >+#define DSI_BLOCK_TIMEOUT -1 >+#define DSI_DONT_WAIT 0 >+#define DSI_DEFAULT_TIMEOUT 5 >+ >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h afpfs-ng-0.8.1.patch/include/afpfs-ng/libafpclient.h >--- afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/libafpclient.h 2011-09-10 12:13:50.115124544 +0200 >@@ -0,0 +1,50 @@ >+ >+#ifndef __CLIENT_H_ >+#define __CLIENT_H_ >+ >+#include <unistd.h> >+#include <syslog.h> >+ >+#define MAX_CLIENT_RESPONSE 2048 >+ >+ >+enum loglevels { >+ AFPFSD, >+}; >+ >+struct afp_server; >+struct afp_volume; >+ >+struct libafpclient { >+ int (*unmount_volume) (struct afp_volume * volume); >+ void (*log_for_client)(void * priv, >+ enum loglevels loglevel, int logtype, const char *message); >+ void (*forced_ending_hook)(void); >+ int (*scan_extra_fds)(int command_fd,fd_set *set, int * max_fd); >+ void (*loop_started)(void); >+} ; >+ >+extern struct libafpclient * libafpclient; >+ >+void libafpclient_register(struct libafpclient * tmpclient); >+ >+ >+void signal_main_thread(void); >+ >+/* These are logging functions */ >+ >+#define MAXLOGSIZE 2048 >+ >+#define LOG_METHOD_SYSLOG 1 >+#define LOG_METHOD_STDOUT 2 >+ >+void set_log_method(int m); >+ >+ >+void log_for_client(void * priv, >+ enum loglevels loglevel, int logtype, char * message,...); >+ >+void stdout_log_for_client(void * priv, >+ enum loglevels loglevel, int logtype, const char *message); >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/Makefile.am afpfs-ng-0.8.1.patch/include/afpfs-ng/Makefile.am >--- afpfs-ng-0.8.1/include/afpfs-ng/Makefile.am 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/Makefile.am 2011-09-10 12:13:50.115124544 +0200 >@@ -0,0 +1,6 @@ >+## Process this file with automake to produce Makefile.in >+ >+afpfsincludedir = $(includedir)/afpfs-ng >+ >+afpfsinclude_HEADERS = afp.h afp_protocol.h libafpclient.h >+nodist_afpfsinclude_HEADERS = codepage.h dsi.h map_def.h midlevel.h uams_def.h utils.h >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/map_def.h afpfs-ng-0.8.1.patch/include/afpfs-ng/map_def.h >--- afpfs-ng-0.8.1/include/afpfs-ng/map_def.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/map_def.h 2011-09-10 12:13:50.116124557 +0200 >@@ -0,0 +1,15 @@ >+#ifndef __MAP_H_ >+#define __MAP_H_ >+ >+#include "afpfs-ng/afp.h" >+ >+#define AFP_MAPPING_UNKNOWN 0 >+#define AFP_MAPPING_COMMON 1 >+#define AFP_MAPPING_LOGINIDS 2 >+#define AFP_MAPPING_NAME 3 >+ >+unsigned int map_string_to_num(char * name); >+char * get_mapping_name(struct afp_volume * volume); >+ >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h afpfs-ng-0.8.1.patch/include/afpfs-ng/midlevel.h >--- afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/midlevel.h 2011-09-10 12:13:50.116124557 +0200 >@@ -0,0 +1,64 @@ >+#ifndef __MIDLEVEL_H_ >+#define __MIDLEVEL_H_ >+ >+#include <utime.h> >+#include "afpfs-ng/afp.h" >+ >+int ml_open(struct afp_volume * volume, const char *path, int flags, >+ struct afp_file_info **newfp); >+ >+int ml_creat(struct afp_volume * volume, const char *path,mode_t mode); >+ >+int ml_readdir(struct afp_volume * volume, >+ const char *path, >+ struct afp_file_info **base); >+ >+int ml_read(struct afp_volume * volume, const char *path, >+ char *buf, size_t size, off_t offset, >+ struct afp_file_info *fp, int * eof); >+ >+int ml_chmod(struct afp_volume * vol, const char * path, mode_t mode); >+ >+int ml_unlink(struct afp_volume * vol, const char *path); >+ >+int ml_mkdir(struct afp_volume * vol, const char * path, mode_t mode); >+ >+int ml_close(struct afp_volume * volume, const char * path, >+ struct afp_file_info * fp); >+ >+int ml_getattr(struct afp_volume * volume, const char *path, >+ struct stat *stbuf); >+ >+int ml_write(struct afp_volume * volume, const char * path, >+ const char *data, size_t size, off_t offset, >+ struct afp_file_info * fp, uid_t uid, >+ gid_t gid); >+ >+int ml_readlink(struct afp_volume * vol, const char * path, >+ char *buf, size_t size); >+ >+int ml_rmdir(struct afp_volume * vol, const char *path); >+ >+int ml_chown(struct afp_volume * vol, const char * path, >+ uid_t uid, gid_t gid); >+ >+int ml_truncate(struct afp_volume * vol, const char * path, off_t offset); >+ >+int ml_utime(struct afp_volume * vol, const char * path, >+ struct utimbuf * timebuf); >+ >+int ml_symlink(struct afp_volume *vol, const char * path1, const char * path2); >+ >+int ml_rename(struct afp_volume * vol, >+ const char * path_from, const char * path_to); >+ >+int ml_statfs(struct afp_volume * vol, const char *path, struct statvfs *stat); >+ >+void afp_ml_filebase_free(struct afp_file_info **filebase); >+ >+int ml_passwd(struct afp_server *server, >+ char * username, char * oldpasswd, char * newpasswd); >+ >+ >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h afpfs-ng-0.8.1.patch/include/afpfs-ng/uams_def.h >--- afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/uams_def.h 2011-09-10 12:13:50.116124557 +0200 >@@ -0,0 +1,16 @@ >+#ifndef __UAM_DEFS_H_ >+#define __UAM_DEFS_H_ >+ >+#define UAM_NOUSERAUTHENT 0x1 >+#define UAM_CLEARTXTPASSWRD 0x2 >+#define UAM_RANDNUMEXCHANGE 0x4 >+#define UAM_2WAYRANDNUM 0x8 >+#define UAM_DHCAST128 0x10 >+#define UAM_CLIENTKRB 0x20 >+#define UAM_DHX2 0x40 >+#define UAM_RECON1 0x80 >+ >+int uam_string_to_bitmap(char * name); >+char * uam_bitmap_to_string(unsigned int bitmap); >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/utils.h afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h >--- afpfs-ng-0.8.1/include/afpfs-ng/utils.h 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h 2011-09-10 12:13:50.116124557 +0200 >@@ -0,0 +1,43 @@ >+#ifndef __UTILS_H_ >+#define __UTILS_H_ >+#include <stdio.h> >+ >+#include "afpfs-ng/afp.h" >+ >+#if BYTE_ORDER == BIG_ENDIAN >+#define hton64(x) (x) >+#define ntoh64(x) (x) >+#else /* BYTE_ORDER == BIG_ENDIAN */ >+#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \ >+ (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32)) >+#define ntoh64(x) (hton64(x)) >+#endif /* BYTE_ORDER == BIG_ENDIAN */ >+ >+#define min(a,b) (((a)<(b)) ? (a) : (b)) >+#define max(a,b) (((a)>(b)) ? (a) : (b)) >+ >+ >+ >+unsigned char unixpath_to_afppath( >+ struct afp_server * server, >+ char * buf); >+ >+unsigned char sizeof_path_header(struct afp_server * server); >+ >+ >+ >+unsigned char copy_from_pascal(char *dest, char *pascal,unsigned int max_len) ; >+unsigned short copy_from_pascal_two(char *dest, char *pascal,unsigned int max_len); >+ >+unsigned char copy_to_pascal(char *dest, const char *src); >+unsigned short copy_to_pascal_two(char *dest, const char *src); >+ >+void copy_path(struct afp_server * server, char * dest, const char * pathname, unsigned char len); >+ >+ >+char * create_path(struct afp_server * server, char * pathname, unsigned short * len); >+ >+ >+int invalid_filename(struct afp_server * server, const char * filename); >+ >+#endif >diff -Naur afpfs-ng-0.8.1/include/afp.h afpfs-ng-0.8.1.patch/include/afp.h >--- afpfs-ng-0.8.1/include/afp.h 2008-03-08 17:08:18.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afp.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,533 +0,0 @@ >- >-#ifndef _AFP_H_ >-#define _AFP_H_ >- >-#include <arpa/inet.h> >-#include <pthread.h> >-#include <netdb.h> >-#include <sys/statvfs.h> >-#include <pwd.h> >-#include <afp_protocol.h> >-#include <libafpclient.h> >-#include <sys/types.h> >-#include <sys/stat.h> >-#include <unistd.h> >-#include <netinet/in.h> >- >- >-#define AFPFS_VERSION "0.8.1" >- >-/* This is the maximum AFP version this library supports */ >-#define AFP_MAX_SUPPORTED_VERSION 32 >- >-/* afp_url is used to pass locations around */ >-struct afp_url { >- enum {TCPIP,AT} protocol; >- char username[AFP_MAX_USERNAME_LEN]; >- char uamname[50]; >- char password[AFP_MAX_PASSWORD_LEN]; >- char servername[AFP_SERVER_NAME_UTF8_LEN]; >- int port; >- char volumename[AFP_VOLUME_NAME_UTF8_LEN]; >- char path[AFP_MAX_PATH]; >- >- int requested_version; >- char zone[AFP_ZONE_LEN]; /* Only used for Appletalk */ >- char volpassword[9];; >-}; >- >-struct afp_token { >- unsigned int length; >- char data[AFP_TOKEN_MAX_LEN]; >-}; >- >-#define SERVER_MAX_VERSIONS 10 >-#define SERVER_MAX_UAMS 10 >- >-struct afp_rx_buffer { >- unsigned int size; >- unsigned int maxsize; >- char * data; >- int errorcode; >-}; >- >- >-struct afp_file_info { >- unsigned short attributes; >- unsigned int did; >- unsigned int creation_date; >- unsigned int modification_date; >- unsigned int backup_date; >- unsigned int fileid; >- unsigned short offspring; >- char sync; >- char finderinfo[32]; >- char name[AFP_MAX_PATH]; >- char basename[AFP_MAX_PATH]; >- char translated_name[AFP_MAX_PATH]; >- struct afp_unixprivs unixprivs; >- unsigned int accessrights; >- struct afp_file_info * next; >- struct afp_file_info * largelist_next; >- unsigned char isdir; >- unsigned long long size; >- unsigned short resourcesize; >- unsigned int resource; >- unsigned short forkid; >- struct afp_icon * icon; >- int eof; >-}; >- >- >-#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_KNOWN 0x1 >-#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_BROKEN 0x2 >-#define VOLUME_EXTRA_FLAGS_SHOW_APPLEDOUBLE 0x4 >-#define VOLUME_EXTRA_FLAGS_VOL_SUPPORTS_UNIX 0x8 >-#define VOLUME_EXTRA_FLAGS_NO_LOCKING 0x10 >-#define VOLUME_EXTRA_FLAGS_IGNORE_UNIXPRIVS 0x20 >-#define VOLUME_EXTRA_FLAGS_READONLY 0x40 >- >-#define AFP_VOLUME_UNMOUNTED 0 >-#define AFP_VOLUME_MOUNTED 1 >-#define AFP_VOLUME_UNMOUNTING 2 >- >-struct afp_volume { >- unsigned short volid; >- char flags; /* This is from afpGetSrvrParms */ >- unsigned short attributes; /* This is from VolOpen */ >- unsigned short signature; /* This is fixed or variable */ >- unsigned int creation_date; >- unsigned int modification_date; >- unsigned int backup_date; >- struct statvfs stat; >- unsigned char mounted; >- char mountpoint[255]; >- struct afp_server * server; >- char volume_name[AFP_VOLUME_NAME_LEN]; >- char volume_name_printable[AFP_VOLUME_NAME_UTF8_LEN]; >- unsigned short dtrefnum; >- char volpassword[AFP_VOLPASS_LEN]; >- unsigned int extra_flags; /* This is an afpfs-ng specific field */ >- >- /* Our directory ID cache */ >- struct did_cache_entry * did_cache_base; >- pthread_mutex_t did_cache_mutex; >- >- /* Our journal of open forks */ >- struct afp_file_info * open_forks; >- pthread_mutex_t open_forks_mutex; >- >- /* Used to trigger startup */ >- pthread_cond_t startup_condition_cond; >- >- struct { >- uint64_t hits; >- uint64_t misses; >- uint64_t expired; >- uint64_t force_removed; >- } did_cache_stats; >- >- void * priv; /* This is a private structure for fuse/cmdline, etc */ >- pthread_t thread; /* This is the per-volume thread */ >- >- int mapping; >- >-}; >- >-#define SERVER_STATE_CONNECTED 1 >-#define SERVER_STATE_DISCONNECTED 2 >- >-enum server_type{ >- AFPFS_SERVER_TYPE_UNKNOWN, >- AFPFS_SERVER_TYPE_NETATALK, >- AFPFS_SERVER_TYPE_AIRPORT, >- AFPFS_SERVER_TYPE_MACINTOSH, >-}; >- >-#define is_netatalk(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_NETATALK ) >-#define is_airport(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_AIRPORT ) >-#define is_macintosh(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_MACINTOSH ) >- >- >- >-struct afp_versions { >- char *av_name; >- int av_number; >-}; >-extern struct afp_versions afp_versions[]; >- >-struct afp_server { >- >- /* Our buffer sizes */ >- unsigned int tx_quantum; >- unsigned int rx_quantum; >- >- unsigned int tx_delay; >- >- /* Connection information */ >- struct sockaddr_in address; >- int fd; >- >- /* Some stats, for information only */ >- struct { >- uint64_t runt_packets; >- uint64_t incoming_dsi; >- uint64_t rx_bytes; >- uint64_t tx_bytes; >- uint64_t requests_pending; >- } stats; >- >- /* General information */ >- char server_name[AFP_SERVER_NAME_LEN]; >- char server_name_utf8[AFP_SERVER_NAME_UTF8_LEN]; >- char server_name_printable[AFP_SERVER_NAME_UTF8_LEN]; >- >- char machine_type[17]; >- char icon[256]; >- char signature[16]; >- unsigned short flags; >- int connect_state; >- enum server_type server_type; >- >- /* This is the time we connected */ >- time_t connect_time; >- >- /* UAMs */ >- unsigned int supported_uams; >- unsigned int using_uam; >- >- /* Authentication */ >- char username[AFP_MAX_USERNAME_LEN]; >- char password[AFP_MAX_PASSWORD_LEN]; >- >- /* Session */ >- struct afp_token token; >- char need_resume; >- >- /* Versions */ >- unsigned char requested_version; >- unsigned char versions[SERVER_MAX_VERSIONS]; >- struct afp_versions *using_version; >- >- /* Volumes */ >- unsigned char num_volumes; >- struct afp_volume * volumes; >- >- void * dsi; >- unsigned int exit_flag; >- >- /* Our DSI request queue */ >- pthread_mutex_t requestid_mutex; >- pthread_mutex_t request_queue_mutex; >- unsigned short lastrequestid; >- unsigned short expectedrequestid; >- struct dsi_request * command_requests; >- >- >- char loginmesg[200]; >- char servermesg[200]; >- char path_encoding; >- >- /* This is the data for the incoming buffer */ >- char * incoming_buffer; >- int data_read; >- int bufsize; >- >- /* And this is for the outgoing queue */ >- pthread_mutex_t send_mutex; >- >- /* This is for user mapping */ >- struct passwd passwd; >- unsigned int server_uid, server_gid; >- int server_gid_valid; >- >- struct afp_server *next; >- >- /* These are for DSI attention packets */ >- unsigned int attention_quantum; >- unsigned int attention_len; >- char * attention_buffer; >- >-}; >- >-struct afp_extattr_info { >- unsigned int maxsize; >- unsigned int size; >- char data[1024]; >-}; >-struct afp_comment { >- unsigned int maxsize; >- unsigned int size; >- char *data; >-}; >- >-struct afp_icon { >- unsigned int maxsize; >- unsigned int size; >- char *data; >-}; >- >-#define AFP_DEFAULT_ATTENTION_QUANTUM 1024 >- >-void afp_unixpriv_to_stat(struct afp_file_info *fp, >- struct stat *stat); >- >-int init_uams(void) ; >- >-unsigned int find_uam_by_name(const char * name); >-char * uam_bitmap_to_string(unsigned int bitmap); >- >- >-char * get_uam_names_list(void); >- >-unsigned int default_uams_mask(void); >- >-struct afp_volume * find_volume_by_name(struct afp_server * server, >- const char * volname); >- >-struct afp_connection_request { >- unsigned int uam_mask; >- struct afp_url url; >-}; >- >-void afp_default_url(struct afp_url *url); >-int afp_parse_url(struct afp_url * url, const char * toparse, int verbose); >-void afp_print_url(struct afp_url * url); >-int afp_url_validate(char * url_string, struct afp_url * valid_url); >- >-int afp_list_volnames(struct afp_server * server, char * names, int max); >- >-/* User mapping */ >-int afp_detect_mapping(struct afp_volume * volume); >- >-/* These are some functions that help with simple status text generation */ >- >-int afp_status_header(char * text, int * len); >-int afp_status_server(struct afp_server * s,char * text, int * len); >- >- >-struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req); >- >-void * just_end_it_now(void *other); >-void add_fd_and_signal(int fd); >-void loop_disconnect(struct afp_server *s); >-void afp_wait_for_started_loop(void); >- >- >-struct afp_versions * pick_version(unsigned char *versions, >- unsigned char requested) ; >-int pick_uam(unsigned int u1, unsigned int u2); >- >-int afp_server_login(struct afp_server *server, >- char * mesg, unsigned int *l, unsigned int max); >- >- >-int afp_dologin(struct afp_server *server, >- unsigned int uam, char * username, char * passwd); >- >-void afp_free_server(struct afp_server **server); >- >-struct afp_server * afp_server_init(struct sockaddr_in * address); >-int afp_get_address(void * priv, const char * hostname, unsigned int port, >- struct sockaddr_in * address); >- >- >-int afp_main_loop(int command_fd); >-int afp_main_quick_startup(pthread_t * thread); >- >-int afp_server_destroy(struct afp_server *s) ; >-int afp_server_reconnect(struct afp_server * s, char * mesg, >- unsigned int *l, unsigned int max); >-int afp_server_connect(struct afp_server *s, int full); >- >-struct afp_server * afp_server_complete_connection( >- void * priv, >- struct afp_server * server, >- struct sockaddr_in * address, unsigned char * versions, >- unsigned int uams, char * username, char * password, >- unsigned int requested_version, unsigned int uam_mask); >- >-int afp_connect_volume(struct afp_volume * volume, struct afp_server * server, >- char * mesg, unsigned int * l, unsigned int max); >-int something_is_mounted(struct afp_server * server); >- >-int add_cache_entry(struct afp_file_info * file) ; >-struct afp_file_info * get_cache_by_name(char * name); >-struct afp_server * find_server_by_address(struct sockaddr_in * address); >-struct afp_server * find_server_by_signature(char * signature); >-struct afp_server * find_server_by_name(char * name); >-int server_still_valid(struct afp_server * server); >- >- >-struct afp_server * get_server_base(void); >-int afp_server_remove(struct afp_server * server); >- >-int afp_unmount_volume(struct afp_volume * volume); >-int afp_unmount_all_volumes(struct afp_server * server); >- >-#define volume_is_readonly(x) (((x)->attributes&kReadOnly) || \ >- ((x)->extra_flags & VOLUME_EXTRA_FLAGS_READONLY)) >- >-int afp_opendt(struct afp_volume *volume, unsigned short * refnum); >- >-int afp_closedt(struct afp_server * server, unsigned short * refnum); >- >-int afp_getcomment(struct afp_volume *volume, unsigned int did, >- const char * pathname, struct afp_comment * comment); >- >-int afp_addcomment(struct afp_volume *volume, unsigned int did, >- const char * pathname, char * comment,uint64_t *size); >- >-int afp_geticon(struct afp_volume * volume, unsigned int filecreator, >- unsigned int filetype, unsigned char icontype, >- unsigned short length, struct afp_icon * icon); >- >-/* Things you want to do to a server */ >- >-int afp_getsrvrmsg(struct afp_server *server, unsigned short messagetype,unsigned char utf8, unsigned char block, char * mesg); >- >-int afp_login(struct afp_server *server, char * uaname, >- char * userauthinfo, unsigned int userauthinfo_len, >- struct afp_rx_buffer *rx); >- >-int afp_changepassword(struct afp_server *server, char * uaname, >- char * userauthinfo, unsigned int userauthinfo_len, >- struct afp_rx_buffer *rx); >- >-int afp_logincont(struct afp_server *server, unsigned short id, >- char * userauthinfo, unsigned int userauthinfo_len, >- struct afp_rx_buffer *rx); >- >-int afp_getsessiontoken(struct afp_server * server, int type, >- unsigned int timestamp, struct afp_token *outgoing_token, >- struct afp_token * incoming_token); >- >-int afp_getsrvrparms(struct afp_server *server); >- >-int afp_logout(struct afp_server *server,unsigned char wait); >- >-int afp_mapname(struct afp_server * server, unsigned char subfunction, >- char * name, unsigned int * id); >- >-int afp_mapid(struct afp_server * server, unsigned char subfunction, >- unsigned int id, char *name); >- >-int afp_getuserinfo(struct afp_server * server, int thisuser, >- unsigned int userid, unsigned short bitmap, >- unsigned int *newuid, unsigned int *newgid); >- >-int afp_zzzzz(struct afp_server *server); >- >-int afp_volopen(struct afp_volume * volume, >- unsigned short bitmap, char * password); >- >-int afp_flush(struct afp_volume * volume); >- >-int afp_getfiledirparms(struct afp_volume *volume, unsigned int did, >- unsigned int filebitmap, unsigned int dirbitmap, const char * pathname, >- struct afp_file_info *fp); >- >-int afp_enumerate(struct afp_volume * volume, >- unsigned int dirid, >- unsigned int filebitmap, unsigned int dirbitmap, >- unsigned short reqcount, >- unsigned short startindex, >- char * path, >- struct afp_file_info ** file_p); >- >-int afp_enumerateext2(struct afp_volume * volume, >- unsigned int dirid, >- unsigned int filebitmap, unsigned int dirbitmap, >- unsigned short reqcount, >- unsigned long startindex, >- char * path, >- struct afp_file_info ** file_p); >- >-int afp_openfork(struct afp_volume * volume, >- unsigned char forktype, >- unsigned int dirid, >- unsigned short accessmode, >- char * filename, >- struct afp_file_info *fp); >- >-int afp_read(struct afp_volume * volume, unsigned short forkid, >- uint32_t offset, >- uint32_t count, struct afp_rx_buffer * rx); >- >-int afp_readext(struct afp_volume * volume, unsigned short forkid, >- uint64_t offset, >- uint64_t count, struct afp_rx_buffer * rx); >- >-int afp_getvolparms(struct afp_volume * volume, unsigned short bitmap); >- >- >-int afp_createdir(struct afp_volume * volume, unsigned int dirid, const char * pathname, unsigned int *did_p); >- >-int afp_delete(struct afp_volume * volume, >- unsigned int dirid, char * pathname); >- >- >-int afp_createfile(struct afp_volume * volume, unsigned char flag, >- unsigned int did, char * pathname); >- >-int afp_write(struct afp_volume * volume, unsigned short forkid, >- uint32_t offset, uint32_t reqcount, >- char * data, uint32_t * written); >- >-int afp_writeext(struct afp_volume * volume, unsigned short forkid, >- uint64_t offset, uint64_t reqcount, >- char * data, uint64_t * written); >- >-int afp_flushfork(struct afp_volume * volume, unsigned short forkid); >- >-int afp_closefork(struct afp_volume * volume, unsigned short forkid); >-int afp_setfileparms(struct afp_volume * volume, >- unsigned int dirid, const char * pathname, unsigned short bitmap, >- struct afp_file_info *fp); >-int afp_setfiledirparms(struct afp_volume * volume, >- unsigned int dirid, const char * pathname, unsigned short bitmap, >- struct afp_file_info *fp); >- >-int afp_setdirparms(struct afp_volume * volume, >- unsigned int dirid, const char * pathname, unsigned short bitmap, >- struct afp_file_info *fp); >- >-int afp_volclose(struct afp_volume * volume); >- >- >-int afp_setforkparms(struct afp_volume *volume, >- unsigned short forkid, unsigned short bitmap, unsigned long len); >- >-int afp_byterangelock(struct afp_volume * volume, >- unsigned char flag, >- unsigned short forkid, >- uint32_t offset, >- uint32_t len, uint32_t *generated_offset); >- >-int afp_byterangelockext(struct afp_volume * volume, >- unsigned char flag, >- unsigned short forkid, >- uint64_t offset, >- uint64_t len, uint64_t *generated_offset); >- >-int afp_moveandrename(struct afp_volume *volume, >- unsigned int src_did, >- unsigned int dst_did, >- char * src_path, char * dst_path, char *new_name); >- >-int afp_rename(struct afp_volume * volume, >- unsigned int dirid, >- char * path_from, char * path_to); >- >-int afp_listextattr(struct afp_volume * volume, >- unsigned int dirid, unsigned short bitmap, >- char * pathname, struct afp_extattr_info * info); >- >-/* This is a currently undocumented command */ >-int afp_newcommand76(struct afp_volume * volume, unsigned int dlen, char * data); >- >-/* For debugging */ >-char * afp_get_command_name(char code); >- >- >-#endif >diff -Naur afpfs-ng-0.8.1/include/afp_protocol.h afpfs-ng-0.8.1.patch/include/afp_protocol.h >--- afpfs-ng-0.8.1/include/afp_protocol.h 2008-02-18 04:33:43.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/afp_protocol.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,361 +0,0 @@ >- >-#ifndef _AFP_PROTOCOL_H_ >-#define _AFP_PROTOCOL_H_ >- >-#include <sys/types.h> >-#include <stddef.h> >-#include <unistd.h> >-#include <stdint.h> >- >-/* This file defines constants for the Apple File Protocol. >- All page references are from "Apple Filing Protocol Programming" version 3.2. >- except where noted. >-*/ >- >-#define AFP_SERVER_NAME_LEN 33 >-#define AFP_SERVER_NAME_UTF8_LEN 255 >-#define AFP_VOLUME_NAME_LEN 33 >-#define AFP_VOLUME_NAME_UTF8_LEN 33 >-#define AFP_SIGNATURE_LEN 16 >-#define AFP_MACHINETYPE_LEN 33 >-#define AFP_LOGINMESG_LEN 200 >-#define AFP_VOLPASS_LEN 8 >-#define AFP_HOSTNAME_LEN 255 >-/* This is actually just a guess, and only used for appletalk */ >-#define AFP_ZONE_LEN 255 >- >-#define AFP_SERVER_ICON_LEN 256 >- >- >-#define AFP_MAX_USERNAME_LEN 127 >-#define AFP_MAX_PASSWORD_LEN 127 >- >- >-/* This is the maximum length of any UAM string */ >-#define AFP_UAM_LENGTH 24 >- >-/* This is the maximum length of any path description */ >-#define AFP_MAX_PATH 768 >- >-#define AFP_VOL_FLAT 1 >-#define AFP_VOL_FIXED 2 >-#define AFP_VOL_VARIABLE 3 >- >-/* The root directory ID, p.26 */ >- >-#define AFP_ROOT_DID 2 >- >-/* Path type constants, p.249 */ >- >-enum { >-kFPShortName = 1, >-kFPLongName = 2, >-kFPUTF8Name = 3 >-}; >- >-/* fork types */ >- >-#define AFP_FORKTYPE_DATA 0x0 >-#define AFP_FORKTYPE_RESOURCE 0x80 >- >-/* openfork access modes, from p.196 */ >- >-#define AFP_OPENFORK_ALLOWREAD 1 >-#define AFP_OPENFORK_ALLOWWRITE 2 >-#define AFP_OPENFORK_DENYREAD 0x10 >-#define AFP_OPENFORK_DENYWRITE 0x20 >- >-/* Message type for getsrvmesg, p. 169*/ >- >-typedef enum { >- AFPMESG_LOGIN = 0, >- AFPMESG_SERVER = 1 >-} afpmessage_t; >- >-/* Message bitmap for getsrvrmsg */ >- >-#define AFP_GETSRVRMSG_UTF8 0x2 >-#define AFP_GETSRVRMSG_GETMSG 0x1 >- >- >-/* Maximum Version length, p.17 */ >-#define AFP_MAX_VERSION_LENGTH 16 >- >-/* Maximum length of a token, this is undocumented */ >-#define AFP_TOKEN_MAX_LEN 256 >- >-/* The maximum size of a file for AFP 2 */ >-#define AFP_MAX_AFP2_FILESIZE (4294967296) >- >-/* Unix privs, p.240 */ >- >-struct afp_unixprivs { >- uint32_t uid __attribute__((__packed__)); >- uint32_t gid __attribute__((__packed__)); >- uint32_t permissions __attribute__((__packed__)); >- uint32_t ua_permissions __attribute__((__packed__)); >- >-}; >- >- >-/* AFP Volume attributes bitmap, p.241 */ >- >-enum { >- kReadOnly = 0x01, >- kHasVolumePassword = 0x02, >- kSupportsFileIDs = 0x04, >- kSupportsCatSearch = 0x08, >- kSupportsBlankAccessPrivs = 0x10, >- kSupportsUnixPrivs = 0x20, >- kSupportsUTF8Names = 0x40, >- kNoNetworkUserIDs = 0x80, >- kDefaultPrivsFromParent = 0x100, >- kNoExchangeFiles = 0x200, >- kSupportsExtAttrs = 0x400, >- kSupportsACLs=0x800 >-}; >- >-/* AFP file creation constantes, p.250 */ >-enum { >-kFPSoftCreate = 0, >-kFPHardCreate = 0x80 >-}; >- >-/* AFP Directory attributes, taken from the protocol guide p.236 */ >- >-enum { >- kFPAttributeBit = 0x1, >- kFPParentDirIDBit = 0x2, >- kFPCreateDateBit = 0x4, >- kFPModDateBit = 0x8, >- kFPBackupDateBit = 0x10, >- kFPFinderInfoBit = 0x20, >- kFPLongNameBit = 0x40, >- kFPShortNameBit = 0x80, >- kFPNodeIDBit = 0x100, >- kFPOffspringCountBit = 0x0200, >- kFPOwnerIDBit = 0x0400, >- kFPGroupIDBit = 0x0800, >- kFPAccessRightsBit = 0x1000, >- kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier >- kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later >- kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later >-}; >- >-/* AFP File bitmap, p.238. These are the ones not in the AFP Directory >- attributes map. */ >- >-enum { >- kFPDataForkLenBit = 0x0200, >- kFPRsrcForkLenBit = 0x0400, >- kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later >- kFPLaunchLimitBit = 0x1000, >- kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later >-}; >- >-/* AFP Extended Attributes Bitmap, p.238 */ >- >-enum { >- kXAttrNoFollow = 0x1, >- kXAttrCreate = 0x2, >- kXAttrREplace=0x4 >-}; >- >- >-/* AFP function codes */ >-enum AFPFunction >-{ >- afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork, >- afpCopyFile, afpCreateDir, afpCreateFile, >- afpDelete, afpEnumerate, afpFlush, afpFlushFork, >- afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms, >- afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID, >- afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork, >- afpRead, afpRename, afpSetDirParms, afpSetFileParms, >- afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms, >- afpSetFileDirParms, afpChangePassword, >- afpGetUserInfo=37,afpGetSrvrMsg = 38, >- afpOpenDT=48, >- afpCloseDT=49, >- afpGetIcon=51, afpGetIconInfo=52, >- afpAddComment=56, afpRemoveComment=57, afpGetComment=58, >- afpByteRangeLockExt=59, afpReadExt, afpWriteExt, >- afpGetAuthMethods=62, >- afp_LoginExt=63, >- afpGetSessionToken=64, >- afpDisconnectOldSession=65, >- afpEnumerateExt=66, >- afpCatSearchExt = 67, >- afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr, >- afpRemoveExtAttr , afpListExtAttrs, >- afpZzzzz = 122, >- afpAddIcon=192, >-}; >- >-/* AFP Volume bitmap. Take from 242 of the protocol guide. */ >-enum { >- kFPBadVolPre222Bitmap = 0xFe00, >- kFPBadVolBitmap = 0xF000, >- kFPVolAttributeBit = 0x1, >- kFPVolSignatureBit = 0x2, >- kFPVolCreateDateBit = 0x4, >- kFPVolModDateBit = 0x8, >- kFPVolBackupDateBit = 0x10, >- kFPVolIDBit = 0x20, >- kFPVolBytesFreeBit = 0x40, >- kFPVolBytesTotalBit = 0x80, >- kFPVolNameBit = 0x100, >- kFPVolExtBytesFreeBit = 0x200, >- kFPVolExtBytesTotalBit = 0x400, >- kFPVolBlockSizeBit = 0x800 >-}; >- >-/* AFP Attention Codes -- 4 bits */ >-#define AFPATTN_SHUTDOWN (1 << 15) /* shutdown/disconnect */ >-#define AFPATTN_CRASH (1 << 14) /* server crashed */ >-#define AFPATTN_MESG (1 << 13) /* server has message */ >-#define AFPATTN_NORECONNECT (1 << 12) /* don't reconnect */ >-/* server notification */ >-#define AFPATTN_NOTIFY (AFPATTN_MESG | AFPATTN_NORECONNECT) >- >-/* extended bitmap -- 12 bits. volchanged is only useful w/ a server >- * notification, and time is only useful for shutdown. */ >-#define AFPATTN_VOLCHANGED (1 << 0) /* volume has changed */ >-#define AFPATTN_TIME(x) ((x) & 0xfff) /* time in minutes */ >- >-#define kFPNoErr 0 >- >-/* AFP result codes, p252 */ >-#define kASPSessClosed -1072 >-#define kFPAccessDenied -5000 >-#define kFPAuthContinue -5001 >-#define kFPBadUAM -5002 >-#define kFPBadVersNum -5003 >-#define kFPBitmapErr -5004 >-#define kFPCantMove -5005 >-#define kFPDenyConflict -5006 >-#define kFPDirNotEmpty -5007 >-#define kFPDiskFull -5008 >-#define kFPEOFErr -5009 >-#define kFPFileBusy -5010 >-#define kFPFlatVol -5011 >-#define kFPItemNotFound -5012 >-#define kFPLockErr -5013 >-#define kFPMiscErr -5014 >-#define kFPNoMoreLocks -5015 >-#define kFPNoServer -5016 >-#define kFPObjectExists -5017 >-#define kFPObjectNotFound -5018 >-#define kFPParamErr -5019 >-#define kFPRangeNotLocked -5020 >-#define kFPRangeOverlap -5021 >-#define kFPSessClosed -5022 >-#define kFPUserNotAuth -5023 >-#define kFPCallNotSupported -5024 >-#define kFPObjectTypeErr -5025 >-#define kFPTooManyFilesOpen -5026 >-#define kFPServerGoingDown -5027 >-#define kFPCantRename -5028 >-#define kFPDirNotFound -5029 >-#define kFPIconTypeError -5030 >-#define kFPVolLocked -5031 >-#define kFPObjectLocked -5032 >-#define kFPContainsSharedErr -5033 >-#define kFPIDNotFound -5034 >-#define kFPIDExists -5035 >-#define kFPDiffVolErr -5036 >-#define kFPCatalogChanged -5037 >-#define kFPSameObjectErr -5038 >-#define kFPBadIDErr -5039 >-#define kFPPwdSameErr -5040 >-#define kFPPwdTooShortErr -5041 >-#define kFPPwdExpiredErr -5042 >-#define kFPInsideSharedErr -5043 >-#define kFPInsideTrashErr -5044 >-#define kFPPwdNeedsChangeErr -5045 >-#define kFPPwdPolicyErr -5046 >-#define kFPDiskQuotaExceeded â5047 >- >- >- >-/* These flags determine to lock or unlock in ByteRangeLock(Ext) */ >- >-enum { >-ByteRangeLock_Lock = 0, >-ByteRangeLock_Unlock = 1 >-}; >- >-/* These flags are used in volopen and getsrvrparm replies, p.171 */ >- >-#define HasConfigInfo 0x1 >-#define HasPassword 0x80 >- >-/* These are the subfunction for kFPMapID, as per p.248 */ >- >-enum { >-kUserIDToName = 1, >-kGroupIDToName = 2, >-kUserIDToUTF8Name = 3, >-kGroupIDToUTF8Name = 4, >-kUserUUIDToUTF8Name = 5, >-kGroupUUIDToUTF8Name = 6 >-}; >- >- >-/* These are the subfunction flags described in the FPMapName command, p.286. >- Note that this is different than what's described on p. 186. */ >- >-enum { >-kNameToUserID = 1, >-kNameToGroupID = 2, >-kUTF8NameToUserID = 3, >-kUTF8NameToGroupID = 4, >-kUTF8NameToUserUUID = 5, >-kUTF8NameToGroupUUID = 6 >-}; >- >-/* These are bits for FPGetUserInfo, p.173. */ >-#define kFPGetUserInfo_USER_ID 1 >-#define kFPGetUserInfo_PRI_GROUPID 2 >- >-/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */ >- >-enum { >- kSupportsCopyfile = 0x01, >- kSupportsChgPwd = 0x02, >- kDontAllowSavePwd = 0x04, >- kSupportsSrvrMsg = 0x08, >- kSrvrSig = 0x10, >- kSupportsTCP = 0x20, >- kSupportsSrvrNotify = 0x40, >- kSupportsReconnect = 0x80, >- kSupportsDirServices = 0x100, >- kSupportsUTF8SrvrName = 0x200, >- kSupportsUUIDs = 0x400, >- kSupportsSuperClient = 0x8000 >-}; >- >- >-/* p.247 */ >- >-enum { >- kLoginWithoutID = 0, >- kLoginWithID = 1, >- kReconnWithID = 2, >- kLoginWithTimeAndID = 3, >- kReconnWithTimeAndID = 4, >- kRecon1Login = 5, >- kRecon1ReconnectLogin = 6, >- kRecon1Refresh = 7, kGetKerberosSessionKey = 8 >-}; >- >- >-#define AFP_CHMOD_ALLOWED_BITS_22 \ >- (S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG ) >- >- >-#endif >- >- >- >- >diff -Naur afpfs-ng-0.8.1/include/codepage.h afpfs-ng-0.8.1.patch/include/codepage.h >--- afpfs-ng-0.8.1/include/codepage.h 2007-09-23 16:21:30.000000000 +0200 >+++ afpfs-ng-0.8.1.patch/include/codepage.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,11 +0,0 @@ >-#ifndef __CODE_PAGE_H_ >-#define __CODE_PAGE_H_ >-int convert_utf8dec_to_utf8pre(const char *src, int src_len, >- char * dest, int dest_len); >-int convert_utf8pre_to_utf8dec(const char * src, int src_len, >- char * dest, int dest_len); >-int convert_path_to_unix(char encoding, char * dest, >- char * src, int dest_len); >-int convert_path_to_afp(char encoding, char * dest, >- char * src, int dest_len); >-#endif >diff -Naur afpfs-ng-0.8.1/include/dsi.h afpfs-ng-0.8.1.patch/include/dsi.h >--- afpfs-ng-0.8.1/include/dsi.h 2008-02-18 04:33:24.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/dsi.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,33 +0,0 @@ >- >-#ifndef __DSI_H_ >-#define __DSI_H_ >- >-#include "afp.h" >- >-struct dsi_request >-{ >- unsigned short requestid; >- unsigned char subcommand; >- void * other; >- unsigned char wait; >- pthread_cond_t condition_cond; >- struct dsi_request * next; >- int return_code; >-}; >- >-int dsi_receive(struct afp_server * server, void * data, int size); >-int dsi_getstatus(struct afp_server * server); >- >-int dsi_opensession(struct afp_server *server); >- >-int dsi_send(struct afp_server *server, char * msg, int size,int wait,unsigned char subcommand, void ** other); >-struct dsi_session * dsi_create(struct afp_server *server); >-int dsi_restart(struct afp_server *server); >-int dsi_recv(struct afp_server * server); >- >-#define DSI_BLOCK_TIMEOUT -1 >-#define DSI_DONT_WAIT 0 >-#define DSI_DEFAULT_TIMEOUT 5 >- >- >-#endif >diff -Naur afpfs-ng-0.8.1/include/libafpclient.h afpfs-ng-0.8.1.patch/include/libafpclient.h >--- afpfs-ng-0.8.1/include/libafpclient.h 2008-01-30 05:37:59.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/libafpclient.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,50 +0,0 @@ >- >-#ifndef __CLIENT_H_ >-#define __CLIENT_H_ >- >-#include <unistd.h> >-#include <syslog.h> >- >-#define MAX_CLIENT_RESPONSE 2048 >- >- >-enum loglevels { >- AFPFSD, >-}; >- >-struct afp_server; >-struct afp_volume; >- >-struct libafpclient { >- int (*unmount_volume) (struct afp_volume * volume); >- void (*log_for_client)(void * priv, >- enum loglevels loglevel, int logtype, const char *message); >- void (*forced_ending_hook)(void); >- int (*scan_extra_fds)(int command_fd,fd_set *set, int * max_fd); >- void (*loop_started)(void); >-} ; >- >-extern struct libafpclient * libafpclient; >- >-void libafpclient_register(struct libafpclient * tmpclient); >- >- >-void signal_main_thread(void); >- >-/* These are logging functions */ >- >-#define MAXLOGSIZE 2048 >- >-#define LOG_METHOD_SYSLOG 1 >-#define LOG_METHOD_STDOUT 2 >- >-void set_log_method(int m); >- >- >-void log_for_client(void * priv, >- enum loglevels loglevel, int logtype, char * message,...); >- >-void stdout_log_for_client(void * priv, >- enum loglevels loglevel, int logtype, const char *message); >- >-#endif >diff -Naur afpfs-ng-0.8.1/include/Makefile.am afpfs-ng-0.8.1.patch/include/Makefile.am >--- afpfs-ng-0.8.1/include/Makefile.am 1970-01-01 01:00:00.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/Makefile.am 2011-09-10 12:13:50.126124692 +0200 >@@ -0,0 +1,3 @@ >+## Process this file with automake to produce Makefile.in >+ >+SUBDIRS = afpfs-ng >diff -Naur afpfs-ng-0.8.1/include/map_def.h afpfs-ng-0.8.1.patch/include/map_def.h >--- afpfs-ng-0.8.1/include/map_def.h 2008-01-17 05:55:46.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/map_def.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,15 +0,0 @@ >-#ifndef __MAP_H_ >-#define __MAP_H_ >- >-#include "afp.h" >- >-#define AFP_MAPPING_UNKNOWN 0 >-#define AFP_MAPPING_COMMON 1 >-#define AFP_MAPPING_LOGINIDS 2 >-#define AFP_MAPPING_NAME 3 >- >-unsigned int map_string_to_num(char * name); >-char * get_mapping_name(struct afp_volume * volume); >- >- >-#endif >diff -Naur afpfs-ng-0.8.1/include/midlevel.h afpfs-ng-0.8.1.patch/include/midlevel.h >--- afpfs-ng-0.8.1/include/midlevel.h 2007-12-24 20:39:25.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/midlevel.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,64 +0,0 @@ >-#ifndef __MIDLEVEL_H_ >-#define __MIDLEVEL_H_ >- >-#include <utime.h> >-#include "afp.h" >- >-int ml_open(struct afp_volume * volume, const char *path, int flags, >- struct afp_file_info **newfp); >- >-int ml_creat(struct afp_volume * volume, const char *path,mode_t mode); >- >-int ml_readdir(struct afp_volume * volume, >- const char *path, >- struct afp_file_info **base); >- >-int ml_read(struct afp_volume * volume, const char *path, >- char *buf, size_t size, off_t offset, >- struct afp_file_info *fp, int * eof); >- >-int ml_chmod(struct afp_volume * vol, const char * path, mode_t mode); >- >-int ml_unlink(struct afp_volume * vol, const char *path); >- >-int ml_mkdir(struct afp_volume * vol, const char * path, mode_t mode); >- >-int ml_close(struct afp_volume * volume, const char * path, >- struct afp_file_info * fp); >- >-int ml_getattr(struct afp_volume * volume, const char *path, >- struct stat *stbuf); >- >-int ml_write(struct afp_volume * volume, const char * path, >- const char *data, size_t size, off_t offset, >- struct afp_file_info * fp, uid_t uid, >- gid_t gid); >- >-int ml_readlink(struct afp_volume * vol, const char * path, >- char *buf, size_t size); >- >-int ml_rmdir(struct afp_volume * vol, const char *path); >- >-int ml_chown(struct afp_volume * vol, const char * path, >- uid_t uid, gid_t gid); >- >-int ml_truncate(struct afp_volume * vol, const char * path, off_t offset); >- >-int ml_utime(struct afp_volume * vol, const char * path, >- struct utimbuf * timebuf); >- >-int ml_symlink(struct afp_volume *vol, const char * path1, const char * path2); >- >-int ml_rename(struct afp_volume * vol, >- const char * path_from, const char * path_to); >- >-int ml_statfs(struct afp_volume * vol, const char *path, struct statvfs *stat); >- >-void afp_ml_filebase_free(struct afp_file_info **filebase); >- >-int ml_passwd(struct afp_server *server, >- char * username, char * oldpasswd, char * newpasswd); >- >- >- >-#endif >diff -Naur afpfs-ng-0.8.1/include/uams_def.h afpfs-ng-0.8.1.patch/include/uams_def.h >--- afpfs-ng-0.8.1/include/uams_def.h 2007-09-07 15:10:51.000000000 +0200 >+++ afpfs-ng-0.8.1.patch/include/uams_def.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,16 +0,0 @@ >-#ifndef __UAM_DEFS_H_ >-#define __UAM_DEFS_H_ >- >-#define UAM_NOUSERAUTHENT 0x1 >-#define UAM_CLEARTXTPASSWRD 0x2 >-#define UAM_RANDNUMEXCHANGE 0x4 >-#define UAM_2WAYRANDNUM 0x8 >-#define UAM_DHCAST128 0x10 >-#define UAM_CLIENTKRB 0x20 >-#define UAM_DHX2 0x40 >-#define UAM_RECON1 0x80 >- >-int uam_string_to_bitmap(char * name); >-char * uam_bitmap_to_string(unsigned int bitmap); >- >-#endif >diff -Naur afpfs-ng-0.8.1/include/utils.h afpfs-ng-0.8.1.patch/include/utils.h >--- afpfs-ng-0.8.1/include/utils.h 2008-02-18 04:33:58.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/include/utils.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,43 +0,0 @@ >-#ifndef __UTILS_H_ >-#define __UTILS_H_ >-#include <stdio.h> >- >-#include "afp.h" >- >-#if BYTE_ORDER == BIG_ENDIAN >-#define hton64(x) (x) >-#define ntoh64(x) (x) >-#else /* BYTE_ORDER == BIG_ENDIAN */ >-#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \ >- (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32)) >-#define ntoh64(x) (hton64(x)) >-#endif /* BYTE_ORDER == BIG_ENDIAN */ >- >-#define min(a,b) (((a)<(b)) ? (a) : (b)) >-#define max(a,b) (((a)>(b)) ? (a) : (b)) >- >- >- >-unsigned char unixpath_to_afppath( >- struct afp_server * server, >- char * buf); >- >-unsigned char sizeof_path_header(struct afp_server * server); >- >- >- >-unsigned char copy_from_pascal(char *dest, char *pascal,unsigned int max_len) ; >-unsigned short copy_from_pascal_two(char *dest, char *pascal,unsigned int max_len); >- >-unsigned char copy_to_pascal(char *dest, const char *src); >-unsigned short copy_to_pascal_two(char *dest, const char *src); >- >-void copy_path(struct afp_server * server, char * dest, const char * pathname, unsigned char len); >- >- >-char * create_path(struct afp_server * server, char * pathname, unsigned short * len); >- >- >-int invalid_filename(struct afp_server * server, const char * filename); >- >-#endif >diff -Naur afpfs-ng-0.8.1/lib/afp.c afpfs-ng-0.8.1.patch/lib/afp.c >--- afpfs-ng-0.8.1/lib/afp.c 2008-03-08 03:44:16.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/afp.c 2011-09-10 12:13:50.131124759 +0200 >@@ -9,7 +9,7 @@ > > > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > #include <config.h> > > #include <stdio.h> >@@ -21,17 +21,17 @@ > #include <sys/socket.h> > #include <errno.h> > >-#include "afp_protocol.h" >-#include "libafpclient.h" >+#include "afpfs-ng/afp_protocol.h" >+#include "afpfs-ng/libafpclient.h" > #include "server.h" >-#include "dsi.h" >+#include "afpfs-ng/dsi.h" > #include "dsi_protocol.h" >-#include "utils.h" >+#include "afpfs-ng/utils.h" > #include "afp_replies.h" > #include "afp_internal.h" > #include "did.h" > #include "forklist.h" >-#include "codepage.h" >+#include "afpfs-ng/codepage.h" > > struct afp_versions afp_versions[] = { > { "AFPVersion 1.1", 11 }, >diff -Naur afpfs-ng-0.8.1/lib/afp_internal.h afpfs-ng-0.8.1.patch/lib/afp_internal.h >--- afpfs-ng-0.8.1/lib/afp_internal.h 2007-11-09 05:27:20.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/afp_internal.h 2011-09-10 12:13:50.132124772 +0200 >@@ -1,7 +1,7 @@ > #ifndef _AFP_INTERNAL_H_ > #define _AFP_INTERNAL_H_ > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > > extern struct afp_versions afp_versions[]; > >diff -Naur afpfs-ng-0.8.1/lib/afp_url.c afpfs-ng-0.8.1.patch/lib/afp_url.c >--- afpfs-ng-0.8.1/lib/afp_url.c 2008-03-04 21:16:49.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/afp_url.c 2011-09-10 12:13:50.132124772 +0200 >@@ -3,7 +3,7 @@ > #include <stdio.h> > #include <stdlib.h> > #include <errno.h> >-#include "afp.h" >+#include "afpfs-ng/afp.h" > > void afp_default_url(struct afp_url *url) > { >diff -Naur afpfs-ng-0.8.1/lib/client.c afpfs-ng-0.8.1.patch/lib/client.c >--- afpfs-ng-0.8.1/lib/client.c 2008-02-18 04:36:30.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/client.c 2011-09-10 12:13:50.132124772 +0200 >@@ -1,5 +1,5 @@ >-#include <afp.h> >-#include <libafpclient.h> >+#include <afpfs-ng/afp.h> >+#include <afpfs-ng/libafpclient.h> > > > struct libafpclient * libafpclient = NULL; >diff -Naur afpfs-ng-0.8.1/lib/codepage.c afpfs-ng-0.8.1.patch/lib/codepage.c >--- afpfs-ng-0.8.1/lib/codepage.c 2008-02-18 04:36:54.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/codepage.c 2011-09-10 12:13:50.133124786 +0200 >@@ -14,8 +14,8 @@ > > #include <string.h> > #include <stdlib.h> >-#include "afp_protocol.h" >-#include "utils.h" >+#include "afpfs-ng/afp_protocol.h" >+#include "afpfs-ng/utils.h" > #include "unicode.h" > > int convert_utf8dec_to_utf8pre(const char *src, int src_len, >diff -Naur afpfs-ng-0.8.1/lib/connect.c afpfs-ng-0.8.1.patch/lib/connect.c >--- afpfs-ng-0.8.1/lib/connect.c 2008-02-18 04:38:59.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/connect.c 2011-09-10 12:13:50.133124786 +0200 >@@ -10,13 +10,13 @@ > #include <string.h> > #include <sys/socket.h> > >-#include "afp.h" >-#include "dsi.h" >-#include "utils.h" >-#include "uams_def.h" >-#include "codepage.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/uams_def.h" >+#include "afpfs-ng/codepage.h" > #include "users.h" >-#include "libafpclient.h" >+#include "afpfs-ng/libafpclient.h" > #include "server.h" > > >diff -Naur afpfs-ng-0.8.1/lib/did.c afpfs-ng-0.8.1.patch/lib/did.c >--- afpfs-ng-0.8.1/lib/did.c 2008-02-18 04:39:17.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/did.c 2011-09-10 12:13:50.133124786 +0200 >@@ -9,8 +9,8 @@ > #include <string.h> > #include <stdio.h> > >-#include "afp.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/afp_protocol.h" > > #undef DID_CACHE_DISABLE > >diff -Naur afpfs-ng-0.8.1/lib/dsi.c afpfs-ng-0.8.1.patch/lib/dsi.c >--- afpfs-ng-0.8.1/lib/dsi.c 2008-02-18 04:53:03.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/dsi.c 2011-09-10 12:13:50.134124800 +0200 >@@ -19,12 +19,12 @@ > #include <signal.h> > #include <iconv.h> > >-#include "utils.h" >-#include "dsi.h" >-#include "afp.h" >-#include "uams_def.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/uams_def.h" > #include "dsi_protocol.h" >-#include "libafpclient.h" >+#include "afpfs-ng/libafpclient.h" > #include "afp_internal.h" > #include "afp_replies.h" > >diff -Naur afpfs-ng-0.8.1/lib/forklist.c afpfs-ng-0.8.1.patch/lib/forklist.c >--- afpfs-ng-0.8.1/lib/forklist.c 2008-01-17 05:49:16.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/forklist.c 2011-09-10 12:13:50.135124814 +0200 >@@ -10,7 +10,7 @@ > */ > > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > > #include <stdlib.h> > #include <pthread.h> >diff -Naur afpfs-ng-0.8.1/lib/log.c afpfs-ng-0.8.1.patch/lib/log.c >--- afpfs-ng-0.8.1/lib/log.c 2008-01-30 05:37:58.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/log.c 2011-09-10 12:13:50.135124814 +0200 >@@ -3,7 +3,7 @@ > #include <stdarg.h> > #include <string.h> > #include <stdlib.h> >-#include "libafpclient.h" >+#include "afpfs-ng/libafpclient.h" > > void log_for_client(void * priv, > enum loglevels loglevel, int logtype, char *format, ...) { >diff -Naur afpfs-ng-0.8.1/lib/loop.c afpfs-ng-0.8.1.patch/lib/loop.c >--- afpfs-ng-0.8.1/lib/loop.c 2008-02-18 04:40:11.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/loop.c 2011-09-10 12:13:50.135124814 +0200 >@@ -16,9 +16,9 @@ > #include <sys/time.h> > #include <signal.h> > >-#include "afp.h" >-#include "dsi.h" >-#include "utils.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/utils.h" > > #define SIGNAL_TO_USE SIGUSR2 > >diff -Naur afpfs-ng-0.8.1/lib/lowlevel.c afpfs-ng-0.8.1.patch/lib/lowlevel.c >--- afpfs-ng-0.8.1/lib/lowlevel.c 2008-02-20 02:33:17.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/lowlevel.c 2011-09-10 12:13:50.136124828 +0200 >@@ -19,10 +19,10 @@ > #else > #include <fcntl.h> > #endif >-#include "afp.h" >-#include "afp_protocol.h" >-#include "codepage.h" >-#include "utils.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/afp_protocol.h" >+#include "afpfs-ng/codepage.h" >+#include "afpfs-ng/utils.h" > #include "did.h" > #include "users.h" > >diff -Naur afpfs-ng-0.8.1/lib/map_def.c afpfs-ng-0.8.1.patch/lib/map_def.c >--- afpfs-ng-0.8.1/lib/map_def.c 2007-09-07 15:10:59.000000000 +0200 >+++ afpfs-ng-0.8.1.patch/lib/map_def.c 2011-09-10 12:13:50.136124828 +0200 >@@ -1,6 +1,6 @@ > #include <string.h> >-#include "afp.h" >-#include "map_def.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/map_def.h" > > static char *afp_map_strings[] = { > "Unknown", >diff -Naur afpfs-ng-0.8.1/lib/meta.c afpfs-ng-0.8.1.patch/lib/meta.c >--- afpfs-ng-0.8.1/lib/meta.c 2008-01-04 04:52:44.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/meta.c 2011-09-10 12:13:50.137124841 +0200 >@@ -17,10 +17,10 @@ > #include <unistd.h> > #include <sys/time.h> > >-#include "afp.h" >-#include "dsi.h" >-#include "afp_protocol.h" >-#include "utils.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp_protocol.h" >+#include "afpfs-ng/utils.h" > > > int afp_meta_getattr(const char *path, struct stat *stbuf) >diff -Naur afpfs-ng-0.8.1/lib/midlevel.c afpfs-ng-0.8.1.patch/lib/midlevel.c >--- afpfs-ng-0.8.1/lib/midlevel.c 2008-03-08 17:08:18.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/midlevel.c 2011-09-10 12:13:50.160125150 +0200 >@@ -10,7 +10,7 @@ > */ > > >-#include "afp.h" >+#include "afpfs-ng/afp.h" > > #include <sys/stat.h> > #include <string.h> >@@ -28,9 +28,9 @@ > #include "users.h" > #include "did.h" > #include "resource.h" >-#include "utils.h" >-#include "codepage.h" >-#include "midlevel.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/codepage.h" >+#include "afpfs-ng/midlevel.h" > #include "afp_internal.h" > #include "forklist.h" > #include "uams.h" >diff -Naur afpfs-ng-0.8.1/lib/proto_attr.c afpfs-ng-0.8.1.patch/lib/proto_attr.c >--- afpfs-ng-0.8.1/lib/proto_attr.c 2008-01-30 05:37:58.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_attr.c 2011-09-10 12:13:50.168125257 +0200 >@@ -7,10 +7,10 @@ > > #include <string.h> > #include <stdlib.h> >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/afp_protocol.h" > #include "dsi_protocol.h" > > /* This is a new command, function 76. There are currently no docs, so this >diff -Naur afpfs-ng-0.8.1/lib/proto_desktop.c afpfs-ng-0.8.1.patch/lib/proto_desktop.c >--- afpfs-ng-0.8.1/lib/proto_desktop.c 2008-02-18 04:44:11.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_desktop.c 2011-09-10 12:13:50.168125257 +0200 >@@ -9,10 +9,10 @@ > #include <string.h> > #include <stdlib.h> > >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/afp_protocol.h" > #include "dsi_protocol.h" > > /* closedt, addicon, geticoninfo, addappl, removeappl */ >diff -Naur afpfs-ng-0.8.1/lib/proto_directory.c afpfs-ng-0.8.1.patch/lib/proto_directory.c >--- afpfs-ng-0.8.1/lib/proto_directory.c 2008-02-19 03:39:29.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_directory.c 2011-09-10 12:13:50.168125257 +0200 >@@ -9,10 +9,10 @@ > #include <string.h> > #include <stdlib.h> > >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/afp_protocol.h" > #include "dsi_protocol.h" > #include "afp_replies.h" > >diff -Naur afpfs-ng-0.8.1/lib/proto_files.c afpfs-ng-0.8.1.patch/lib/proto_files.c >--- afpfs-ng-0.8.1/lib/proto_files.c 2008-02-18 04:46:18.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_files.c 2011-09-10 12:13:50.169125270 +0200 >@@ -8,11 +8,11 @@ > > #include <stdlib.h> > #include <string.h> >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "dsi_protocol.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/afp_protocol.h" > #include "afp_internal.h" > > /* afp_setfileparms, afp_setdirparms and afpsetfiledirparms are all remarkably >diff -Naur afpfs-ng-0.8.1/lib/proto_fork.c afpfs-ng-0.8.1.patch/lib/proto_fork.c >--- afpfs-ng-0.8.1/lib/proto_fork.c 2008-01-30 05:37:58.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_fork.c 2011-09-10 12:13:50.169125270 +0200 >@@ -9,11 +9,11 @@ > #include <stdlib.h> > #include <string.h> > >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "dsi_protocol.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/afp_protocol.h" > > int afp_setforkparms(struct afp_volume * volume, > unsigned short forkid, unsigned short bitmap, unsigned long len) >diff -Naur afpfs-ng-0.8.1/lib/proto_login.c afpfs-ng-0.8.1.patch/lib/proto_login.c >--- afpfs-ng-0.8.1/lib/proto_login.c 2008-01-30 05:37:59.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_login.c 2011-09-10 12:13:50.169125270 +0200 >@@ -10,10 +10,10 @@ > > #include <stdlib.h> > #include <string.h> >-#include "dsi.h" >+#include "afpfs-ng/dsi.h" > #include "dsi_protocol.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "afp_internal.h" > > >diff -Naur afpfs-ng-0.8.1/lib/proto_map.c afpfs-ng-0.8.1.patch/lib/proto_map.c >--- afpfs-ng-0.8.1/lib/proto_map.c 2008-01-30 05:37:59.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_map.c 2011-09-10 12:13:50.170125283 +0200 >@@ -9,11 +9,11 @@ > #include <stdlib.h> > #include <string.h> > >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "dsi_protocol.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/afp_protocol.h" > > /* This is used to pass the return values back from afp_getuserinfo_reply() */ > struct uidgid { >diff -Naur afpfs-ng-0.8.1/lib/proto_replyblock.c afpfs-ng-0.8.1.patch/lib/proto_replyblock.c >--- afpfs-ng-0.8.1/lib/proto_replyblock.c 2008-02-18 04:46:19.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_replyblock.c 2011-09-10 12:13:50.170125283 +0200 >@@ -6,9 +6,9 @@ > */ > > #include <string.h> >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "afp_internal.h" > > >diff -Naur afpfs-ng-0.8.1/lib/proto_server.c afpfs-ng-0.8.1.patch/lib/proto_server.c >--- afpfs-ng-0.8.1/lib/proto_server.c 2008-02-19 02:56:21.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_server.c 2011-09-10 12:13:50.170125283 +0200 >@@ -7,12 +7,12 @@ > */ > #include <stdlib.h> > #include <string.h> >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "dsi_protocol.h" >-#include "afp_protocol.h" >-#include "codepage.h" >+#include "afpfs-ng/afp_protocol.h" >+#include "afpfs-ng/codepage.h" > #include "afp_internal.h" > > int afp_getsrvrparms(struct afp_server *server) >diff -Naur afpfs-ng-0.8.1/lib/proto_session.c afpfs-ng-0.8.1.patch/lib/proto_session.c >--- afpfs-ng-0.8.1/lib/proto_session.c 2008-02-18 04:46:19.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_session.c 2011-09-10 12:13:50.170125283 +0200 >@@ -8,10 +8,10 @@ > */ > #include <stdlib.h> > #include <string.h> >-#include "dsi.h" >+#include "afpfs-ng/dsi.h" > #include "dsi_protocol.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > > int afp_getsessiontoken(struct afp_server * server, int type, > unsigned int timestamp, struct afp_token *outgoing_token, >diff -Naur afpfs-ng-0.8.1/lib/proto_volume.c afpfs-ng-0.8.1.patch/lib/proto_volume.c >--- afpfs-ng-0.8.1/lib/proto_volume.c 2008-02-18 04:47:48.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/proto_volume.c 2011-09-10 12:13:50.171125296 +0200 >@@ -8,13 +8,13 @@ > > #include <string.h> > #include <stdlib.h> >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "dsi_protocol.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/afp_protocol.h" > #include "afp_internal.h" >-#include "codepage.h" >+#include "afpfs-ng/codepage.h" > > static int parse_volbitmap_reply(struct afp_server * server, > struct afp_volume * tmpvol, >diff -Naur afpfs-ng-0.8.1/lib/resource.c afpfs-ng-0.8.1.patch/lib/resource.c >--- afpfs-ng-0.8.1/lib/resource.c 2008-02-18 04:46:56.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/resource.c 2011-09-10 12:13:50.171125296 +0200 >@@ -3,11 +3,11 @@ > #include <string.h> > #include <errno.h> > #include <fcntl.h> >-#include "afp.h" >+#include "afpfs-ng/afp.h" > #include "resource.h" > #include "lowlevel.h" > #include "did.h" >-#include "midlevel.h" >+#include "afpfs-ng/midlevel.h" > > #define appledouble ".AppleDouble" > #define finderinfo_string ".finderinfo" >diff -Naur afpfs-ng-0.8.1/lib/server.c afpfs-ng-0.8.1.patch/lib/server.c >--- afpfs-ng-0.8.1/lib/server.c 2008-02-19 02:56:21.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/server.c 2011-09-10 12:13:50.172125310 +0200 >@@ -8,15 +8,15 @@ > #include <string.h> > #include <time.h> > >-#include "afp.h" >-#include "dsi.h" >-#include "utils.h" >-#include "uams_def.h" >-#include "codepage.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/uams_def.h" >+#include "afpfs-ng/codepage.h" > #include "users.h" >-#include "libafpclient.h" >+#include "afpfs-ng/libafpclient.h" > #include "afp_internal.h" >-#include "dsi.h" >+#include "afpfs-ng/dsi.h" > > > struct afp_server * afp_server_complete_connection( >diff -Naur afpfs-ng-0.8.1/lib/status.c afpfs-ng-0.8.1.patch/lib/status.c >--- afpfs-ng-0.8.1/lib/status.c 2008-03-08 17:08:38.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/status.c 2011-09-10 12:13:50.172125310 +0200 >@@ -1,8 +1,8 @@ > #include <string.h> > #include <stdio.h> >-#include "map_def.h" >-#include "dsi.h" >-#include "afp.h" >+#include "afpfs-ng/map_def.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" > > int afp_status_header(char * text, int * len) > { >diff -Naur afpfs-ng-0.8.1/lib/uams.c afpfs-ng-0.8.1.patch/lib/uams.c >--- afpfs-ng-0.8.1/lib/uams.c 2008-01-04 04:52:44.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/uams.c 2011-09-10 12:13:50.173125324 +0200 >@@ -8,10 +8,10 @@ > > #include <string.h> > #include <stdlib.h> >-#include "dsi.h" >-#include "afp.h" >-#include "utils.h" >-#include "uams_def.h" >+#include "afpfs-ng/dsi.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" >+#include "afpfs-ng/uams_def.h" > #include "config.h" > > #ifdef HAVE_LIBGCRYPT >diff -Naur afpfs-ng-0.8.1/lib/users.c afpfs-ng-0.8.1.patch/lib/users.c >--- afpfs-ng-0.8.1/lib/users.c 2008-02-18 04:48:56.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/users.c 2011-09-10 12:13:50.174125338 +0200 >@@ -3,8 +3,8 @@ > #include <grp.h> > #include <string.h> > >-#include "afp.h" >-#include "map_def.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/map_def.h" > > /* How mapping works > * >diff -Naur afpfs-ng-0.8.1/lib/utils.c afpfs-ng-0.8.1.patch/lib/utils.c >--- afpfs-ng-0.8.1/lib/utils.c 2008-02-18 04:53:37.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/lib/utils.c 2011-09-10 12:13:50.174125338 +0200 >@@ -8,10 +8,10 @@ > #include <stdio.h> > #include <string.h> > #include <stdlib.h> >-#include "afp.h" >-#include "utils.h" >+#include "afpfs-ng/afp.h" >+#include "afpfs-ng/utils.h" > #include "afp_internal.h" >-#include "afp_protocol.h" >+#include "afpfs-ng/afp_protocol.h" > > struct afp_path_header_long { > unsigned char type; >diff -Naur afpfs-ng-0.8.1/Makefile.am afpfs-ng-0.8.1.patch/Makefile.am >--- afpfs-ng-0.8.1/Makefile.am 2008-02-18 04:24:14.000000000 +0100 >+++ afpfs-ng-0.8.1.patch/Makefile.am 2011-09-10 12:13:50.176125365 +0200 >@@ -1,5 +1,5 @@ > if HAVE_LIBFUSE >-SUBDIRS = lib fuse cmdline docs >+SUBDIRS = lib fuse cmdline include docs > else >-SUBDIRS = lib cmdline docs >+SUBDIRS = lib cmdline include docs > endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 182046
:
123412
|
140417
|
144288
|
148704
|
305049
|
305051
|
305053
|
305055
|
305057
|
305059
|
305061
|
305063
|
305065
|
305067
|
305069
|
305071
|
305073
|
305075
|
305077
|
305079
|
305081
|
305083
|
305085
|
305087
|
305089
|
305091
|
305093
|
305095
|
339458
|
339460