Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package snapraid for openSUSE:Factory 
checked in at 2026-04-07 16:33:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/snapraid (Old)
 and      /work/SRC/openSUSE:Factory/.snapraid.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "snapraid"

Tue Apr  7 16:33:53 2026 rev:5 rq:1344871 version:14.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/snapraid/snapraid.changes        2026-03-31 
15:24:37.534159987 +0200
+++ /work/SRC/openSUSE:Factory/.snapraid.new.21863/snapraid.changes     
2026-04-07 16:50:00.315261007 +0200
@@ -1,0 +2,12 @@
+Tue Apr  7 06:57:57 UTC 2026 - Paolo Stivanin <[email protected]>
+
+- Update to 14.1:
+  * Fixed include/exclude specification for directories. This is a regression
+    bug in version 14.0. It is highly recommended to update.
+    If you are using version 14.0 with include/exclude directives, simply run
+    a new sync with this version to automatically resolve any potential issues.
+  * Fixed a build issue in Alpine distribution.
+  * Fixed abort condition if the Windows volume name cannot be converted to
+    UTF-8.
+
+-------------------------------------------------------------------

Old:
----
  snapraid-14.0.tar.gz

New:
----
  snapraid-14.1.tar.gz

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

Other differences:
------------------
++++++ snapraid.spec ++++++
--- /var/tmp/diff_new_pack.XBjYAV/_old  2026-04-07 16:50:00.807281376 +0200
+++ /var/tmp/diff_new_pack.XBjYAV/_new  2026-04-07 16:50:00.811281541 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           snapraid
-Version:        14.0
+Version:        14.1
 Release:        0
 Summary:        Disk array backup for many large rarely-changed files
 License:        GPL-3.0-or-later

++++++ snapraid-14.0.tar.gz -> snapraid-14.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/.version new/snapraid-14.1/.version
--- old/snapraid-14.0/.version  2026-03-30 10:09:54.000000000 +0200
+++ new/snapraid-14.1/.version  2026-04-01 00:45:36.000000000 +0200
@@ -1 +1 @@
-14.0
\ No newline at end of file
+14.1
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/HISTORY new/snapraid-14.1/HISTORY
--- old/snapraid-14.0/HISTORY   2026-03-30 08:31:15.000000000 +0200
+++ new/snapraid-14.1/HISTORY   2026-04-01 00:43:05.000000000 +0200
@@ -1,6 +1,12 @@
 SnapRAID HISTORY
 ================
 
+14.1 2026/03
+============
+ * Fix include/exclude specification of directories.
+ * Fix a build issue in Alpine distribution.
+ * Fix abort condition if the Windows volume name cannot be converted to UTF-8.
+
 14.0 2026/03
 ============
  * More log tags for all commands in preparation for the upcoming SnapRAID
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/cmdline/elem.c 
new/snapraid-14.1/cmdline/elem.c
--- old/snapraid-14.0/cmdline/elem.c    2026-03-18 11:54:57.000000000 +0100
+++ new/snapraid-14.1/cmdline/elem.c    2026-04-01 00:32:07.000000000 +0200
@@ -186,27 +186,35 @@
                path += strlen(filter->root);
        }
 
-       /* match dirs with dirs and files with files */
-       if (filter->is_dir && !is_dir)
-               return 0;
+       /* if the filter is for files, it doesn't applies to directories */
        if (!filter->is_dir && is_dir)
                return 0;
 
