Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xwmfs for openSUSE:Factory checked 
in at 2025-08-29 18:37:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xwmfs (Old)
 and      /work/SRC/openSUSE:Factory/.xwmfs.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xwmfs"

Fri Aug 29 18:37:08 2025 rev:8 rq:1301904 version:1.00

Changes:
--------
--- /work/SRC/openSUSE:Factory/xwmfs/xwmfs.changes      2022-05-05 
23:07:32.129642841 +0200
+++ /work/SRC/openSUSE:Factory/.xwmfs.new.1977/xwmfs.changes    2025-08-29 
18:39:09.876192382 +0200
@@ -1,0 +2,12 @@
+Fri Aug 29 10:06:16 UTC 2025 - Matthias Gerstner <matthias.gerst...@suse.com>
+
+- add explicit pkgconfig(fuse3) build dependency
+
+-------------------------------------------------------------------
+Thu Aug 28 14:06:31 UTC 2025 - Matthias Gerstner <matthias.gerst...@suse.com>
+
+- update to version v1.00:
+  * build against libfuse3 (bsc#1242088)
+  * stability bugfixes
+
+-------------------------------------------------------------------

Old:
----
  xwmfs-0.91-dist.tar.gz

New:
----
  xwmfs-1.00-dist.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xwmfs.spec ++++++
--- /var/tmp/diff_new_pack.dZUCJc/_old  2025-08-29 18:39:10.356212767 +0200
+++ /var/tmp/diff_new_pack.dZUCJc/_new  2025-08-29 18:39:10.356212767 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package xwmfs
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,11 +19,12 @@
 Name:           xwmfs
 BuildRequires:  autoconf
 BuildRequires:  automake
-BuildRequires:  fuse-devel
+BuildRequires:  fuse3-devel
 BuildRequires:  gcc-c++
 BuildRequires:  libX11-devel
-Requires:       fuse
-Version:        0.91
+BuildRequires:  pkgconfig(fuse3)
+Requires:       fuse3
+Version:        1.00
 Release:        0
 URL:            https://github.com/gerstner-hub/xwmfs
 Summary:        A file system for accessing X server and window manager 
features

++++++ xwmfs-0.91-dist.tar.gz -> xwmfs-1.00-dist.tar.gz ++++++
++++ 20274 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/ChangeLog new/xwmfs-1.00/ChangeLog
--- old/xwmfs-0.91/ChangeLog    2022-05-04 19:26:21.000000000 +0200
+++ new/xwmfs-1.00/ChangeLog    2025-08-28 15:32:23.000000000 +0200
@@ -1,3 +1,16 @@
+2025-08-28 Matthias Gerstner <matthias.gerst...@nefkom.net>
+
+       version 1.00
+
+       - support libfuse3 API
+       - some bugfixes in the area of race conditions and robustness
+
+2023-02-16 Matthias Gerstner <matthias.gerst...@nefkom.net>
+
+       version 0.92
+
+       - Fix linker error occuring with gcc major version 13.
+
 2022-05-04 Matthias Gerstner <matthias.gerst...@nefkom.net>
 
        version 0.91
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/configure.ac new/xwmfs-1.00/configure.ac
--- old/xwmfs-0.91/configure.ac 2022-05-04 19:54:32.000000000 +0200
+++ new/xwmfs-1.00/configure.ac 2025-08-28 15:32:23.000000000 +0200
@@ -4,7 +4,7 @@
 AC_PREREQ([2.71])
 
 dnl Our wmfs application
-AC_INIT([xwmfs],[0.91],[matthias.gerst...@nefkom.net])
+AC_INIT([xwmfs],[1.00],[matthias.gerst...@nefkom.net])
 
 dnl Stores some generated files in a separate directory for cleaner structure
 AC_CONFIG_AUX_DIR(config_aux)
@@ -38,12 +38,12 @@
 
 dnl we need fuse
 dnl AC_CHECK_LIB([fuse], [fuse_main], [], [AC_MSG_ERROR([You need the fuse 
userspace library to build this package])])
-PKG_CHECK_MODULES([fuse], [ fuse >= 2.8.1 ])
+PKG_CHECK_MODULES([fuse3], [ fuse3 >= 3.0.0 ])
 dnl we also need X11
 PKG_CHECK_MODULES([x11], [ x11 >= 1.2.2 ])
 
-AC_SUBST([fuse_CFLAGS])
-AC_SUBST([fuse_LIBS])
+AC_SUBST([fuse3_CFLAGS])
+AC_SUBST([fuse3_LIBS])
 
 AC_SUBST([x11_CFLAGS])
 AC_SUBST([x11_LIBS])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/Makefile.am new/xwmfs-1.00/src/Makefile.am
--- old/xwmfs-0.91/src/Makefile.am      2022-05-04 19:17:55.000000000 +0200
+++ new/xwmfs-1.00/src/Makefile.am      2025-08-28 15:32:23.000000000 +0200
@@ -32,7 +32,7 @@
 # we need x11 and fuse
 xwmfs_DEPENDENCIES = x11 fuse
 # makes it possible to include headers from fuse or x11, to select a recent 
fuse API version
-AM_CFLAGS = -DFUSE_USE_VERSION=26 @fuse_CFLAGS@ @x11_CFLAGS@ 
-I${top_srcdir}/src
+AM_CFLAGS = -DFUSE_USE_VERSION=35 @fuse3_CFLAGS@ @x11_CFLAGS@ 
-I${top_srcdir}/src
 if DEV
 AM_CFLAGS += -Wall -Werror -Wextra -Wnull-dereference -Wdouble-promotion 
-Wshadow -Wformat=2
 
@@ -48,5 +48,5 @@
 # use this instead of AM_LDFLAGS to have the libraries appear AFTER the object
 # files. Otherwise we get trouble on distros where as-needed linking is
 # enabled
-xwmfs_LDADD = @fuse_LIBS@ @x11_LIBS@
+xwmfs_LDADD = @fuse3_LIBS@ @x11_LIBS@
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/Entry.cxx new/xwmfs-1.00/src/fuse/Entry.cxx
--- old/xwmfs-0.91/src/fuse/Entry.cxx   2021-03-21 13:02:52.000000000 +0100
+++ new/xwmfs-1.00/src/fuse/Entry.cxx   2025-08-28 15:32:23.000000000 +0200
@@ -72,7 +72,7 @@
        return endpos;
 }
 
