<pre style='margin:0'>
Zhenfu Shi (i0ntempest) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/68019733c77f081b37211818e33a156c2367fb2a">https://github.com/macports/macports-ports/commit/68019733c77f081b37211818e33a156c2367fb2a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 68019733c77 sshfs: update to 3.7.3
</span>68019733c77 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 68019733c77f081b37211818e33a156c2367fb2a
</span>Author: i0ntempest <i0ntempest@i0ntempest.com>
AuthorDate: Mon May 12 21:26:22 2025 +1000
<span style='display:block; white-space:pre;color:#404040;'> sshfs: update to 3.7.3
</span>---
fuse/sshfs/Portfile | 67 +++++++---
...h-1a52814a4e4ccbc0774bb19bc655123398e407d5.diff | 37 ++++++
...h-5f767dec5b3fc07f665fdd4fbd9eb728a790f35f.diff | 122 +++++++++++++++++++
...h-70c8fd9031e7610bf182956a785f7fc8f104e0f7.diff | 135 +++++++++++++++++++++
...h-a9eb71cb1cfd1ae2bb9bd58e2405fde9bb9f5e75.diff | 12 ++
...h-ccb6821019c19600110af6750e0d2395a9401617.diff | 12 ++
fuse/sshfs/files/patch-configure.ac.diff | 19 ---
...h-ed0825440c48895b7e20cc1440bbafd8d9c88eb8.diff | 21 ++++
fuse/sshfs/files/sshfs.c.patch | 24 ----
9 files changed, 391 insertions(+), 58 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/Portfile b/fuse/sshfs/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a8853c504d6..2fa2bc66e9f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/fuse/sshfs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,11 +3,11 @@
</span> PortSystem 1.0
PortGroup github 1.0
PortGroup fuse 1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup meson 1.0
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup libfuse sshfs 2.10 sshfs-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Change github.tarball_from to 'releases' or 'archive' next update
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-github.tarball_from tarball
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup libfuse sshfs 3.7.3 sshfs-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span> categories fuse
maintainers {dports @drkp} openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -22,18 +22,55 @@ long_description This is a filesystem client based on the \
</span>
license GPL-2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 9c940d816480a6ffba9d43d257f7fcc2484d06f3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 640096693c8bf7dfebebb40bb05bb363ef4b5515105262c8c35b823a8c3f9c14 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 58307
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 6b773ded50ff56865ffcfa444e7664baa05cf8a6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 52a1a1e017859dfe72a550e6fef8ad4f8703ce312ae165f74b579fd7344e3a26 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 63968
</span>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_branch 3.13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_version [string map {. ""} ${python_branch}]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patch.pre_args-replace -p0 -p1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles patch-configure.ac.diff sshfs.c.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:coreutils \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python_version}-docutils
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-use_autoreconf yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append path:lib/pkgconfig/glib-2.0.pc:glib2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bin:ssh:openssh
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:gettext \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- path:lib/pkgconfig/glib-2.0.pc:glib2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:libiconv \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bin:ssh:openssh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete {*}[glob ${worksrcpath}/compat/fuse_opt*]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Patches below are merged - remove when updating past 3.7.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append patch-70c8fd9031e7610bf182956a785f7fc8f104e0f7.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-5f767dec5b3fc07f665fdd4fbd9eb728a790f35f.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-1a52814a4e4ccbc0774bb19bc655123398e407d5.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-a9eb71cb1cfd1ae2bb9bd58e2405fde9bb9f5e75.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-ed0825440c48895b7e20cc1440bbafd8d9c88eb8.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-ccb6821019c19600110af6750e0d2395a9401617.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|ln|${prefix}/bin/gln|g" ${worksrcpath}/utils/install_helper.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s| *'compat/fuse_opt.c',||" ${worksrcpath}/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|'rst2man'|'rst2man-${python_branch}'|" ${worksrcpath}/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} > 22} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -Wno-error=incompatible-function-pointer-types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant fs_link description "Link ${name} to a .fs bundle in /Library/Filesystems" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dir /Library/Filesystems/${name}.fs/Contents/Resources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${destroot}${dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${prefix}/bin/${name} ${destroot}${dir}/mount_${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.violate_mtree \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ notes-append "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ With +fs_link, you may use \'mount -t ${name}\' and use ${name} in /etc/fstab.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-1a52814a4e4ccbc0774bb19bc655123398e407d5.diff b/fuse/sshfs/files/patch-1a52814a4e4ccbc0774bb19bc655123398e407d5.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7715831f61f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/files/patch-1a52814a4e4ccbc0774bb19bc655123398e407d5.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,37 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/cache.c b/cache.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c57829dc..4277163e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/cache.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/cache.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -72,8 +72,9 @@ struct cache_dirent {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void free_node(gpointer node_)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct node *node = (struct node *) node_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (node->dir != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node->dir != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ g_ptr_array_free(node->dir, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ g_free(node);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -207,8 +208,9 @@ static void cache_add_dir(const char *path, GPtrArray *dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_mutex_lock(&cache.lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ node = cache_get(path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (node->dir != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node->dir != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ g_ptr_array_free(node->dir, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ node->dir = dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ node->dir_valid = time(NULL) + cache.dir_timeout_secs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (node->dir_valid > node->valid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -391,8 +393,9 @@ static int cache_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (node != NULL && node->dir != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ time_t now = time(NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (node->dir_valid - now >= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- for(cdent = (struct cache_dirent**)node->dir->pdata; *cdent != NULL; cdent++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for(cdent = (struct cache_dirent**)node->dir->pdata; *cdent != NULL; cdent++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filler(buf, (*cdent)->name, &(*cdent)->stat, 0, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_mutex_unlock(&cache.lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-5f767dec5b3fc07f665fdd4fbd9eb728a790f35f.diff b/fuse/sshfs/files/patch-5f767dec5b3fc07f665fdd4fbd9eb728a790f35f.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a9bdb2ca715
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/files/patch-5f767dec5b3fc07f665fdd4fbd9eb728a790f35f.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,122 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/cache.c b/cache.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9436c5a7..c57829dc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/cache.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/cache.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,6 +14,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <glib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define DEFAULT_CACHE_TIMEOUT_SECS 20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define DEFAULT_MAX_CACHE_SIZE 10000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -40,7 +41,7 @@ static struct cache cache;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct node {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct stat stat;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ time_t stat_valid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char **dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ GPtrArray *dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ time_t dir_valid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *link;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ time_t link_valid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -63,13 +64,27 @@ struct file_handle {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned long fs_fh;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct cache_dirent {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct stat stat;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void free_node(gpointer node_)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct node *node = (struct node *) node_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- g_strfreev(node->dir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node->dir != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_ptr_array_free(node->dir, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ g_free(node);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void free_cache_dirent(gpointer data) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct cache_dirent *cache_dirent = (struct cache_dirent *) data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (cache_dirent != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_free(cache_dirent->name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_free(cache_dirent);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int cache_clean_entry(void *key_, struct node *node, time_t *now)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (void) key_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -186,13 +201,14 @@ void cache_add_attr(const char *path, const struct stat *stbuf, uint64_t wrctr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_mutex_unlock(&cache.lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static void cache_add_dir(const char *path, char **dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void cache_add_dir(const char *path, GPtrArray *dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct node *node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_mutex_lock(&cache.lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ node = cache_get(path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- g_strfreev(node->dir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node->dir != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_ptr_array_free(node->dir, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ node->dir = dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ node->dir_valid = time(NULL) + cache.dir_timeout_secs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (node->dir_valid > node->valid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -341,7 +357,10 @@ static int cache_dirfill (void *buf, const char *name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ch = (struct readdir_handle*) buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = ch->filler(ch->buf, name, stbuf, off, flags);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!err) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- g_ptr_array_add(ch->dir, g_strdup(name));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct cache_dirent *cdent = g_malloc(sizeof(struct cache_dirent));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cdent->name = g_strdup(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cdent->stat = *stbuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_ptr_array_add(ch->dir, cdent);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (stbuf->st_mode & S_IFMT) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *fullpath;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char *basepath = !ch->path[1] ? "" : ch->path;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -361,8 +380,9 @@ static int cache_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct readdir_handle ch;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct file_handle *cfi;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char **dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ GPtrArray *dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct node *node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct cache_dirent **cdent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(offset == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -371,9 +391,8 @@ static int cache_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (node != NULL && node->dir != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ time_t now = time(NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (node->dir_valid - now >= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- for(dir = node->dir; *dir != NULL; dir++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- // FIXME: What about st_mode?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- filler(buf, *dir, NULL, 0, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for(cdent = (struct cache_dirent**)node->dir->pdata; *cdent != NULL; cdent++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ filler(buf, (*cdent)->name, &(*cdent)->stat, 0, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_mutex_unlock(&cache.lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -397,16 +416,16 @@ static int cache_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ch.buf = buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ch.filler = filler;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ch.dir = g_ptr_array_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_ptr_array_set_free_func(ch.dir, free_cache_dirent);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ch.wrctr = cache_get_write_ctr();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = cache.next_oper->readdir(path, &ch, cache_dirfill, offset, fi, flags);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ g_ptr_array_add(ch.dir, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dir = (char **) ch.dir->pdata;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dir = ch.dir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!err) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cache_add_dir(path, dir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- g_strfreev(dir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g_ptr_array_free(dir, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- g_ptr_array_free(ch.dir, FALSE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-70c8fd9031e7610bf182956a785f7fc8f104e0f7.diff b/fuse/sshfs/files/patch-70c8fd9031e7610bf182956a785f7fc8f104e0f7.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1147f753490
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/files/patch-70c8fd9031e7610bf182956a785f7fc8f104e0f7.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,135 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 3aa3efcb52d190bc9bc3c7302eaca0da2cca20ab Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: easy <g-easy@users.noreply.github.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 15 Feb 2022 14:39:50 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Implement connect to vsock.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"sshfs -o vsock=CID:PORT" will cause sshfs to connect directly to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+given vsock, bypassing ssh, and allowing high performance sshfs mounts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+of a VM guest.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshfs.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshfs.rst | 3 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 65 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/sshfs.c b/sshfs.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5513266d..89c57606 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/sshfs.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/sshfs.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -50,6 +50,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <libgen.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <darwin_compat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __linux__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <linux/vm_sockets.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "cache.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -349,6 +352,7 @@ struct sshfs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_mutex_t lock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int randseed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int max_conns;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *vsock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct conn *conns;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int ptyfd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int ptypassivefd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -504,6 +508,7 @@ static struct fuse_opt sshfs_opts[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SSHFS_OPT("dir_cache=no", dir_cache, 0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SSHFS_OPT("direct_io", direct_io, 1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SSHFS_OPT("max_conns=%u", max_conns, 1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ SSHFS_OPT("vsock=%s", vsock, 0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SSHFS_OPT("-h", show_help, 1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SSHFS_OPT("--help", show_help, 1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1281,6 +1286,60 @@ static int connect_to(struct conn *conn, char *host, char *port)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static int connect_vsock(struct conn *conn, char *vsock)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __linux__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(stderr, "vsock is not available\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int sock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct sockaddr_vm addr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ unsigned int cid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ unsigned int port;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *delim;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delim = strchr(vsock, ':');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (delim == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(stderr, "invalid vsock, expecting CID:PORT\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *delim = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cid = strtoul(vsock, NULL, 10);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (errno) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("invalid cid");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ port = strtoul(delim + 1, NULL, 10);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (errno) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("invalid port");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sock = socket(AF_VSOCK, SOCK_STREAM, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (sock == -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("failed to create socket");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ memset(&addr, 0, sizeof(addr));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addr.svm_family = AF_VSOCK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addr.svm_cid = cid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addr.svm_port = port;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ err = connect(sock, (const struct sockaddr *)&addr, sizeof(addr));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (err == -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("failed to connect vsock");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ close(sock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ conn->rfd = sock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ conn->wfd = sock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int do_write(struct conn *conn, struct iovec *iov, size_t count)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int res;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1833,6 +1892,8 @@ static int connect_remote(struct conn *conn)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = connect_passive(conn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (sshfs.directport)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = connect_to(conn, sshfs.host, sshfs.directport);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if (sshfs.vsock)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ err = connect_vsock(conn, sshfs.vsock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = start_ssh(conn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!err)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3645,6 +3706,7 @@ static void usage(const char *progname)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " -o no_check_root don't check for existence of 'dir' on server\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " -o password_stdin read password from stdin (only for pam_mount!)\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " -o max_conns=N open parallel SSH connections\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++" -o vsock=CID:PORT connect to the given vsock\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " -o SSHOPT=VAL ssh options (see man ssh_config)\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "FUSE Options:\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/sshfs.rst b/sshfs.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 58688721..1d418225 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/sshfs.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/sshfs.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -156,6 +156,9 @@ Options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -o directport=PORT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ directly connect to PORT bypassing ssh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++-o vsock=CID:PORT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ directly connect using a vsock to CID:PORT bypassing ssh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -o passive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ communicate over stdin and stdout bypassing network. Useful for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mounting local filesystem on the remote side. An example using
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-a9eb71cb1cfd1ae2bb9bd58e2405fde9bb9f5e75.diff b/fuse/sshfs/files/patch-a9eb71cb1cfd1ae2bb9bd58e2405fde9bb9f5e75.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4949f3f25f5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/files/patch-a9eb71cb1cfd1ae2bb9bd58e2405fde9bb9f5e75.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/sshfs.c 2022-05-26 23:23:35
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/sshfs.c 2025-05-12 05:57:12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,9 +14,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !defined(__CYGWIN__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <fuse_lowlevel.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# include <fuse_darwin.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-ccb6821019c19600110af6750e0d2395a9401617.diff b/fuse/sshfs/files/patch-ccb6821019c19600110af6750e0d2395a9401617.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d587c23493c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/files/patch-ccb6821019c19600110af6750e0d2395a9401617.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/meson.build b/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a408661c..383ca53b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,7 @@ cfg.set_quoted('PACKAGE_VERSION', meson.project_version())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include_dirs = [ include_directories('.') ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshfs_sources = ['sshfs.c', 'cache.c']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if target_machine.system() == 'darwin'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ add_global_arguments('-DFUSE_DARWIN_ENABLE_EXTENSIONS=0', language: 'c')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cfg.set_quoted('IDMAP_DEFAULT', 'user')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshfs_sources += [ 'compat/darwin_compat.c' ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include_dirs += [ include_directories('compat') ]
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-configure.ac.diff b/fuse/sshfs/files/patch-configure.ac.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 61707f3cea3..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/fuse/sshfs/files/patch-configure.ac.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,19 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/configure.ac.orig 2016-07-20 12:37:24.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/configure.ac 2016-07-20 12:38:27.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AC_INIT(sshfs, 2.8)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AC_CANONICAL_TARGET
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AM_INIT_AUTOMAKE([foreign subdir-objects])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--AM_CONFIG_HEADER(config.h)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+AC_CONFIG_HEADERS(config.h)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AC_PROG_CC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AM_PROG_CC_C_O
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -43,7 +43,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AM_CONDITIONAL(SSH_NODELAY_SO, test "$enable_sshnodelay" = "yes")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- PKG_CHECK_MODULES([SSHFS], [fuse >= 2.3 glib-2.0 gthread-2.0])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- have_fuse_opt_parse=no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- oldlibs="$LIBS"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/patch-ed0825440c48895b7e20cc1440bbafd8d9c88eb8.diff b/fuse/sshfs/files/patch-ed0825440c48895b7e20cc1440bbafd8d9c88eb8.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..88174421653
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/sshfs/files/patch-ed0825440c48895b7e20cc1440bbafd8d9c88eb8.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/sshfs.c b/sshfs.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ad8192cd..676fd586 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/sshfs.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/sshfs.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3798,6 +3798,16 @@ static int sshfs_opt_proc(void *data, const char *arg, int key,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshfs.mountpoint = strdup(arg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshfs.mountpoint = realpath(arg, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!sshfs.mountpoint) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * The mountpoint does not exist, yet.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * macFUSE will try to create it before
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * mounting the volume.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sshfs.mountpoint = strdup(arg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!sshfs.mountpoint) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/sshfs/files/sshfs.c.patch b/fuse/sshfs/files/sshfs.c.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 85a568c36ba..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/fuse/sshfs/files/sshfs.c.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,24 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sshfs.c.orig 2021-06-03 08:24:03.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sshfs.c 2021-06-03 08:26:19.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -14,9 +14,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if !defined(__CYGWIN__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <fuse_lowlevel.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# include <fuse_darwin.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <assert.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3859,7 +3859,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif /* __APPLE__ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sshfs.blksize = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sshfs.blksize = 4096;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* SFTP spec says all servers should allow at least 32k I/O */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sshfs.max_read = 32768;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sshfs.max_write = 32768;
</span></pre><pre style='margin:0'>
</pre>