+       /*
+        * If the filter is for directories, it should be applied to all files 
inside
+        * that directory.
+        *
+        * This is done allowing a partial matching as far it ends at a 
directory separator
+        */
+       int match_sub = 0;
+       if (filter->is_dir && !is_dir)
+               match_sub = 1;
+
        int ret = 0;
 
        if (filter->is_abs) {
                /* skip initial slash, as always missing in the path */
-               if (wnmatch(filter->pattern + 1, path) == 0)
+               if (wnmatch_sub(filter->pattern + 1, path, match_sub) == 0)
                        ret = filter->direction;
        } else {
                /* the path is relative, first try to match from the root */
-               if (wnmatch(filter->pattern, path) == 0) {
+               if (wnmatch_sub(filter->pattern, path, match_sub) == 0) {
                        ret = filter->direction;
                } else {
                        /* then try to match after all the / presents */
                        char* slash = strchr(path, '/');
                        while (slash) {
-                               if (wnmatch(filter->pattern, slash + 1) == 0) {
+                               if (wnmatch_sub(filter->pattern, slash + 1, 
match_sub) == 0) {
                                        ret = filter->direction;
                                        break;
                                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/cmdline/mingw.c 
new/snapraid-14.1/cmdline/mingw.c
--- old/snapraid-14.0/cmdline/mingw.c   2026-03-20 14:44:14.000000000 +0100
+++ new/snapraid-14.1/cmdline/mingw.c   2026-03-31 22:58:09.000000000 +0200
@@ -278,21 +278,37 @@
 /**
  * Convert a generic string from UTF16 to UTF8.
  */
-static char* u16tou8ex(char* conv_buf, const wchar_t* src, size_t 
number_of_wchar, size_t* result_length_without_terminator)
+static char* u16tou8ex_may_fail(char* conv_buf, const wchar_t* src, size_t 
number_of_wchar, size_t* result_length_without_terminator)
 {
        int ret;
 
        ret = WideCharToMultiByte(CP_UTF8, 0, src, number_of_wchar, conv_buf, 
CONV_MAX, 0, 0);
-       if (ret <= 0) {
-               log_fatal(EINTERNAL, "Error converting from UTF-16 to UTF-8\n");
-               exit(EXIT_FAILURE);
-       }
+       if (ret <= 0)
+               return 0;
 
        *result_length_without_terminator = ret;
 
        return conv_buf;
 }
 
+static char* u16tou8ex(char* conv_buf, const wchar_t* src, size_t 
number_of_wchar, size_t* result_length_without_terminator)
+{
+       char* ret = u16tou8ex_may_fail(conv_buf, src, number_of_wchar, 
result_length_without_terminator);
+
+       if (!ret) {
+               log_fatal(EINTERNAL, "Error converting from UTF-16 to UTF-8 
pointer %p with len %u\n", src, (unsigned)number_of_wchar);
+               if (src != 0) {
+                       for (size_t i = 0; i < number_of_wchar; ++i) {
+                               log_fatal(EINTERNAL, "%4u: %04x\n", 
(unsigned)i, src[i]);
+                       }
+               }
+
+               os_abort();
+       }
+
+       return ret;
+}
+
 static char* u16tou8(char* conv_buf, const wchar_t* src)
 {
        size_t len;
@@ -1976,15 +1992,16 @@
                        if (GetVolumeInformationW(volume_root, vol_name, 
MAX_PATH, 0, 0, 0, fs_name, MAX_PATH)) {
                                char u8[CONV_MAX];
                                size_t len;
+                               char* ret;
 
-                               u16tou8ex(u8, fs_name, wcslen(fs_name), &len);
-                               if (len + 1 <= fstype_size) {
+                               ret = u16tou8ex_may_fail(u8, fs_name, 
wcslen(fs_name), &len);
+                               if (ret != 0 && len + 1 <= fstype_size) {
                                        memcpy(fstype, u8, len);
                                        fstype[len] = 0;
                                }
 
-                               u16tou8ex(u8, vol_name, wcslen(vol_name), &len);
-                               if (len + 1 <= fslabel_size) {
+                               ret = u16tou8ex_may_fail(u8, vol_name, 
wcslen(vol_name), &len);
+                               if (ret != 0 && len + 1 <= fslabel_size) {
                                        memcpy(fslabel, u8, len);
                                        fslabel[len] = 0;
                                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/cmdline/support.c 
new/snapraid-14.1/cmdline/support.c
--- old/snapraid-14.0/cmdline/support.c 2026-03-20 23:06:30.000000000 +0100
+++ new/snapraid-14.1/cmdline/support.c 2026-04-01 00:28:05.000000000 +0200
@@ -2541,7 +2541,7 @@
        return p;
 }
 
-int wnmatch(const char* p, const char* t)
+int wnmatch_sub(const char* p, const char* t, int match_sub)
 {
        char p1 = 0; /* previous char */
        while (*p) {
@@ -2582,20 +2582,20 @@
                                         */
                                        if (*p == '/' && (p1 == 0 || p1 == 
'/')) {
                                                /* try reducing to nothing */
-                                               if (wnmatch(p + 1, t) == 0)
+                                               if (wnmatch_sub(p + 1, t, 
match_sub) == 0)
                                                        return 0;
                                                /* otherwise / should match in 
the text */
                                        }
 
                                        /* try matching with 0 or more 
characters */
                                        while (*t) {
-                                               if (wnmatch(p, t) == 0)
+                                               if (wnmatch_sub(p, t, 
match_sub) == 0)
                                                        return 0;
                                                ++t;
                                        }
 
                                        /* try matching at the end */
-                                       return wnmatch(p, t);
+                                       return wnmatch_sub(p, t, match_sub);
                                }
                        } else {
                                /* skip the * */
@@ -2611,13 +2611,13 @@
 
                        /* try matching with 0 or more characters */
                        while (*t && *t != '/') {
-                               if (wnmatch(p, t) == 0)
+                               if (wnmatch_sub(p, t, match_sub) == 0)
                                        return 0;
                                ++t;
                        }
 
                        /* try matching at the end */
-                       return wnmatch(p, t);
+                       return wnmatch_sub(p, t, match_sub);
                case '[' :
                        /* character class */
                        if (*t == 0 || *t == '/')
@@ -2640,7 +2640,13 @@
                p1 = p0;
        }
 
-       /* match successful if we've consumed all text */
-       return *t != 0;
+       /* if we match sub directory */
+       if (match_sub) {
+               /* match successfully only if we are at a directory border */
+               return *t != '/';
+       } else {
+               /* match successfully if we've consumed all text */
+               return *t != 0;
+       }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/cmdline/support.h 
new/snapraid-14.1/cmdline/support.h
--- old/snapraid-14.0/cmdline/support.h 2026-02-28 15:37:12.000000000 +0100
+++ new/snapraid-14.1/cmdline/support.h 2026-04-01 00:32:07.000000000 +0200
@@ -523,14 +523,24 @@
 /*
  * Wild match function.
  *
+ * If match_sub is !=0, it matches sub directory. Specifically it matches if 
the
+ * string "t" is not fully consumed and the next character to consume is a /.
+ *
  * - ? matches any single character except /
  * - * matches any sequence of characters except /
  * - ** (nearby a /) matches everything including /
  * - ** (not near a /) like *
- * - ##/ reduces to nothing in addition to the normal matching of ** (using # 
instead of * to mess the C comment)
+ * - ##/ reduces to nothing in addition to the normal matching of ** (using # 
instead of * to not mess the C comment)
  * - [...] matches character classes with support for ranges and negation lile 
[!...] or [^...], except /
+ *
+ * \return 0 if it matches
  */
-int wnmatch(const char* p, const char* t);
+int wnmatch_sub(const char* p, const char* t, int match_sub);
+
+static inline int wnmatch(const char* p, const char* t)
+{
+       return wnmatch_sub(p, t, 0);
+}
 
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/configure new/snapraid-14.1/configure
--- old/snapraid-14.0/configure 2026-03-30 10:08:43.000000000 +0200
+++ new/snapraid-14.1/configure 2026-04-01 00:44:26.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for SnapRAID CLI 14.0.
+# Generated by GNU Autoconf 2.72 for SnapRAID CLI 14.1.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
@@ -600,8 +600,8 @@
 # Identity of this package.
 PACKAGE_NAME='SnapRAID CLI'
 PACKAGE_TARNAME='snapraid'
-PACKAGE_VERSION='14.0'
-PACKAGE_STRING='SnapRAID CLI 14.0'
+PACKAGE_VERSION='14.1'
+PACKAGE_STRING='SnapRAID CLI 14.1'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL='https://www.snapraid.it'
 
@@ -1336,7 +1336,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures SnapRAID CLI 14.0 to adapt to many kinds of systems.
+'configure' configures SnapRAID CLI 14.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1407,7 +1407,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of SnapRAID CLI 14.0:";;
+     short | recursive ) echo "Configuration of SnapRAID CLI 14.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1530,7 +1530,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-SnapRAID CLI configure 14.0
+SnapRAID CLI configure 14.1
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2116,7 +2116,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by SnapRAID CLI $as_me 14.0, which was
+It was created by SnapRAID CLI $as_me 14.1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3415,7 +3415,7 @@
 
 # Define the identity of the package.
  PACKAGE='snapraid'
- VERSION='14.0'
+ VERSION='14.1'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6675,6 +6675,12 @@
   printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h
 
 fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" 
"ac_cv_header_sys_mount_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mount_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h
+
+fi
 
 ac_fn_c_check_header_compile "$LINENO" "linux/fiemap.h" 
"ac_cv_header_linux_fiemap_h" "$ac_includes_default"
 if test "x$ac_cv_header_linux_fiemap_h" = xyes
@@ -9198,7 +9204,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by SnapRAID CLI $as_me 14.0, which was
+This file was extended by SnapRAID CLI $as_me 14.1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -9263,7 +9269,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-SnapRAID CLI config.status 14.0
+SnapRAID CLI config.status 14.1
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/configure.ac 
new/snapraid-14.1/configure.ac
--- old/snapraid-14.0/configure.ac      2026-03-09 16:16:49.000000000 +0100
+++ new/snapraid-14.1/configure.ac      2026-03-31 12:47:02.000000000 +0200
@@ -49,7 +49,7 @@
 AC_CHECK_HEADERS([fcntl.h stddef.h stdint.h stdlib.h string.h limits.h time.h 
sys/time.h])
 AC_CHECK_HEADERS([unistd.h getopt.h io.h inttypes.h byteswap.h])
 AC_CHECK_HEADERS([pthread.h math.h])
-AC_CHECK_HEADERS([sys/file.h sys/ioctl.h sys/sysmacros.h sys/mkdev.h])
+AC_CHECK_HEADERS([sys/file.h sys/ioctl.h sys/sysmacros.h sys/mkdev.h 
sys/mount.h])
 AC_CHECK_HEADERS([linux/fiemap.h linux/fs.h mach/mach_time.h execinfo.h])
 
 dnl Checks for typedefs, structures, and compiler characteristics.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/doc/snapraid.1 
new/snapraid-14.1/doc/snapraid.1
--- old/snapraid-14.0/doc/snapraid.1    2026-03-17 00:49:40.000000000 +0100
+++ new/snapraid-14.1/doc/snapraid.1    2026-03-31 12:47:57.000000000 +0200
@@ -2030,7 +2030,23 @@
 This affects only the printed file names; if you
 redirect the console output to a file, the resulting file is always
 in UTF\-8 format.
+.SH EXIT CODE 
+SnapRAID terminates with the following error codes:
+.RS 0
+.PD 0
+.HP 4
+.I 0
+Everything OK.
+.HP 4
+.I 1
+The command encountered some errors.
+.HP 4
+.I 2
+The \`diff\` command found everything is OK, but a \`sync\` is
+needed.
+.PD
+.RE
 .SH COPYRIGHT 
-This file is Copyright (C) 2025 Andrea Mazzoleni
+This file is Copyright (C) 2026 Andrea Mazzoleni
 .SH SEE ALSO 
 snapraid_log(1), snapraidd(1), rsync(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/doc/snapraid.d 
new/snapraid-14.1/doc/snapraid.d
--- old/snapraid-14.0/doc/snapraid.d    2026-03-17 00:48:55.000000000 +0100
+++ new/snapraid-14.1/doc/snapraid.d    2026-03-30 22:44:50.000000000 +0200
@@ -1573,8 +1573,16 @@
        redirect the console output to a file, the resulting file is always
        in UTF-8 format.
 
+Exit Code
+       SnapRAID terminates with the following error codes:
+
+       0 - Everything OK.
+       1 - The command encountered some errors.
+       2 - The `diff` command found everything is OK, but a `sync` is
+               needed.
+
 Copyright
-       This file is Copyright (C) 2025 Andrea Mazzoleni
+       This file is Copyright (C) 2026 Andrea Mazzoleni
 
 See Also
        snapraid_log(1), snapraidd(1), rsync(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapraid-14.0/doc/snapraid.txt 
new/snapraid-14.1/doc/snapraid.txt
--- old/snapraid-14.0/doc/snapraid.txt  2026-03-17 00:49:40.000000000 +0100
+++ new/snapraid-14.1/doc/snapraid.txt  2026-03-31 12:49:12.000000000 +0200
@@ -1689,13 +1689,24 @@
 in UTF-8 format.
 
 
-13 COPYRIGHT
+13 EXIT CODE
 ============
 
-This file is Copyright (C) 2025 Andrea Mazzoleni
+SnapRAID terminates with the following error codes:
 
+0 - Everything OK.
+1 - The command encountered some errors.
+2 - The `diff` command found everything is OK, but a `sync` is
+    needed.
 
-14 SEE ALSO
+
+14 COPYRIGHT
+============
+
+This file is Copyright (C) 2026 Andrea Mazzoleni
+
+
+15 SEE ALSO
 ===========
 
 snapraid_log(1), snapraidd(1), rsync(1)

Reply via email to