-void Entry::getStat(struct stat *s)
+void Entry::getStat(struct stat *s) const
 {
        s->st_uid = m_uid;
        s->st_gid = m_gid;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/Entry.hxx new/xwmfs-1.00/src/fuse/Entry.hxx
--- old/xwmfs-0.91/src/fuse/Entry.hxx   2021-03-21 13:02:52.000000000 +0100
+++ new/xwmfs-1.00/src/fuse/Entry.hxx   2025-08-28 15:32:23.000000000 +0200
@@ -120,7 +120,7 @@
         *      Fills in the status information corresponding to this entry
         *      into \c s
         **/
-       virtual void getStat(struct stat *s);
+       virtual void getStat(struct stat *s) const;
 
        //! increases the reference count
        void ref() { m_refcount++; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/FileEntry.cxx new/xwmfs-1.00/src/fuse/FileEntry.cxx
--- old/xwmfs-0.91/src/fuse/FileEntry.cxx       2021-03-21 13:02:52.000000000 
+0100
+++ new/xwmfs-1.00/src/fuse/FileEntry.cxx       2025-08-28 15:32:23.000000000 
+0200
@@ -8,14 +8,20 @@
 namespace xwmfs
 {
 
-void FileEntry::getStat(struct stat *s)
+void FileEntry::getStat(struct stat *s) const
 {
        Entry::getStat(s);
        MutexGuard g(m_parent->getLock());
 
+       /*
+        * we are modifying the stream position here, but that isn't
+        * problematic, since we'll always reposition it during read or write.
+        */
+       auto &stream = 
static_cast<std::stringstream&>(const_cast<FileEntry&>(*this));
+
        // determine size of stream and return it in stat structure
-       this->seekg( 0, xwmfs::FileEntry::end );
-       s->st_size = this->tellg();
+       stream.seekg( 0, xwmfs::FileEntry::end );
+       s->st_size = stream.tellg();
 }
 
 int FileEntry::write(OpenContext *ctx, const char *data, size_t size, off_t 
offset)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/FileEntry.hxx new/xwmfs-1.00/src/fuse/FileEntry.hxx
--- old/xwmfs-0.91/src/fuse/FileEntry.hxx       2021-03-18 12:51:41.000000000 
+0100
+++ new/xwmfs-1.00/src/fuse/FileEntry.hxx       2025-08-28 15:32:23.000000000 
+0200
@@ -80,7 +80,7 @@
 
        int read(OpenContext *ctx, char *buf, size_t size, off_t offset) 
override;
 
-       void getStat(struct stat*) override;
+       void getStat(struct stat*) const override;
 };
 
 } // end ns
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/SymlinkEntry.cxx 
new/xwmfs-1.00/src/fuse/SymlinkEntry.cxx
--- old/xwmfs-0.91/src/fuse/SymlinkEntry.cxx    2021-03-21 13:02:52.000000000 
+0100
+++ new/xwmfs-1.00/src/fuse/SymlinkEntry.cxx    2025-08-28 15:32:23.000000000 
+0200
@@ -11,7 +11,7 @@
 namespace xwmfs
 {
 
-void SymlinkEntry::getStat(struct stat *s)
+void SymlinkEntry::getStat(struct stat *s) const
 {
        Entry::getStat(s);
        MutexGuard g(m_parent->getLock());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/SymlinkEntry.hxx 
new/xwmfs-1.00/src/fuse/SymlinkEntry.hxx
--- old/xwmfs-0.91/src/fuse/SymlinkEntry.hxx    2021-03-21 13:02:52.000000000 
+0100
+++ new/xwmfs-1.00/src/fuse/SymlinkEntry.hxx    2025-08-28 15:32:23.000000000 
+0200
@@ -25,7 +25,7 @@
                m_target = target;
        }
 
-       void getStat(struct stat*) override;
+       void getStat(struct stat*) const override;
 
        virtual int readlink(char *buf, size_t size) override;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/xwmfs_fuse_ops.h 
new/xwmfs-1.00/src/fuse/xwmfs_fuse_ops.h
--- old/xwmfs-0.91/src/fuse/xwmfs_fuse_ops.h    2021-03-21 13:02:52.000000000 
+0100
+++ new/xwmfs-1.00/src/fuse/xwmfs_fuse_ops.h    2025-08-28 15:32:23.000000000 
+0200
@@ -21,7 +21,8 @@
 
 extern int xwmfs_getattr(
        const char *path,
-       struct stat *stbuf
+       struct stat *stbuf,
+       struct fuse_file_info *fi
 );
 
 extern int xwmfs_readdir(
@@ -29,7 +30,8 @@
        void *buf,
        fuse_fill_dir_t filler,
        off_t offset,
-       struct fuse_file_info *fi
+       struct fuse_file_info *fi,
+       enum fuse_readdir_flags flags
 );
 
 extern int xwmfs_open(
@@ -66,11 +68,13 @@
 
 extern int xwmfs_truncate(
        const char *path,
-       off_t size
+       off_t size,
+       struct fuse_file_info *fi
 );
 
 extern void* xwmfs_init(
-       struct fuse_conn_info*
+       struct fuse_conn_info*,
+       struct fuse_config*
 );
 
 extern void xwmfs_destroy(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/fuse/xwmfs_fuse_ops_impl.cxx 
new/xwmfs-1.00/src/fuse/xwmfs_fuse_ops_impl.cxx
--- old/xwmfs-0.91/src/fuse/xwmfs_fuse_ops_impl.cxx     2021-03-21 
13:02:52.000000000 +0100
+++ new/xwmfs-1.00/src/fuse/xwmfs_fuse_ops_impl.cxx     2025-08-28 
15:32:23.000000000 +0200
@@ -26,22 +26,31 @@
 
 xwmfs::RootEntry *filesystem = nullptr;
 
+static OpenContext* context_from_fi(struct fuse_file_info *fi) {
+       // get our entry pointer back from the file handle field
+       return reinterpret_cast<xwmfs::OpenContext*>(fi->fh);
+}
+
+static Entry* entry_from_fi(struct fuse_file_info *fi) {
+       xwmfs::OpenContext *context = context_from_fi(fi);
+       return context->getEntry();
 }
 
+} // end ns
+
 /**
  * \brief
  *     Get stat information about a file system entry
  * \details
- *     stat is done w/o an open context
+ *     stat may happen with or without file open context in `fi`.
  **/
-int xwmfs_getattr(const char *path, struct stat *stbuf)
+int xwmfs_getattr(const char *path, struct stat *stbuf, struct fuse_file_info 
*fi)
 {
        memset(stbuf, 0, sizeof(struct stat));
        xwmfs::FileSysReadGuard read_guard( *xwmfs::filesystem );
 
-       xwmfs::Entry *entry = xwmfs::filesystem->findEntry( path );
-
-       if( ! entry )
+       const xwmfs::Entry *entry = fi ? xwmfs::entry_from_fi(fi) : 
xwmfs::filesystem->findEntry(path);
+       if( !entry )
        {
                xwmfs::StdLogger::getInstance().debug()
                        << __FUNCTION__ << ": noent for path "
@@ -67,7 +76,7 @@
  **/
 int xwmfs_readdir(
        const char *path, void *buf, fuse_fill_dir_t filler,
-        off_t offset, struct fuse_file_info *fi)
+       off_t offset, struct fuse_file_info *fi, enum fuse_readdir_flags flags)
 {
        (void) offset;
        (void) fi;
@@ -108,9 +117,20 @@
        // okay we found a valid directory to list the contents of
        const auto &entries = dir_entry->getEntries();
 
+       /*
+        * the kernel would like stat information for each entry right away.
+        */
+       const bool provide_stat = (flags & FUSE_READDIR_PLUS) != 0;
+       const enum fuse_fill_dir_flags fill_flags = provide_stat ? 
FUSE_FILL_DIR_PLUS : FUSE_FILL_DIR_DEFAULTS;
+       struct stat stbuf;
+
        for( const auto &it: entries )
        {
-               filler(buf, it.first, nullptr, 0);
+               if (provide_stat) {
+                       it.second->getStat(&stbuf);
+               }
+
+               filler(buf, it.first, provide_stat ? &stbuf : nullptr, 0, 
fill_flags);
        }
 
        return 0;
@@ -175,8 +195,7 @@
 
        xwmfs::FileSysReadGuard read_guard( *xwmfs::filesystem );
 
-       // get our entry pointer back from the file handle field
-       xwmfs::OpenContext *context = 
reinterpret_cast<xwmfs::OpenContext*>(fi->fh);
+       auto *context = xwmfs::context_from_fi(fi);
        auto entry = context->getEntry();
 
        entry->destroyOpenContext(context);
@@ -194,7 +213,7 @@
        xwmfs::FileSysReadGuard read_guard( *xwmfs::filesystem );
 
        // get our context pointer back from the file handle field
-       xwmfs::OpenContext *context = 
reinterpret_cast<xwmfs::OpenContext*>(fi->fh);
+       auto context = xwmfs::context_from_fi(fi);
        auto entry = context->getEntry();
 
        try
@@ -240,9 +259,7 @@
 
        xwmfs::FileSysReadGuard read_guard( *xwmfs::filesystem );
 
-       // get our context pointer back from the file handle field
-       xwmfs::OpenContext *context = 
reinterpret_cast<xwmfs::OpenContext*>(fi->fh);
-
+       auto context = xwmfs::context_from_fi(fi);
        auto entry = context->getEntry();
 
        try
@@ -259,7 +276,7 @@
        }
 }
 
-int xwmfs_truncate(const char *path, off_t size)
+int xwmfs_truncate(const char *path, off_t size, struct fuse_file_info *fi)
 {
        // do nothing
        //
@@ -272,6 +289,7 @@
        // that try to truncate a file upon writing.
        (void)path;
        (void)size;
+       (void)fi;
        return 0;
 }
 
@@ -309,10 +327,14 @@
  *     The returned value is passed to all other operations in the
  *     fuse_context structure and also to xwmfs_destroy(void*)
  **/
-void* xwmfs_init(struct fuse_conn_info* conn)
+void* xwmfs_init(struct fuse_conn_info *conn, struct fuse_config *config)
 {
        (void)conn;
 
+       // make interruptible the default, this seems to be the only way.
+       // Otherwise the abort logic for blocking calls is not enabled
+       config->intr = 1;
+
        try
        {
                xwmfs::Xwmfs &xwmfs = xwmfs::Xwmfs::getInstance();
@@ -341,8 +363,8 @@
 
        assert( xwmfs::filesystem );
 
-       // we return our file system instance such that we can access it
-       // anywhere
+       // we return our file system instance such that we can access it from
+       // all contexts.
        return xwmfs::filesystem;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/main/WindowDirEntry.cxx 
new/xwmfs-1.00/src/main/WindowDirEntry.cxx
--- old/xwmfs-0.91/src/main/WindowDirEntry.cxx  2021-03-18 12:49:22.000000000 
+0100
+++ new/xwmfs-1.00/src/main/WindowDirEntry.cxx  2025-08-28 15:32:23.000000000 
+0200
@@ -30,15 +30,23 @@
        addEntry(m_geometry);
        {
                XWindowAttrs attrs;
-               m_win.getAttrs(attrs);
-               updateGeometry(attrs);
+               try {
+                       m_win.getAttrs(attrs);
+                       updateGeometry(attrs);
+               } catch (const X11Exception &ex) {
+                       // window disappeared again?
+               }
        }
 
        // NOTE: might become a writeable entry, using XReparentWindow(),
        // pretty obscure though
        m_parent = new WindowFileEntry("parent", m_win, m_modify_time, false);
        addEntry(m_parent);
-       m_win.updateFamily();
+       try {
+               m_win.updateFamily();
+       } catch (const X11Exception &ex) {
+               // window disappeared again?
+       }
        updateParent();
 
        if( query_attrs )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/main/Xwmfs.cxx new/xwmfs-1.00/src/main/Xwmfs.cxx
--- old/xwmfs-0.91/src/main/Xwmfs.cxx   2021-03-21 13:03:41.000000000 +0100
+++ new/xwmfs-1.00/src/main/Xwmfs.cxx   2025-08-28 15:32:23.000000000 +0200
@@ -119,8 +119,6 @@
 
 void Xwmfs::exit()
 {
-       m_fs_root.clear();
-
        if( m_ev_thread.getState() == xwmfs::Thread::RUN )
        {
                m_ev_thread.requestExit();
@@ -136,6 +134,8 @@
                // finally join the thread
                m_ev_thread.join();
        }
+
+       m_fs_root.clear();
 }
 
 int Xwmfs::XErrorHandler(Display *disp, XErrorEvent *error)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/main/main.cxx new/xwmfs-1.00/src/main/main.cxx
--- old/xwmfs-0.91/src/main/main.cxx    2021-03-18 12:49:30.000000000 +0100
+++ new/xwmfs-1.00/src/main/main.cxx    2025-08-28 15:32:23.000000000 +0200
@@ -120,11 +120,6 @@
                        print_xwmfs_help = parseXWMFSOptions(
                                argc, argv, fuse_args
                        );
-
-                       // make interruptible the default, this seems to be
-                       // the only way. Otherwise the abort logic for
-                       // blocking calls is not enabled
-                       fuse_opt_add_arg(&fuse_args, "-ointr");
                }
                catch( const xwmfs::Exception &e )
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/src/x11/XWindow.cxx new/xwmfs-1.00/src/x11/XWindow.cxx
--- old/xwmfs-0.91/src/x11/XWindow.cxx  2021-03-21 13:03:41.000000000 +0100
+++ new/xwmfs-1.00/src/x11/XWindow.cxx  2025-08-28 15:32:23.000000000 +0200
@@ -651,6 +651,7 @@
 template void XWindow::getProperty(const Atom, Property<int>&, const 
PropertyInfo*) const;
 template void XWindow::getProperty(const Atom, Property<unsigned long>&, const 
PropertyInfo*) const;
 template void XWindow::getProperty(const Atom, Property<const char*>&, const 
PropertyInfo*) const;
+template void XWindow::getProperty(const Atom, Property<utf8_string>&, const 
PropertyInfo*) const;
 template void XWindow::getProperty(const Atom, Property<std::vector<XAtom> >&, 
const PropertyInfo*) const;
 template void XWindow::getProperty(const Atom, Property<std::vector<unsigned 
long> >&, const PropertyInfo*) const;
 template void XWindow::getProperty(const Atom, Property<std::vector<int> >&, 
const PropertyInfo*) const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xwmfs-0.91/tests/base/base.py new/xwmfs-1.00/tests/base/base.py
--- old/xwmfs-0.91/tests/base/base.py   2022-05-04 18:36:20.000000000 +0200
+++ new/xwmfs-1.00/tests/base/base.py   2025-08-28 15:27:59.000000000 +0200
@@ -108,6 +108,12 @@
             default=None
         )
 
+        self.m_parser.add_argument(
+            "-m", "--mount",
+            help="Existing mount point to use instead of starting a new 
instance",
+            default=None
+        )
+
     def parseArgs(self):
 
         self.m_args = self.m_parser.parse_args()
@@ -120,8 +126,6 @@
         atexit.register(self._cleanup)
         self.m_proc = None
         self.m_test_window = None
-        self.m_tmp_dir = tempfile.TemporaryDirectory()
-        self.m_mount_dir = self.m_tmp_dir.name
         Window.setBase(self)
 
     def _cleanup(self):
@@ -129,7 +133,8 @@
         if self.m_proc:
             self.m_proc.terminate()
             self.m_proc.wait()
-            os.rmdir(self.m_mount_dir)
+            if self.m_need_mount:
+                os.rmdir(self.m_mount_dir)
 
         if self.m_test_window:
             self.closeTestWindow()
@@ -170,12 +175,12 @@
 
     def mount(self):
 
-        self.m_proc = subprocess.Popen(
-            [
-                self.m_xwmfs, "-f",
-                "--logger={}".format(self.logSetting()),
-            ] + self.extraSettings() + [self.m_mount_dir]
-        )
+        if not self.m_need_mount:
+            return
+
+        cmdline = [self.m_xwmfs, "-f", 
"--logger={}".format(self.logSetting()), ] + self.extraSettings() + 
[self.m_mount_dir]
+        print("Mounting via cmdline:", ' '.join(cmdline))
+        self.m_proc = subprocess.Popen(cmdline)
 
         while len(os.listdir(self.m_mount_dir)) == 0:
 
@@ -189,7 +194,10 @@
 
     def unmount(self):
 
-        self.m_proc.terminate()
+        if not self.m_need_mount:
+            return
+
+        subprocess.check_call(["fusermount3", "-u", self.m_mount_dir])
 
         res = self.m_proc.wait()
         self.m_proc = None
@@ -214,7 +222,18 @@
             return 77
 
         self.parseArgs()
-        self.m_xwmfs = self.getBinary()
+        if self.m_args.mount:
+            self.m_mount_dir = self.m_args.mount
+            self.m_need_mount = False
+            if not os.path.isdir(self.m_mount_dir):
+                printe("specified mount directory is not existing")
+                sys.exit(1)
+        else:
+            self.m_xwmfs = self.getBinary()
+            self.m_tmp_dir = tempfile.TemporaryDirectory()
+            self.m_mount_dir = self.m_tmp_dir.name
+            self.m_need_mount = True
+
         self.mount()
         self.m_windows = os.path.join(self.m_mount_dir, "windows")
         self.m_mgr = ManagerDir(os.path.join(self.m_mount_dir, "wm"))

Reply via email to