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);
 	
openSUSE Build Service is sponsored by