Ticket #33589: update_to_2.4.diff

File update_to_2.4.diff, 7.2 KB (added by anatol (Anatol Pomozov), 12 years ago)
  • files/patch-from-fuse4x.diff

     
    2020 EXTRA_DIST = sshnodelay.c FAQ.txt
    2121 CLEANFILES = sshnodelay.so
    2222diff --git a/cache.c b/cache.c
    23 index bb23f8f..5b635f2 100644
     23index 2a06726..ab274bc 100644
    2424--- a/cache.c
    2525+++ b/cache.c
    26 @@ -559,6 +559,9 @@ struct fuse_operations *cache_init(struct fuse_cache_operations *oper)
     26@@ -553,6 +553,9 @@ struct fuse_operations *cache_init(struct fuse_cache_operations *oper)
    2727        cache.next_oper = oper;
    2828 
    2929        cache_unity_fill(oper, &cache_oper);
     
    3333        if (cache.on) {
    3434                cache_fill(oper, &cache_oper);
    3535                pthread_mutex_init(&cache.lock, NULL);
    36 @@ -593,3 +596,7 @@ int cache_parse_options(struct fuse_args *args)
     36@@ -587,3 +590,7 @@ int cache_parse_options(struct fuse_args *args)
    3737 
    3838        return fuse_opt_parse(args, &cache, cache_opts, NULL);
    3939 }
     
    364364+
    365365+#endif /* semaphore.h */
    366366diff --git a/sshfs.c b/sshfs.c
    367 index 22bda6b..9698c74 100644
     367index 7cfa341..39f3286 100644
    368368--- a/sshfs.c
    369369+++ b/sshfs.c
    370370@@ -20,7 +20,11 @@
     
    379379 #include <pthread.h>
    380380 #include <netdb.h>
    381381 #include <signal.h>
    382 @@ -35,6 +39,10 @@
    383  #include <netinet/in.h>
    384  #include <netinet/tcp.h>
    385  #include <glib.h>
     382@@ -38,6 +42,10 @@
     383 #include <pwd.h>
     384 #include <grp.h>
     385 #include <limits.h>
    386386+#ifdef __APPLE__
    387387+#include <libgen.h>
    388388+#include <strings.h>
     
    390390 
    391391 #include "cache.h"
    392392 
    393 @@ -118,6 +126,16 @@
     393@@ -121,6 +129,16 @@
    394394 
    395395 #define SSHNODELAY_SO "sshnodelay.so"
    396396 
     
    407407 struct buffer {
    408408        uint8_t *p;
    409409        size_t len;
    410 @@ -167,6 +185,9 @@ struct sshfs_file {
     410@@ -183,6 +201,9 @@ struct sshfs_file {
    411411        int connver;
    412412        int modifver;
    413413        int refs;
     
    417417 };
    418418 
    419419 struct sshfs {
    420 @@ -207,6 +228,10 @@ struct sshfs {
     420@@ -234,6 +255,10 @@ struct sshfs {
    421421        int server_version;
    422422        unsigned remote_uid;
    423423        unsigned local_uid;
     
    428428        int remote_uid_detected;
    429429        unsigned blksize;
    430430        char *progname;
    431 @@ -661,8 +686,17 @@ static int buf_get_attrs(struct buffer *buf, struct stat *stbuf, int *flagsp)
     431@@ -727,8 +752,17 @@ static int buf_get_attrs(struct buffer *buf, struct stat *stbuf, int *flagsp)
    432432                }
    433433        }
    434434 
     
    443443        if (sshfs.remote_uid_detected && uid == sshfs.remote_uid)
    444444                uid = sshfs.local_uid;
    445445+#endif
    446  
    447         memset(stbuf, 0, sizeof(struct stat));
    448         stbuf->st_mode = mode;
    449 @@ -765,11 +799,33 @@ static void ssh_add_arg(const char *arg)
     446        if (sshfs.idmap == IDMAP_FILE && sshfs.uid_map)
     447                if (translate_id(&uid, sshfs.uid_map) == -1)
     448                        return -EPERM;
     449@@ -837,11 +871,33 @@ static void ssh_add_arg(const char *arg)
    450450 #ifdef SSH_NODELAY_WORKAROUND
    451451 static int do_ssh_nodelay_workaround(void)
    452452 {
     
    480480        snprintf(sopath, sizeof(sopath), "%s/%s", LIBDIR, SSHNODELAY_SO);
    481481        res = access(sopath, R_OK);
    482482        if (res == -1) {
    483 @@ -794,16 +850,24 @@ static int do_ssh_nodelay_workaround(void)
     483@@ -866,16 +922,24 @@ static int do_ssh_nodelay_workaround(void)
    484484                        return -1;
    485485                }
    486486        }
     
    505505        g_free(newpreload);
    506506        return 0;
    507507 }
    508 @@ -1500,6 +1564,10 @@ static void sftp_detect_uid()
     508@@ -1595,6 +1659,10 @@ static void sftp_detect_uid()
    509509 
    510510        sshfs.remote_uid = stbuf.st_uid;
    511511        sshfs.local_uid = getuid();
     
    516516        sshfs.remote_uid_detected = 1;
    517517        DEBUG("remote_uid = %i\n", sshfs.remote_uid);
    518518 
    519 @@ -2120,6 +2188,14 @@ static int sshfs_chown(const char *path, uid_t uid, gid_t gid)
     519@@ -2238,6 +2306,14 @@ static int sshfs_chown(const char *path, uid_t uid, gid_t gid)
    520520        buf_init(&buf, 0);
    521521        buf_add_path(&buf, path);
    522522        buf_add_uint32(&buf, SSH_FILEXFER_ATTR_UIDGID);
     
    531531        buf_add_uint32(&buf, uid);
    532532        buf_add_uint32(&buf, gid);
    533533        err = sftp_request(SSH_FXP_SETSTAT, &buf, SSH_FXP_STATUS, NULL);
    534 @@ -2203,6 +2279,9 @@ static int sshfs_open_common(const char *path, mode_t mode,
     534@@ -2334,6 +2410,9 @@ static int sshfs_open_common(const char *path, mode_t mode,
    535535        sf = g_new0(struct sshfs_file, 1);
    536536        list_init(&sf->write_reqs);
    537537        pthread_cond_init(&sf->write_finished, NULL);
     
    541541        /* Assume random read after open */
    542542        sf->is_seq = 0;
    543543        sf->refs = 1;
    544 @@ -2236,11 +2315,21 @@ static int sshfs_open_common(const char *path, mode_t mode,
     544@@ -2368,11 +2447,21 @@ static int sshfs_open_common(const char *path, mode_t mode,
    545545        }
    546546 
    547547        if (!err) {
     
    563563                g_free(sf);
    564564        }
    565565        buf_free(&buf);
    566 @@ -2295,14 +2384,32 @@ static int sshfs_fsync(const char *path, int isdatasync,
     566@@ -2427,14 +2516,32 @@ static int sshfs_fsync(const char *path, int isdatasync,
    567567 
    568568 static void sshfs_file_put(struct sshfs_file *sf)
    569569 {
     
    596596 }
    597597 
    598598 static int sshfs_release(const char *path, struct fuse_file_info *fi)
    599 @@ -3076,6 +3183,15 @@ static int read_password(void)
     599@@ -3352,6 +3459,15 @@ static int read_password(void)
    600600                perror("Failed to allocate locked page for password");
    601601                return -1;
    602602        }
     
    612612 
    613613        /* Don't use fgets() because password might stay in memory */
    614614        for (n = 0; n < max_password; n++) {
    615 @@ -3123,7 +3239,7 @@ static void set_ssh_command(void)
    616                                 replace_arg(&sshfs.ssh_args.argv[0],
    617                                             sshfs.ssh_command);
    618                         } else {
    619 -                               if (fuse_opt_insert_arg(&sshfs.ssh_args, i,
    620 +                               if (fuse_opt_insert_arg(&sshfs.ssh_args, i,
    621                                                 sshfs.ssh_command) == -1)
    622                                         _exit(1);
    623                         }
    624 @@ -3227,8 +3343,13 @@ static int ssh_connect(void)
    625         return 0;
     615@@ -3677,8 +3793,13 @@ static inline void load_gid_map(void)
     616        read_id_map(sshfs.gid_file, &groupname_to_gid, "gid", &sshfs.gid_map, &sshfs.r_gid_map);
    626617 }
    627618 
    628619-int main(int argc, char *argv[])
     
    636627        int res;
    637628        struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
    638629        char *tmp;
    639 @@ -3236,6 +3357,10 @@ int main(int argc, char *argv[])
     630@@ -3686,6 +3807,10 @@ int main(int argc, char *argv[])
    640631        const char *sftp_server;
    641632        int libver;
    642633 
     
    647638        g_thread_init(NULL);
    648639 
    649640        sshfs.blksize = 4096;
    650 @@ -3243,7 +3368,11 @@ int main(int argc, char *argv[])
    651         sshfs.max_write = 65536;
     641@@ -3694,7 +3819,11 @@ int main(int argc, char *argv[])
     642        sshfs.max_write = 32768;
    652643        sshfs.nodelay_workaround = 1;
    653644        sshfs.nodelaysrv_workaround = 0;
    654645+#ifdef __APPLE__
     
    659650        sshfs.truncate_workaround = 0;
    660651        sshfs.buflimit_workaround = 1;
    661652        sshfs.ssh_ver = 2;
    662 @@ -3257,6 +3386,10 @@ int main(int argc, char *argv[])
     653@@ -3713,6 +3842,10 @@ int main(int argc, char *argv[])
    663654        ssh_add_arg("-a");
    664655        ssh_add_arg("-oClearAllForwardings=yes");
    665656 
  • Portfile

     
    44PortSystem 1.0
    55
    66name                sshfs
    7 version             2.3
     7version             2.4
    88categories          fuse
    99
    1010platforms           darwin
     
    2424master_sites        sourceforge:fuse
    2525license             GPL-2
    2626
    27 checksums           rmd160  5ea1180cbc60ff9401d7e53774dfda3a78f37ab1 \
    28                     sha256  ce229f87869d136c8347cca646f1dd6394c604127d021507a57205668d9288bb
     27checksums           rmd160  01e40fda6272ee601ff2d45050f9d1e635ee38f2 \
     28                    sha256  3c93ba8522568093c94ff9c5a3763929380dd229365d905769ff82475d774dd1
    2929
    3030livecheck.distname  sshfs-fuse
    3131