Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hfsfuse for openSUSE:Factory checked 
in at 2025-05-26 18:46:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hfsfuse (Old)
 and      /work/SRC/openSUSE:Factory/.hfsfuse.new.2732 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hfsfuse"

Mon May 26 18:46:46 2025 rev:2 rq:1280286 version:0.292

Changes:
--------
--- /work/SRC/openSUSE:Factory/hfsfuse/hfsfuse.changes  2025-04-22 
17:30:33.880831822 +0200
+++ /work/SRC/openSUSE:Factory/.hfsfuse.new.2732/hfsfuse.changes        
2025-05-26 18:46:47.523755806 +0200
@@ -1,0 +2,11 @@
+Mon May 26 14:22:47 UTC 2025 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- Update to 0.292
+  * Adds support for the FUSE version 3 API. If available this
+    will be detected and used at build time. hfsfuse remains
+    compatible with FUSE version 2 implementations if v3 is
+    not available. (bsc#1243039)
+- Add missing license information for vendored libraries
+- Pass WITH_UBILIO=local WITH_UTF8PROC=system to %make_install
+
+-------------------------------------------------------------------

Old:
----
  hfsfuse-0.289.tar.gz

New:
----
  hfsfuse-0.292.tar.gz

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

Other differences:
------------------
++++++ hfsfuse.spec ++++++
--- /var/tmp/diff_new_pack.No3Qfa/_old  2025-05-26 18:46:48.095779790 +0200
+++ /var/tmp/diff_new_pack.No3Qfa/_new  2025-05-26 18:46:48.095779790 +0200
@@ -17,14 +17,14 @@
 
 
 Name:           hfsfuse
-Version:        0.289
+Version:        0.292
 Release:        0
 Summary:        FUSE driver for HFS+ filesystems
-License:        MIT
+License:        BSD-1-Clause AND BSD-2-Clause AND BSD-3-Clause AND MIT
 Group:          System/Filesystems
 URL:            https://github.com/0x09/hfsfuse
 Source:         
https://github.com/0x09/hfsfuse/releases/download/%{version}/%{name}-%{version}.tar.gz
-BuildRequires:  fuse-devel
+BuildRequires:  fuse3-devel
 BuildRequires:  libarchive-devel
 BuildRequires:  lzfse-devel
 BuildRequires:  utf8proc-devel
@@ -65,7 +65,7 @@
 %make_build WITH_UBILIO=local WITH_UTF8PROC=system
 
 %install
-%make_install PREFIX=%{_prefix}
+%make_install WITH_UBILIO=local WITH_UTF8PROC=system PREFIX=%{_prefix}
 
 %files
 %license COPYING

++++++ hfsfuse-0.289.tar.gz -> hfsfuse-0.292.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.289/Makefile new/hfsfuse-0.292/Makefile
--- old/hfsfuse-0.289/Makefile  2025-03-29 18:44:37.000000000 +0100
+++ new/hfsfuse-0.292/Makefile  2025-05-21 00:46:21.000000000 +0200
@@ -19,8 +19,6 @@
 LOCAL_CFLAGS+=-Wno-missing-field-initializers -Wno-missing-braces
 
 TARGETS = hfsfuse hfsdump
-FUSE_FLAGS = -DFUSE_USE_VERSION=28
-FUSE_LIB = -lfuse
 
 XATTR_NAMESPACE ?= user.
 ifeq ($(OS), Darwin)
@@ -30,8 +28,8 @@
        ifeq ($(shell [ -e /usr/local/lib/libosxfuse.dylib ] && echo 1), 1)
                FUSE_FLAGS += -I/usr/local/include/osxfuse
                FUSE_LIB = -losxfuse
-       else ifeq ($(shell [ -e /usr/local/lib/libfuse.dylib ] && echo 1), 1)
-               FUSE_FLAGS += -I/usr/local/include
+       else ifeq ($(shell [ -e /usr/local/lib/libfuse.dylib -o -e 
/usr/local/lib/libfuse3.dylib ] && echo 1), 1)
+               FUSE_FLAGS += -I/usr/local/include -Wno-language-extension-token
        else ifeq ($(shell [ -e /usr/local/lib/libfuse-t.dylib ] && echo 1), 1)
                FUSE_FLAGS += -I/usr/local/include/fuse
                FUSE_LIB = -lfuse-t
@@ -59,8 +57,7 @@
 else ifeq ($(OS), NetBSD)
        APP_FLAGS += -I/usr/pkg/include
        APP_LIB += -L/usr/pkg/lib -Wl,-R/usr/pkg/lib
-       FUSE_FLAGS += -I/usr/pkg/include
-       FUSE_LIB += -L/usr/pkg/lib/ -Wl,-R/usr/pkg/lib
+       FUSE_FLAGS += -I/usr/pkg/include -L/usr/pkg/lib/ -Wl,-R/usr/pkg/lib
 else ifeq ($(OS), SunOS)
        FUSE_FLAGS += -I/usr/include/fuse
 else ifeq (MSYS, $(findstring MSYS, $(OS)))
@@ -146,6 +143,17 @@
                else
 $(info libarchive not found, hfstar will not be built)
                endif
+
+    CEXPR_CFLAGS =$(CFLAGS) $(LOCAL_CFLAGS) $(FUSE_FLAGS) -DFUSE_USE_VERSION=30
+    $(eval $(call cccheck,HAVE_FUSE3,,fuse3/fuse.h))
+
+               ifeq ($(HAVE_FUSE3),1)
+                       FUSE_FLAGS += -DFUSE_USE_VERSION=35
+                       FUSE_LIB ?= -lfuse3
+               else
+                       FUSE_FLAGS += -DFUSE_USE_VERSION=29
+                       FUSE_LIB ?= -lfuse
+               endif
 endif
 
 $(foreach cfg,OS CC AR RANLIB INSTALL TAR PREFIX WITH_UBLIO WITH_UTF8PROC 
XATTR_NAMESPACE CONFIG_CFLAGS $(FEATURES),$(eval 
CONFIG:=$(CONFIG)$(cfg)=$$($(cfg))\n))
@@ -256,7 +264,7 @@
        echo \#define HFSFUSE_VERSION_STRING $(VERSION_STRING) > src/version.h
 
 authors:
-       git shortlog -sne $(RELEASE_BRANCH) | cut -d $$'\t' -f 2- > AUTHORS
+       git shortlog -sne $(RELEASE_BRANCH) | cut -f 2- > AUTHORS
 
 showconfig:
        @echo "$$CONFIG"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.289/README.md new/hfsfuse-0.292/README.md
--- old/hfsfuse-0.289/README.md 2025-03-29 18:44:37.000000000 +0100
+++ new/hfsfuse-0.292/README.md 2025-05-21 00:46:21.000000000 +0200
@@ -29,7 +29,7 @@
 
 hfsfuse's supporting libraries and standalone hfsdump tool require only a 
POSIX-2008 compatible libc, and can also be built natively on Windows with 
either Mingw-w64 or msys2.
 
-The FUSE driver requires a version 2 compatible FUSE library, and is known to 
work with the following implementations:
+The FUSE driver requires a version 2 or 3 compatible FUSE library, and is 
known to work with the following implementations:
 
 * [libfuse](https://libfuse.github.io) on Linux and *BSD
 * [macFUSE](https://osxfuse.github.io)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.289/src/hfsfuse.c 
new/hfsfuse-0.292/src/hfsfuse.c
--- old/hfsfuse-0.289/src/hfsfuse.c     2025-03-29 18:44:37.000000000 +0100
+++ new/hfsfuse-0.292/src/hfsfuse.c     2025-05-21 00:46:21.000000000 +0200
@@ -9,7 +9,13 @@
 #include <errno.h>
 #include <limits.h>
 #include <inttypes.h>
+
+#if FUSE_USE_VERSION < 30
 #include <fuse.h>
+#else
+#include <fuse3/fuse.h>
+#endif
+
 #include <syslog.h>
 
 #ifndef HFSFUSE_VERSION_STRING
@@ -24,6 +30,14 @@
 #endif
 #endif
 
+#if FUSE_VERSION >= 30
+static void* hfsfuse_init(struct fuse_conn_info *conn, struct fuse_config 
*cfg) {
+       cfg->use_ino = 1;
+       cfg->nullpath_ok = 1;
+       return fuse_get_context()->private_data; // the hfs_volume
+}
+#endif
+
 static void hfsfuse_destroy(void* vol) {
        hfslib_close_volume(vol, NULL);
 }
@@ -115,22 +129,31 @@
        return 0;
 }
 
-static int hfsfuse_getattr(const char* path, struct stat* st) {
-       hfs_volume* vol = fuse_get_context()->private_data;
-       hfs_catalog_keyed_record_t rec; hfs_catalog_key_t key; uint8_t fork;
-       int ret = hfs_lookup(vol,path,&rec,&key,&fork);
-       if(ret)
-               return ret;
-
-       struct hfs_decmpfs_header h,* hp = NULL;
-       if(rec.type == HFS_REC_FILE && fork == HFS_DATAFORK && 
!hfs_decmpfs_lookup(vol,&rec.file,&h,NULL,NULL))
-               hp = &h;
-       hfs_stat(vol,&rec,st,fork,hp);
-
-       return 0;
-}
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+#define stat_to_fuse_darwin_attr(rec,st) ((struct fuse_darwin_attr){\
+       .ino = (st).st_ino,\
+       .mode = (st).st_mode,\
+       .nlink = (st).st_nlink,\
+       .uid = (st).st_uid,\
+       .gid = (st).st_gid,\
+       .rdev = (st).st_rdev,\
+       .atimespec.tv_sec = (st).st_atime,\
+       .mtimespec.tv_sec = (st).st_mtime,\
+       .ctimespec.tv_sec = (st).st_ctime,\
+       .crtimespec.tv_sec = (st).st_birthtime,\
+       .bkuptimespec.tv_sec = HFSTIMETOEPOCH((rec).file.date_backedup),\
+       .size = (st).st_size,\
+       .blocks = (st).st_blocks,\
+       .blksize = (st).st_blksize,\
+       .flags = (st).st_flags,\
+})
+#endif
 
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+static int hfsfuse_fgetattr(const char* path, struct fuse_darwin_attr* 
darwin_attrs, struct fuse_file_info* info) {
+#else
 static int hfsfuse_fgetattr(const char* path, struct stat* st, struct 
fuse_file_info* info) {
+#endif
        hfs_volume* vol = fuse_get_context()->private_data;
        struct hf_file* f = (struct hf_file*)info->fh;
        hfs_catalog_keyed_record_t rec; hfs_catalog_key_t key;
@@ -141,12 +164,53 @@
        struct hfs_decmpfs_header h,* hp = NULL;
        if(f->fork == HFS_DATAFORK && hfs_decmpfs_get_header(f->decmpfs,&h))
                hp = &h;
+
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+       struct stat st;
+       hfs_stat(vol,&rec,&st,f->fork,hp);
+       *darwin_attrs = stat_to_fuse_darwin_attr(rec,st);
+#else
        hfs_stat(vol,&rec,st,f->fork,hp);
+#endif
 
        return 0;
 }
 
 
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+static int hfsfuse_getattr(const char* path, struct fuse_darwin_attr* st, 
struct fuse_file_info *fi) {
+#elif FUSE_VERSION >= 30
+static int hfsfuse_getattr(const char* path, struct stat* st, struct 
fuse_file_info *fi) {
+#else
+static int hfsfuse_getattr(const char* path, struct stat* st) {
+#endif
+
+#if FUSE_DARWIN_ENABLE_EXTENSIONS || FUSE_VERSION >= 30
+       if(fi)
+               return hfsfuse_fgetattr(path,st,fi);
+#endif
+
+       hfs_volume* vol = fuse_get_context()->private_data;
+       hfs_catalog_keyed_record_t rec; hfs_catalog_key_t key; uint8_t fork;
+       int ret = hfs_lookup(vol,path,&rec,&key,&fork);
+       if(ret)
+               return ret;
+
+       struct hfs_decmpfs_header h,* hp = NULL;
+       if(rec.type == HFS_REC_FILE && fork == HFS_DATAFORK && 
!hfs_decmpfs_lookup(vol,&rec.file,&h,NULL,NULL))
+               hp = &h;
+
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+       struct stat statbuf;
+       hfs_stat(vol,&rec,&statbuf,fork,hp);
+       *st = stat_to_fuse_darwin_attr(rec,statbuf);
+#else
+       hfs_stat(vol,&rec,st,fork,hp);
+#endif
+
+       return 0;
+}
+
 struct hf_dir {
        hfs_catalog_keyed_record_t dir_record;
        hfs_cnid_t parent_cnid;
@@ -212,26 +276,48 @@
        return 0;
 }
 
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+static int hfsfuse_readdir(const char* path, void* buf, fuse_darwin_fill_dir_t 
filler, off_t offset, struct fuse_file_info* info, enum fuse_readdir_flags 
flags) {
+#elif FUSE_VERSION >= 30
+static int hfsfuse_readdir(const char* path, void* buf, fuse_fill_dir_t 
filler, off_t offset, struct fuse_file_info* info, enum fuse_readdir_flags 
flags) {
+#else
 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;
        if(offset < 1) {
                struct stat st = {0};
                hfs_stat(vol, &d->dir_record, &st, 0, NULL);
-               if(filler(buf, ".", &st, 1))
+               int ret;
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+               ret = filler(buf, ".", 
&stat_to_fuse_darwin_attr(d->dir_record,st), 1, FUSE_FILL_DIR_PLUS);
+#elif FUSE_VERSION >= 30
+               ret = filler(buf, ".", &st, 1, FUSE_FILL_DIR_PLUS);
+#else
+               ret = filler(buf, ".", &st, 1);
+#endif
+               if(ret)
                        return 0;
        }
        if(offset < 2) {
                struct stat st = {0};
                struct stat* stp = NULL;
+               hfs_catalog_keyed_record_t rec = {0};
                if(d->dir_record.folder.cnid != HFS_CNID_ROOT_FOLDER) {
                        hfs_catalog_key_t key;
-                       hfs_catalog_keyed_record_t rec;
                        hfslib_find_catalog_record_with_cnid(vol, 
d->parent_cnid, &rec, &key, NULL);
                        stp = &st;
                        hfs_stat(vol, &rec, stp, 0, NULL);
                }
-               if(filler(buf, "..", stp, 2))
+               int ret;
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+               ret = filler(buf, "..", stp ? 
&stat_to_fuse_darwin_attr(rec,*stp) : NULL, 2, stp ? FUSE_FILL_DIR_PLUS : 0);
+#elif FUSE_VERSION >= 30
+               ret = filler(buf, "..", stp, 2, stp ? FUSE_FILL_DIR_PLUS : 0);
+#else
+               ret = filler(buf, "..", stp, 2);
+#endif
+               if(ret)
                        return 0;
        }
 
@@ -252,14 +338,33 @@
 
                struct stat st = {0};
                hfs_stat(vol,d->records+i,&st,0,NULL);
-               if(filler(buf,pelem,&st,i+3))
+               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);
+#elif FUSE_VERSION >= 30
+               ret = filler(buf,pelem,&st,i+3,FUSE_FILL_DIR_PLUS);
+#else
+               ret = filler(buf,pelem,&st,i+3);
+#endif
+               if(ret)
                        break;
        }
        free(fullpath);
        return min(ret,0);
 }
 
-
+#if FUSE_DARWIN_ENABLE_EXTENSIONS
+static int hfsfuse_statfs(const char* path, struct statfs* st) {
+       hfs_volume* vol = fuse_get_context()->private_data;
+       st->f_bsize = vol->vh.block_size;
+       st->f_blocks = vol->vh.total_blocks;
+       st->f_bfree = vol->vh.free_blocks;
+       st->f_bavail = st->f_bfree;
+       st->f_files = UINT32_MAX - HFS_CNID_USER;
+       st->f_ffree = st->f_files - vol->vh.file_count - vol->vh.folder_count;
+       return 0;
+}
+#else
 static int hfsfuse_statfs(const char* path, struct statvfs* st) {
        hfs_volume* vol = fuse_get_context()->private_data;
        st->f_bsize = vol->vh.block_size;
@@ -274,8 +379,9 @@
        st->f_namemax = HFS_NAME_MAX;
        return 0;
 }
+#endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__) && FUSE_VERSION < 30
 static int hfsfuse_getxtimes(const char* path, struct timespec* bkuptime, 
struct timespec* crtime) {
        hfs_volume* vol = fuse_get_context()->private_data;
        hfs_catalog_keyed_record_t rec; hfs_catalog_key_t key;
@@ -471,7 +577,7 @@
        return ret;
 }
 
-#ifndef __APPLE__
+#if !(FUSE_DARWIN_ENABLE_EXTENSIONS || (defined(__APPLE__) && FUSE_VERSION < 
30))
 #ifdef __HAIKU__
 static inline char hex4b(uint8_t dec) {
        return dec < 10 ? '0' + dec : 'a' + (dec-10);
@@ -500,6 +606,9 @@
 #endif
 
 static struct fuse_operations hfsfuse_ops = {
+#if FUSE_VERSION >= 30
+       .init        = hfsfuse_init,
+#endif
        .destroy     = hfsfuse_destroy,
        .open        = hfsfuse_open,
        .opendir     = hfsfuse_opendir,
@@ -510,20 +619,22 @@
        .statfs      = hfsfuse_statfs,
        .getattr     = hfsfuse_getattr,
        .readlink    = hfsfuse_readlink,
+#if FUSE_VERSION < 30
        .fgetattr    = hfsfuse_fgetattr,
+#endif
        .listxattr   = hfsfuse_listxattr,
-#ifdef __APPLE__
+#if FUSE_DARWIN_ENABLE_EXTENSIONS || (defined(__APPLE__) && FUSE_VERSION < 30)
        .getxattr    = hfsfuse_getxattr_offset,
 #else
        .getxattr    = hfsfuse_getxattr,
 #endif
-#ifdef __APPLE__
+#if defined(__APPLE__) && FUSE_VERSION < 30
        .getxtimes   = hfsfuse_getxtimes,
 #endif
-#if FUSE_VERSION >= 29
+#if FUSE_VERSION >= 29 && FUSE_VERSION < 30
        .flag_nopath = 1,
 #endif
-#if FUSE_VERSION >= 28
+#if FUSE_VERSION >= 28 && FUSE_VERSION < 30
        .flag_nullpath_ok = 1
 #endif
 };
@@ -668,14 +779,19 @@
                case HFSFUSE_OPT_KEY_HELP:
                case HFSFUSE_OPT_KEY_FULLHELP: {
                        help(args->argv[0], cfg);
-                       fuse_opt_add_arg(args, "-ho");
-#ifndef __HAIKU__ // this is declared in the userlandfs headers but isn't 
actually in the library
+#if FUSE_VERSION < 30 && !defined(__HAIKU__) // this is declared in the 
userlandfs headers but isn't actually in the library
                        fuse_parse_cmdline(args, NULL, NULL, NULL);
 #endif
                        if(key == HFSFUSE_OPT_KEY_FULLHELP) {
+#if FUSE_VERSION < 30
+                               fuse_opt_add_arg(args, "-ho");
                                // fuse_mount and fuse_new print their own set 
of options
                                fuse_mount("", args);
                                fuse_new(NULL, args, NULL, 0, NULL);
+#else
+                               fuse_opt_add_arg(args, "-h");
+                               fuse_main(args->argc, args->argv, &hfsfuse_ops, 
NULL);
+#endif
                        }
                        fuse_opt_free_args(args);
                        exit(0);
@@ -745,7 +861,9 @@
        fuse_opt_add_opt(&opts, "ro");
        if(!cfg.noallow_other)
                fuse_opt_add_opt(&opts, "allow_other");
+#if FUSE_VERSION < 30
        fuse_opt_add_opt(&opts, "use_ino");
+#endif
        fuse_opt_add_opt(&opts, "subtype=hfs");
        hfsfuse_opt_add_opt_escaped(&opts, fsname);
        fuse_opt_add_arg(&args, "-o");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hfsfuse-0.289/src/version.h 
new/hfsfuse-0.292/src/version.h
--- old/hfsfuse-0.289/src/version.h     2025-03-29 18:44:37.000000000 +0100
+++ new/hfsfuse-0.292/src/version.h     2025-05-21 00:46:21.000000000 +0200
@@ -1 +1 @@
-#define HFSFUSE_VERSION_STRING "0.289-b0dcb93"
+#define HFSFUSE_VERSION_STRING "0.292-11bb8da"

Reply via email to