aboutsummaryrefslogtreecommitdiff
path: root/sysutils/fusefs-sshfs
diff options
context:
space:
mode:
authorMartin Wilke <miwi@FreeBSD.org>2006-12-04 22:29:46 +0000
committerMartin Wilke <miwi@FreeBSD.org>2006-12-04 22:29:46 +0000
commit0a2d3954ffaf06b9450966b95b3732c9f7eb532a (patch)
treef6a4bec78db5211f7df89d44b27c418a1472d570 /sysutils/fusefs-sshfs
parent91480543db573aa08e2750be09341123a3711b23 (diff)
downloadports-0a2d3954ffaf06b9450966b95b3732c9f7eb532a.tar.gz
ports-0a2d3954ffaf06b9450966b95b3732c9f7eb532a.zip
Notes
Diffstat (limited to 'sysutils/fusefs-sshfs')
-rw-r--r--sysutils/fusefs-sshfs/Makefile2
-rw-r--r--sysutils/fusefs-sshfs/distinfo6
-rw-r--r--sysutils/fusefs-sshfs/files/patch-sshfs.c64
3 files changed, 68 insertions, 4 deletions
diff --git a/sysutils/fusefs-sshfs/Makefile b/sysutils/fusefs-sshfs/Makefile
index e6c8b4290664..352c45ec7300 100644
--- a/sysutils/fusefs-sshfs/Makefile
+++ b/sysutils/fusefs-sshfs/Makefile
@@ -5,7 +5,7 @@
#
PORTNAME= sshfs
-PORTVERSION= 1.6
+PORTVERSION= 1.7
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= fuse
diff --git a/sysutils/fusefs-sshfs/distinfo b/sysutils/fusefs-sshfs/distinfo
index 74ab5a359d52..f9555beedacd 100644
--- a/sysutils/fusefs-sshfs/distinfo
+++ b/sysutils/fusefs-sshfs/distinfo
@@ -1,3 +1,3 @@
-MD5 (sshfs-fuse-1.6.tar.gz) = 04fa75c1357bea362537efe15805e7da
-SHA256 (sshfs-fuse-1.6.tar.gz) = 2d8a983c37a1e443bd1ba46a0d68ea3f0b5360471b7d65a0a1a30b745d9e363a
-SIZE (sshfs-fuse-1.6.tar.gz) = 98049
+MD5 (sshfs-fuse-1.7.tar.gz) = e91a2fed1da952a375798408dc6e41a0
+SHA256 (sshfs-fuse-1.7.tar.gz) = 9f39b71d5b247535ac0d44f559125c4e904b0a0303ad5a976161fb3d91807fe1
+SIZE (sshfs-fuse-1.7.tar.gz) = 101424
diff --git a/sysutils/fusefs-sshfs/files/patch-sshfs.c b/sysutils/fusefs-sshfs/files/patch-sshfs.c
new file mode 100644
index 000000000000..825af6035b37
--- /dev/null
+++ b/sysutils/fusefs-sshfs/files/patch-sshfs.c
@@ -0,0 +1,64 @@
+--- sshfs.c.orig Fri Aug 18 10:38:37 2006 +0000
++++ sshfs.c Fri Sep 29 14:22:54 2006 +0000
+@@ -147,6 +147,7 @@ struct sshfs_file {
+ int is_seq;
+ int connver;
+ int modifver;
++ int refs;
+ };
+
+ struct sshfs {
+@@ -1768,6 +1769,7 @@ static int sshfs_open_common(const char
+ pthread_cond_init(&sf->write_finished, NULL);
+ /* Assume random read after open */
+ sf->is_seq = 0;
++ sf->refs = 1;
+ sf->next_pos = 0;
+ sf->modifver= sshfs.modifver;
+ sf->connver = sshfs.connver;
+@@ -1851,6 +1853,19 @@ static int sshfs_fsync(const char *path,
+ return sshfs_flush(path, fi);
+ }
+
++static void sshfs_file_put(struct sshfs_file *sf)
++{
++ sf->refs--;
++ if (!sf->refs)
++ g_free(sf);
++}
++
++static struct sshfs_file *sshfs_file_get(struct sshfs_file *sf)
++{
++ sf->refs++;
++ return sf;
++}
++
+ static int sshfs_release(const char *path, struct fuse_file_info *fi)
+ {
+ struct sshfs_file *sf = get_sshfs_file(fi);
+@@ -1861,7 +1876,7 @@ static int sshfs_release(const char *pat
+ }
+ buf_free(handle);
+ chunk_put_locked(sf->readahead);
+- g_free(sf);
++ sshfs_file_put(sf);
+ return 0;
+ }
+
+@@ -2084,6 +2099,7 @@ static void sshfs_write_end(struct reque
+ }
+ list_del(&req->list);
+ pthread_cond_broadcast(&sf->write_finished);
++ sshfs_file_put(sf);
+ }
+
+ static int sshfs_write(const char *path, const char *wbuf, size_t size,
+@@ -2110,7 +2126,7 @@ static int sshfs_write(const char *path,
+ iov[1].iov_len = size;
+ if (!sshfs.sync_write && !sf->write_error)
+ err = sftp_request_send(SSH_FXP_WRITE, iov, 2, sshfs_write_begin,
+- sshfs_write_end, 0, sf, NULL);
++ sshfs_write_end, 0, sshfs_file_get(sf), NULL);
+ else
+ err = sftp_request_iov(SSH_FXP_WRITE, iov, 2, SSH_FXP_STATUS, NULL);
+ buf_free(&buf); \ No newline at end of file