Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hfsfuse for openSUSE:Factory checked 
in at 2026-04-18 21:35:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hfsfuse (Old)
 and      /work/SRC/openSUSE:Factory/.hfsfuse.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hfsfuse"

Sat Apr 18 21:35:31 2026 rev:7 rq:1347844 version:0.416

Changes:
--------
--- /work/SRC/openSUSE:Factory/hfsfuse/hfsfuse.changes  2026-03-02 
17:41:31.522325302 +0100
+++ /work/SRC/openSUSE:Factory/.hfsfuse.new.11940/hfsfuse.changes       
2026-04-18 21:35:46.476095458 +0200
@@ -1,0 +2,16 @@
+Mon Apr 13 12:08:14 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 0.416
+  * Fixes hfstar's error output on failure to open a volume.
+    Previously the archive name was printed here instead of
+    the path to the volume.
+  * On macOS: ensures the rpath for libfuse is set in the
+    hfsfuse binary if needed (e.g. for FUSE-T).
+- from version 0.410
+  * This release features a modest performance improvement
+    for most operations.
+  * Fixes a bug that could cause LZVN HFS+ compressed files
+    to be incorrectly reported as unsupported.
+- Add missing changelog entry for 0.404
+
+-------------------------------------------------------------------
@@ -6,0 +23,5 @@
+- from version 0.404
+  * Fixes building with statx support.
+  * -o allow_other is no longer on by default. See 2a0a8df for the
+    rationale for this change and more information.
+  * Help and version text is now printed to stdout rather than stderr.

Old:
----
  hfsfuse-0.406.tar.gz

New:
----
  hfsfuse-0.416.tar.gz

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

Other differences:
------------------
++++++ hfsfuse.spec ++++++
--- /var/tmp/diff_new_pack.2AruyR/_old  2026-04-18 21:35:46.996116651 +0200
+++ /var/tmp/diff_new_pack.2AruyR/_new  2026-04-18 21:35:47.000116814 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           hfsfuse
-Version:        0.406
+Version:        0.416
 Release:        0
 Summary:        FUSE driver for HFS+ filesystems
 License:        BSD-1-Clause AND BSD-2-Clause AND BSD-3-Clause AND MIT

++++++ hfsfuse-0.406.tar.gz -> hfsfuse-0.416.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/Makefile new/hfsfuse-0.416/Makefile
--- old/hfsfuse-0.406/Makefile  2026-02-21 22:10:21.000000000 +0100
+++ new/hfsfuse-0.416/Makefile  2026-04-08 23:19:26.000000000 +0200
@@ -267,6 +267,10 @@
 
 hfsfuse: LDLIBS += $(FUSE_LIB)
 hfsfuse: src/hfsfuse.o $(LIBS)
+       $(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS)
+ifeq ($(OS), Darwin)
+       if ! otool -l hfsfuse | grep -q LC_RPATH; then install_name_tool 
-add_rpath /usr/local/lib hfsfuse; fi
+endif
 
 hfsdump: src/hfsdump.o $(LIBS)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/README.md new/hfsfuse-0.416/README.md
--- old/hfsfuse-0.406/README.md 2026-02-21 22:10:21.000000000 +0100
+++ new/hfsfuse-0.416/README.md 2026-04-08 23:19:26.000000000 +0200
@@ -4,7 +4,7 @@
 
 hfsfuse also includes two standalone tools, hfsdump and hfstar, which can be 
used without FUSE.
 
-This driver and tools are read-only and cannot write to or alter the target 
filesystem.
+The driver and tools are read-only and cannot write to or alter the target 
filesystem.
 
 **Supported**
 
