<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/b506fc6694439501496b7b9be623ee096f5076b7">https://github.com/macports/macports-ports/commit/b506fc6694439501496b7b9be623ee096f5076b7</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 b506fc66944 btfs: submission
</span>b506fc66944 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit b506fc6694439501496b7b9be623ee096f5076b7
</span>Author: i0ntempest <i0ntempest@i0ntempest.com>
AuthorDate: Wed May 14 18:36:12 2025 +1000

<span style='display:block; white-space:pre;color:#404040;'>    btfs: submission
</span>---
 fuse/btfs/Portfile                                 |  68 +++++++++++
 fuse/btfs/files/patch-83.diff                      |  96 +++++++++++++++
 ...t-e0659b09a9e4f8c5f04382e33d0c2940940bb9dd.diff | 134 +++++++++++++++++++++
 3 files changed, 298 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/fuse/btfs/Portfile b/fuse/btfs/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3807dd94bf1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/btfs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,68 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           fuse 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           boost 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           openssl 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        johang btfs 3.1 v
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          fuse net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {i0ntempest @i0ntempest} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         A bittorrent filesystem based on FUSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    With ${name}, you can mount any .torrent file or magnet link and then use it\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    as any read-only directory in your file tree. The contents of the files will\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    be downloaded on-demand as they are read by applications.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  f34ad8ce516fbb71966941bdb030116bb237d184 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  c363f04149f97baf1c5e10ac90677b8309724f2042ab045a45041cfb7b44649b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    24847
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Keep this in sync with boost version used for libtorrent-rasterbar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+boost.version       1.81
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+boost.depends_type  build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:curl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libtorrent-rasterbar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.args          -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Revert upgrade to fuse 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Keep this for now for future reference
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#patchfiles-append   patch-revert-e0659b09a9e4f8c5f04382e33d0c2940940bb9dd.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-83.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;'>+    # Do not install btplay script - requires fusermount, unusable on macos
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|scripts/Makefile ||" ${worksrcpath}/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|scripts ||" ${worksrcpath}/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|-std=c++14|-std=gnu++14|" ${worksrcpath}/src/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|__APPLE__|__IGNORE__|" ${worksrcpath}/src/btfs.cc
</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;'>+use_autoreconf      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DFUSE_DARWIN_ENABLE_EXTENSIONS=0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-silent-rules
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     2014
</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/btfs/files/patch-83.diff b/fuse/btfs/files/patch-83.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..778fd70b526
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/btfs/files/patch-83.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,96 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/man/btfs.1 b/man/btfs.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3dab66e..dcdb23a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/man/btfs.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/man/btfs.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -45,6 +45,9 @@ maximum download rate (in kilobytes per second)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ \fB\-\-max-upload-rate=\fIRATE\fR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ maximum upload rate (in kilobytes per second)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++\fB\-\-no\-prefetch\fR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++do not download files unless an application requests it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .SH EXAMPLES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mounting a torrent file:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   btfs video.torrent ~/mnt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/btfs.cc b/src/btfs.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4696bd1..67c39ac 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/btfs.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/btfs.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -106,7 +106,9 @@ jump(int piece, int size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ advance() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  jump(cursor, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if(!params.no_prefetch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          jump(cursor, 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;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Read::Read(char *buf, int index, off_t offset, size_t size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -118,6 +120,10 @@ Read::Read(char *buf, int index, off_t offset, size_t size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int64_t file_size = ti->files().file_size(index);
</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;'>++  if(params.no_prefetch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          handle.file_priority(index, 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;'>+   while (size > 0 && offset < file_size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           libtorrent::peer_request part = ti->map_file(index, offset,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   (int) size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -182,8 +188,15 @@ int Read::read() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Trigger reads of finished pieces
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   trigger();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // Move sliding window to first piece to serve this request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  jump(parts.front().part.piece, size());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (params.no_prefetch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          // Set priority of needed pieces
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          for (parts_iter i = parts.begin(); i != parts.end(); ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  handle.piece_priority(i->part.piece, 7);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          // Move sliding window to first piece to serve this request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          jump(parts.front().part.piece, size());
</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;'>+   while (!finished() && !failed)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           // Wait for any piece to downloaded
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -206,6 +219,9 @@ setup() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (int i = 0; i < ti->num_files(); ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           std::string parent("");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if(params.no_prefetch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  handle.file_priority(i, 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;'>+ #if LIBTORRENT_VERSION_NUM < 10100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           char *p = strdup(ti->file_at(i).path.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -935,6 +951,7 @@ static const struct fuse_opt btfs_opts[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   BTFS_OPT("--max-port=%lu",               max_port,             4),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   BTFS_OPT("--max-download-rate=%lu",      max_download_rate,    4),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   BTFS_OPT("--max-upload-rate=%lu",        max_upload_rate,      4),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  BTFS_OPT("--no-prefetch",                no_prefetch,          1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   FUSE_OPT_END
</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;'>+@@ -973,6 +990,7 @@ print_help() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf("    --max-port=N           end of listen port range\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf("    --max-download-rate=N  max download rate (in kB/s)\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf("    --max-upload-rate=N    max upload rate (in kB/s)\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  printf("    --no-prefetch          don't prefetch files in the background\n");
</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;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/btfs.h b/src/btfs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f16da78..ded0b01 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/btfs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/btfs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -131,6 +131,7 @@ struct btfs_params {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int max_download_rate;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int max_upload_rate;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const char *metadata;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int no_prefetch;
</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;color:#808080;'>diff --git a/fuse/btfs/files/patch-revert-e0659b09a9e4f8c5f04382e33d0c2940940bb9dd.diff b/fuse/btfs/files/patch-revert-e0659b09a9e4f8c5f04382e33d0c2940940bb9dd.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..74bf986955c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/fuse/btfs/files/patch-revert-e0659b09a9e4f8c5f04382e33d0c2940940bb9dd.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,134 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- b/.github/workflows/ci.yml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ a/.github/workflows/ci.yml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,7 +33,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         DEBIAN_FRONTEND: noninteractive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         apt-get update
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        apt-get -y install build-essential g++ autoconf autoconf-archive automake libtool libtorrent-rasterbar-dev libfuse-dev libcurl4-openssl-dev
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        apt-get -y install build-essential g++ autoconf autoconf-archive automake libtool libtorrent-rasterbar-dev libfuse3-dev libcurl4-openssl-dev
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     - name: Build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         autoreconf -i
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- b/README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ a/README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,13 +47,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ## Dependencies (on Linux)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++* fuse ("fuse" in Ubuntu 16.04)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++* libtorrent ("libtorrent-rasterbar8" in Ubuntu 16.04)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++* libcurl ("libcurl3" in Ubuntu 16.04)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-* fuse3 ("fuse3" in Ubuntu 22.04)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-* libtorrent ("libtorrent-rasterbar8" in Ubuntu 22.04)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-* libcurl ("libcurl4" in Ubuntu 22.04)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ## Building from git on a recent Debian/Ubuntu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    $ sudo apt-get install autoconf automake libfuse-dev libtorrent-rasterbar-dev libcurl4-openssl-dev g++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    $ sudo apt-get install autoconf automake libfuse3-dev libtorrent-rasterbar-dev libcurl4-openssl-dev g++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     $ git clone https://github.com/johang/btfs.git btfs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     $ cd btfs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     $ autoreconf -i
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -68,7 +68,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Use [`brew`](https://brew.sh) to get the dependencies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    $ brew install Caskroom/cask/osxfuse libtorrent-rasterbar autoconf automake pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    $ brew install --cask macfuse libtorrent-rasterbar autoconf automake pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     $ git clone https://github.com/johang/btfs.git btfs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     $ cd btfs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     $ autoreconf -i
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ a/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_PREREQ([2.69])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AC_INIT(btfs, 3.1, johan.gunnarsson@gmail.com, btfs, https://github.com/johang/btfs)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AC_INIT([btfs],[3.1],[johan.gunnarsson@gmail.com],[btfs],[https://github.com/johang/btfs])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_CONFIG_SRCDIR([src/btfs.cc])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AM_INIT_AUTOMAKE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,7 +8,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_PROG_CXX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Checks for libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++PKG_CHECK_MODULES(FUSE, fuse >= 2.8.0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-PKG_CHECK_MODULES(FUSE, fuse3 >= 3.0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PKG_CHECK_MODULES(LIBTORRENT, libtorrent-rasterbar >= 1.0.0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PKG_CHECK_MODULES(LIBCURL, libcurl >= 7.22.0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,5 +25,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Check if -latomic is needed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_SEARCH_LIBS(__atomic_load, atomic)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AC_OUTPUT(Makefile src/Makefile scripts/Makefile man/Makefile)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AC_CONFIG_FILES([Makefile src/Makefile scripts/Makefile man/Makefile])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AC_OUTPUT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- b/src/btfs.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ a/src/btfs.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,7 +17,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ along with BTFS.  If not, see <http://www.gnu.org/licenses/>.
</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;'>++#define FUSE_USE_VERSION 26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define FUSE_USE_VERSION 31
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstdlib>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <iostream>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,8 +27,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/types.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;'>++#include <fuse.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <fuse3/fuse.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <fuse3/fuse_opt.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // The below pragma lines will silence lots of compiler warnings in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // libtorrent headers file. Not btfs' fault.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -421,9 +420,7 @@
</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
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++btfs_getattr(const char *path, struct stat *stbuf) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-btfs_getattr(const char *path, struct stat *stbuf,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          struct fuse_file_info *fi) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  (void) fi;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!is_dir(path) && !is_file(path) && !is_root(path))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return -ENOENT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -468,9 +465,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ btfs_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          off_t offset, struct fuse_file_info *fi) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          off_t offset, struct fuse_file_info *fi,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          enum fuse_readdir_flags flags) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  (void)flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!is_dir(path) && !is_file(path) && !is_root(path))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return -ENOENT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -479,12 +474,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pthread_mutex_lock(&lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  filler(buf, ".", NULL, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  filler(buf, "..", NULL, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  filler(buf, ".", NULL, 0, (enum fuse_fill_dir_flags)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  filler(buf, "..", NULL, 0, (enum fuse_fill_dir_flags)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (std::set<std::string>::iterator i = dirs[path].begin();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   i != dirs[path].end(); ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          filler(buf, i->c_str(), NULL, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          filler(buf, i->c_str(), NULL, 0, (enum fuse_fill_dir_flags)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;'>+   pthread_mutex_unlock(&lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -560,8 +555,7 @@
</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 *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++btfs_init(struct fuse_conn_info *conn) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-btfs_init(struct fuse_conn_info *conn,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          struct fuse_config *cfg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pthread_mutex_lock(&lock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   time_of_mount = time(NULL);
</span></pre><pre style='margin:0'>

</pre>