<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>