@@ -40,7 +40,7 @@
 
 * [utf8proc](http://julialang.org/utf8proc/) for working with non-ASCII 
pathnames
 * [ublio](https://www.freshports.org/devel/libublio/) for read caching, which 
may improve performance
-* [zlib](https://www.zlib.net), [lzfse](https://github.com/0x09/lzfse), and 
[lzvn](https://github.com/xerub/LZVN) for reading files with HFS+ compression
+* [zlib](https://www.zlib.net), [lzfse](https://github.com/0x09/lzfse), and 
[lzvn](https://github.com/0x09/LZVN) for reading files with HFS+ compression
 
 utf8proc, ublio, and LZVN are each bundled with hfsfuse and built by default. 
hfsfuse can be configured to use already-installed versions of these if 
available, or may be built without them entirely if the respective 
functionality is not needed (see [Configuring](#Configuring)).
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/lib/libhfs/libhfs.c 
new/hfsfuse-0.416/lib/libhfs/libhfs.c
--- old/hfsfuse-0.406/lib/libhfs/libhfs.c       2026-02-21 22:10:21.000000000 
+0100
+++ new/hfsfuse-0.416/lib/libhfs/libhfs.c       2026-04-08 23:19:26.000000000 
+0200
@@ -1790,6 +1790,9 @@
  *     out_record_ptr_sizes_array may be NULL if the caller is not interested 
in
  *     reading the records, but must not be NULL if out_record_ptrs_array is 
not.
  *
+ * if specified, the elements of out_record_ptrs_array point to memory in
+ * in_bytes and should not be used beyond the lifetime of in_bytes.
+ *
  *     in_parent_file is HFS_CATALOG_FILE, HFS_EXTENTS_FILE, or
  *     HFS_ATTRIBUTES_FILE, depending on the special file in which this node
  *     resides.
@@ -1971,12 +1974,6 @@
 
        for (i = 0; i < numrecords; i++)
        {
-               (*out_record_ptrs_array)[i] =
-                       hfslib_malloc((*out_record_ptr_sizes_array)[i], cbargs);
-
-               if ((*out_record_ptrs_array)[i] == NULL)
-                       HFS_LIBERR("could not allocate node record #%i",i);
-
                /*      
                 *      If this is a keyed node (i.e., a leaf or index node), 
there are two
                 *      boundary rules that each record must obey:
@@ -2024,8 +2021,7 @@
                        HFS_LIBERR("record offset outside of node bounds %" 
PRIu16,
                                (*out_record_ptr_sizes_array)[i]);
 
-               memcpy((*out_record_ptrs_array)[i], ptr,
-                               (*out_record_ptr_sizes_array)[i]);
+               (*out_record_ptrs_array)[i] = ptr;
                ptr = (uint8_t*)ptr + (*out_record_ptr_sizes_array)[i];
        }
 
@@ -2513,18 +2509,10 @@
        uint16_t* inout_num_recs,
        hfs_callback_args* cbargs)
 {
-       uint16_t        i;
-
        if (inout_num_recs == NULL || *inout_num_recs == 0)
                return;
 
        if (inout_node_recs != NULL && *inout_node_recs != NULL) {
-               for (i = 0 ; i < *inout_num_recs; i++) {
-                       if ((*inout_node_recs)[i] != NULL) {
-                               hfslib_free((*inout_node_recs)[i], cbargs);
-                               (*inout_node_recs)[i] = NULL;
-                       }               
-               }
                hfslib_free(*inout_node_recs, cbargs);
                *inout_node_recs = NULL;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/lib/libhfsuser/decmpfs.c 
new/hfsfuse-0.416/lib/libhfsuser/decmpfs.c
--- old/hfsfuse-0.406/lib/libhfsuser/decmpfs.c  2026-02-21 22:10:21.000000000 
+0100
+++ new/hfsfuse-0.416/lib/libhfsuser/decmpfs.c  2026-04-08 23:19:26.000000000 
+0200
@@ -53,6 +53,10 @@
                case DECMPFS_COMPRESSION_SPARSE:
                        return decmpfs_storage_inline(type);
                case DECMPFS_COMPRESSION_LZVN:
+#if HAVE_LZVN
+                       return true;
+#endif
+                       return false;
                case DECMPFS_COMPRESSION_LZFSE:
 #if HAVE_LZFSE
                        return true;
@@ -382,7 +386,7 @@
        
if(hfslib_find_attribute_record_with_key(vol,&attrkey,&attr,(void*)&buf,NULL))
                return 1;
 
-       // if this is a zlib or lzfse compressed file and hfsfuse wasn't built 
with these libraries, continue to treat it as a zero-length file
+       // if this is a zlib, lzvn, or lzfse compressed file and hfsfuse wasn't 
built with these libraries, continue to treat it as a zero-length file
        // the com.apple.decmpfs xattr may still be inspected directly to 
access the compressed data
        if(attr.type != HFS_ATTR_INLINE_DATA || 
!hfs_decmpfs_parse_record(h,attr.inline_record.length,buf)) {
                free(buf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/src/hfsfuse.c 
new/hfsfuse-0.416/src/hfsfuse.c
--- old/hfsfuse-0.406/src/hfsfuse.c     2026-02-21 22:10:21.000000000 +0100
+++ new/hfsfuse-0.416/src/hfsfuse.c     2026-04-08 23:19:26.000000000 +0200
@@ -250,7 +250,7 @@
 }
 #endif
 
-struct hf_dir {
+struct hfsfuse_dir {
        hfs_catalog_keyed_record_t dir_record;
        hfs_cnid_t parent_cnid;
        hfs_catalog_keyed_record_t* records;
@@ -261,7 +261,7 @@
        pthread_rwlock_t lock;
 };
 
-int hf_dir_close(struct hf_dir* d) {
+int hfsfuse_dir_close(struct hfsfuse_dir* d) {
        int ret = pthread_rwlock_wrlock(&d->lock);
        if(ret)
                return -ret;
@@ -277,7 +277,7 @@
 
 static int hfsfuse_opendir(const char* path, struct fuse_file_info* info) {
        hfs_volume* vol = fuse_get_context()->private_data;
-       struct hf_dir* d = malloc(sizeof(*d));
+       struct hfsfuse_dir* d = malloc(sizeof(*d));
        if(!d)
                return -ENOMEM;
 
@@ -312,27 +312,17 @@
                ret = -1;
                goto end;
        }
-       hfs_catalog_keyed_record_t link;
-       for(hfs_catalog_keyed_record_t* record = d->records; record != 
d->records + d->nentries; record++)
-               if(record->type == HFS_REC_FILE && (
-                 (record->file.user_info.file_creator == HFS_HFSPLUS_CREATOR &&
-                  record->file.user_info.file_type    == 
HFS_HARD_LINK_FILE_TYPE &&
-                  !hfslib_get_hardlink(vol, 
record->file.bsd.special.inode_num, &link, NULL)) ||
-                 (record->file.user_info.file_creator == HFS_MACS_CREATOR &&
-                  record->file.user_info.file_type    == 
HFS_DIR_HARD_LINK_FILE_TYPE &&
-                  !hfslib_get_directory_hardlink(vol, 
record->file.bsd.special.inode_num, &link, NULL))))
-                       *record = link;
 
        info->fh = (uint64_t)d;
 
 end:
        if(ret)
-               hf_dir_close(d);
+               hfsfuse_dir_close(d);
        return ret;
 }
 
 static int hfsfuse_releasedir(const char* path, struct fuse_file_info* info) {
-       return hf_dir_close((struct hf_dir*)info->fh);
+       return hfsfuse_dir_close((struct hfsfuse_dir*)info->fh);
 }
 
 #if FUSE_VERSION >= 30
@@ -341,7 +331,7 @@
 static int hfsfuse_readdir(const char* path, void* buf, fuse_fill_dir_t 
filler, off_t offset, struct fuse_file_info* info) {
 #endif
        hfs_volume* vol = fuse_get_context()->private_data;
-       struct hf_dir* d = (struct hf_dir*)info->fh;
+       struct hfsfuse_dir* d = (struct hfsfuse_dir*)info->fh;
        int ret = -pthread_rwlock_tryrdlock(&d->lock);
        if(ret)
                return ret;
@@ -394,13 +384,30 @@
                        ret = len;
                        continue;
                }
-               hfs_cache_path(vol,fullpath,d->pathlen+len,d->records+i);
+
+               hfs_catalog_keyed_record_t* record = d->records + i;
+
+               hfs_catalog_keyed_record_t link;
+               if(record->type == HFS_REC_FILE) {
+                       if(record->file.user_info.file_creator == 
HFS_HFSPLUS_CREATOR &&
+                      record->file.user_info.file_type == 
HFS_HARD_LINK_FILE_TYPE) {
+                               if(!hfslib_get_hardlink(vol, 
record->file.bsd.special.inode_num, &link, NULL))
+                                       record = &link;
+                       }
+                       else if(record->file.user_info.file_creator == 
HFS_MACS_CREATOR &&
+                               record->file.user_info.file_type == 
HFS_DIR_HARD_LINK_FILE_TYPE) {
+                               if(!hfslib_get_directory_hardlink(vol, 
record->file.bsd.special.inode_num, &link, NULL))
+                                       record = &link;
+                       }
+               }
+
+               hfs_cache_path(vol,fullpath,d->pathlen+len,record);
 
                struct stat st = {0};
-               hfs_stat(vol,d->records+i,&st,0);
+               hfs_stat(vol,record,&st,0);
                int ret;
 #if FUSE_DARWIN_ENABLE_EXTENSIONS
-               ret = 
filler(buf,pelem,&stat_to_fuse_darwin_attr(d->records[i],st),i+3,FUSE_FILL_DIR_PLUS);
+               ret = 
filler(buf,pelem,&stat_to_fuse_darwin_attr(*record,st),i+3,FUSE_FILL_DIR_PLUS);
 #elif FUSE_VERSION >= 30
                ret = filler(buf,pelem,&st,i+3,FUSE_FILL_DIR_PLUS);
 #else
@@ -937,7 +944,7 @@
 
        char* opts = NULL;
        fuse_opt_add_opt(&opts, "ro");
-    // passthrough allow_other to fuse; otherwise our opt parser consumed it
+       // passthrough allow_other to fuse; otherwise our opt parser consumed it
        if (cfg.allow_other_set)
                fuse_opt_add_opt(&opts, "allow_other");
 #if FUSE_VERSION < 30
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/src/hfstar.c 
new/hfsfuse-0.416/src/hfstar.c
--- old/hfsfuse-0.406/src/hfstar.c      2026-02-21 22:10:21.000000000 +0100
+++ new/hfsfuse-0.416/src/hfstar.c      2026-04-08 23:19:26.000000000 +0200
@@ -703,7 +703,7 @@
        cfg.cache_size = 0;
 
        if((ctx.hfs_err = hfs_open_volume(argv[0],ctx.vol,&cfg))) {
-               log_hfs_err(&ctx,"Couldn't open volume '%s'",argv[1]);
+               log_hfs_err(&ctx,"Couldn't open volume '%s'",argv[0]);
                goto end;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.406/src/version.h 
new/hfsfuse-0.416/src/version.h
--- old/hfsfuse-0.406/src/version.h     2026-02-21 22:10:21.000000000 +0100
+++ new/hfsfuse-0.416/src/version.h     2026-04-08 23:19:26.000000000 +0200
@@ -1 +1 @@
-#define HFSFUSE_VERSION_STRING "0.406-06deec6"
+#define HFSFUSE_VERSION_STRING "0.416-26649ec"

Reply via email to