File squashfuse_from_appimage.patch of Package squashfuse
diff --git a/Makefile.am b/Makefile.am
index 746ad01..0a02409 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -32,23 +32,23 @@ libsquashfuse_la_SOURCES = swap.c cache.c table.c dir.c file.c fs.c \
dir.h file.h decompress.h xattr.h squashfuse.h hash.h stack.h traverse.h \
util.h fs.h
libsquashfuse_la_CPPFLAGS = $(ZLIB_CPPFLAGS) $(XZ_CPPFLAGS) $(LZO_CPPFLAGS) \
- $(LZ4_CPPFLAGS) $(ZSTD_CPPFLAGS)
+ $(LZ4_CPPFLAGS) $(ZSTD_CPPFLAGS) -ffat-lto-objects
libsquashfuse_la_LIBADD =
if SQ_WANT_FUSE
# Helper for FUSE clients: libfuseprivate
libfuseprivate_la_SOURCES = fuseprivate.c nonstd-makedev.c nonstd-enoattr.c \
fuseprivate.h stat.h stat.c
-libfuseprivate_la_CPPFLAGS = $(FUSE_CPPFLAGS)
+libfuseprivate_la_CPPFLAGS = $(FUSE_CPPFLAGS) -ffat-lto-objects
libfuseprivate_la_LIBADD =
-noinst_LTLIBRARIES += libfuseprivate.la
+lib_LTLIBRARIES += libfuseprivate.la
endif
# High-level squashfuse
if SQ_WANT_HIGHLEVEL
bin_PROGRAMS += squashfuse
squashfuse_SOURCES = hl.c
-squashfuse_CPPFLAGS = $(FUSE_CPPFLAGS)
+squashfuse_CPPFLAGS = $(FUSE_CPPFLAGS) -ffat-lto-objects
squashfuse_LDADD = libsquashfuse.la libfuseprivate.la $(COMPRESSION_LIBS) \
$(FUSE_LIBS)
@@ -57,10 +57,10 @@ endif
# Low-level squashfuse_ll, if supported
if SQ_WANT_LOWLEVEL
-bin_PROGRAMS += squashfuse_ll
-squashfuse_ll_SOURCES = ll.c ll_inode.c nonstd-daemon.c ll.h
-squashfuse_ll_CPPFLAGS = $(FUSE_CPPFLAGS)
-squashfuse_ll_LDADD = libsquashfuse.la libfuseprivate.la $(COMPRESSION_LIBS) \
+lib_LTLIBRARIES += libsquashfuse_ll.la
+libsquashfuse_ll_la_SOURCES = ll.c ll_inode.c nonstd-daemon.c ll.h
+libsquashfuse_ll_la_CPPFLAGS = $(FUSE_CPPFLAGS) -ffat-lto-objects
+libsquashfuse_ll_la_LIBADD = libsquashfuse.la libfuseprivate.la $(COMPRESSION_LIBS) \
$(FUSE_LIBS)
endif
diff --git a/ll.c b/ll.c
index 2330cdd..3115f75 100644
--- a/ll.c
+++ b/ll.c
@@ -544,7 +544,7 @@ static sqfs_ll *sqfs_ll_open(const char *path, size_t offset) {
return NULL;
}
-int main(int argc, char *argv[]) {
+int fusefs_main(int argc, char *argv[], void (*mounted) (void)) {
struct fuse_args args;
sqfs_opts opts;
@@ -626,6 +626,9 @@ int main(int argc, char *argv[]) {
if (opts.idle_timeout_secs) {
setup_idle_timeout(ch.session, opts.idle_timeout_secs);
}
+ if (mounted)
+ mounted ();
+
/* FIXME: multithreading */
err = fuse_session_loop(ch.session);
teardown_idle_timeout();
@@ -637,6 +640,8 @@ int main(int argc, char *argv[]) {
}
}
fuse_opt_free_args(&args);
+ if (mounted)
+ rmdir (fuse_cmdline_opts.mountpoint);
free(ll);
free(fuse_cmdline_opts.mountpoint);