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-06-18 21:37:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/snapraid (Old) and /work/SRC/openSUSE:Factory/.snapraid.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "snapraid" Thu Jun 18 21:37:35 2026 rev:10 rq:1360281 version:14.7 Changes: -------- --- /work/SRC/openSUSE:Factory/snapraid/snapraid.changes 2026-06-08 14:28:22.912678084 +0200 +++ /work/SRC/openSUSE:Factory/.snapraid.new.1981/snapraid.changes 2026-06-18 21:38:50.847654371 +0200 @@ -1,0 +2,8 @@ +Thu Jun 11 15:03:44 UTC 2026 - Paolo Stivanin <[email protected]> + +- Update to 14.7: + * Fix the 'touch' command on Windows for files with the read-only + attribute. The read-only attribute is temporarily removed and + then restored. No need to update if you are not on Windows. + +------------------------------------------------------------------- Old: ---- snapraid-14.6.tar.gz New: ---- snapraid-14.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ snapraid.spec ++++++ --- /var/tmp/diff_new_pack.BpzX1j/_old 2026-06-18 21:38:51.535683084 +0200 +++ /var/tmp/diff_new_pack.BpzX1j/_new 2026-06-18 21:38:51.535683084 +0200 @@ -17,7 +17,7 @@ Name: snapraid -Version: 14.6 +Version: 14.7 Release: 0 Summary: Disk array backup for many large rarely-changed files License: GPL-3.0-or-later ++++++ snapraid-14.6.tar.gz -> snapraid-14.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/.version new/snapraid-14.7/.version --- old/snapraid-14.6/.version 2026-06-03 21:16:21.000000000 +0200 +++ new/snapraid-14.7/.version 2026-06-10 15:23:47.000000000 +0200 @@ -1 +1 @@ -14.6 \ No newline at end of file +14.7 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/HISTORY new/snapraid-14.7/HISTORY --- old/snapraid-14.6/HISTORY 2026-06-03 21:14:30.000000000 +0200 +++ new/snapraid-14.7/HISTORY 2026-06-10 14:50:56.000000000 +0200 @@ -1,6 +1,12 @@ SnapRAID HISTORY ================ +14.7 2026/06 +============ + * Fix the 'touch' command on Windows for files with the read-only + attribute. The read-only attribute is temporarily removed and + then restored. No need to update if you are not on Windows. + 14.6 2026/06 ============ * Fix stack overflow in deep directory trees on platforms with a small diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/Makefile.am new/snapraid-14.7/Makefile.am --- old/snapraid-14.6/Makefile.am 2026-06-03 21:14:30.000000000 +0200 +++ new/snapraid-14.7/Makefile.am 2026-06-10 15:22:22.000000000 +0200 @@ -203,12 +203,13 @@ rm -f lcov.info rm -f gmon.out rm -f makeslackware.sh makeslackdist.sh pkg/snapraid.SlackBuild pkg/snapraid.info makedeb.sh pkg/control makerpm.sh pkg/snapraid.spec - rm -f pkg/snapraid-*.txz pkg/snapraid_*.deb pkg/snapraid-*.rpm maintainer-clean-local: rm -f $(LIST_MAN) rm -f $(LIST_TXT) rm -f $(LIST_XML) + rm -f snapraid-*.txz snapraid_*.deb snapraid-*.rpm snapraid-*.tar.zst snapraid-*.zip snapraid-*.tar.gz + rm -f snapraid.src.tar.gz snapraid.tar.gz # Install localized manpages install-data-hook: @@ -680,7 +681,7 @@ $(MSG) Silently corrupt some files, scrub and fix filtering for error. Test scrub patterns. $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) sync $(TESTENV) ./mktest$(EXEEXT) damage 1 1 1 bench/disk1/a/* - $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) --test-expect-recoverable --test-force-scrub-at 100000 scrub + $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) --test-expect-recoverable -p full scrub $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) status $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) fix -e $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) --percentage bad scrub diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/Makefile.in new/snapraid-14.7/Makefile.in --- old/snapraid-14.6/Makefile.in 2026-06-03 21:14:51.000000000 +0200 +++ new/snapraid-14.7/Makefile.in 2026-06-10 15:22:41.000000000 +0200 @@ -1273,12 +1273,13 @@ rm -f lcov.info rm -f gmon.out rm -f makeslackware.sh makeslackdist.sh pkg/snapraid.SlackBuild pkg/snapraid.info makedeb.sh pkg/control makerpm.sh pkg/snapraid.spec - rm -f pkg/snapraid-*.txz pkg/snapraid_*.deb pkg/snapraid-*.rpm maintainer-clean-local: rm -f $(LIST_MAN) rm -f $(LIST_TXT) rm -f $(LIST_XML) + rm -f snapraid-*.txz snapraid_*.deb snapraid-*.rpm snapraid-*.tar.zst snapraid-*.zip snapraid-*.tar.gz + rm -f snapraid.src.tar.gz snapraid.tar.gz # Install localized manpages install-data-hook: @@ -1667,7 +1668,7 @@ @HAVE_THREAD_CHECKER_FALSE@ $(MSG) Silently corrupt some files, scrub and fix filtering for error. Test scrub patterns. @HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) sync @HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) ./mktest$(EXEEXT) damage 1 1 1 bench/disk1/a/* -@HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) --test-expect-recoverable --test-force-scrub-at 100000 scrub +@HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) --test-expect-recoverable -p full scrub @HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) status @HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) fix -e @HAVE_THREAD_CHECKER_FALSE@ $(TESTENV) $(SNAPRAID) $(CHECKFLAGS) -c $(CONF) --percentage bad scrub diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/cmdline/mingw.c new/snapraid-14.7/cmdline/mingw.c --- old/snapraid-14.6/cmdline/mingw.c 2026-06-03 21:14:30.000000000 +0200 +++ new/snapraid-14.7/cmdline/mingw.c 2026-06-10 14:50:56.000000000 +0200 @@ -766,6 +766,31 @@ return windows_info2stat(&info, &tag, st); } +int windows_get_file_attributes(const char* file) +{ + wchar_t conv_buf[CONV_MAX]; + + DWORD ret = GetFileAttributesW(convert(conv_buf, file)); + if (ret == INVALID_FILE_ATTRIBUTES) { + windows_errno(GetLastError()); + return -1; + } + + return ret; +} + +int windows_set_file_attributes(const char* file, int attributes) +{ + wchar_t conv_buf[CONV_MAX]; + + if (!SetFileAttributesW(convert(conv_buf, file), attributes)) { + windows_errno(GetLastError()); + return -1; + } + + return 0; +} + int windows_lstat(const char* file, struct windows_stat* st) { wchar_t conv_buf[CONV_MAX]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/cmdline/mingw.h new/snapraid-14.7/cmdline/mingw.h --- old/snapraid-14.6/cmdline/mingw.h 2026-06-03 21:14:30.000000000 +0200 +++ new/snapraid-14.7/cmdline/mingw.h 2026-06-10 14:50:56.000000000 +0200 @@ -381,6 +381,16 @@ */ size_t windows_direct_size(void); +/** + * Like GetFileAttributes() + */ +int windows_get_file_attributes(const char* file); + +/** + * Like SetFileAttributes() + */ +int windows_set_file_attributes(const char* file, int attributes); + /****************************************************************************/ /* thread */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/cmdline/snapraid.c new/snapraid-14.7/cmdline/snapraid.c --- old/snapraid-14.6/cmdline/snapraid.c 2026-06-03 21:14:30.000000000 +0200 +++ new/snapraid-14.7/cmdline/snapraid.c 2026-06-10 14:50:56.000000000 +0200 @@ -1903,11 +1903,18 @@ } else if (operation == OPERATION_REHASH) { state_read(&state); - /* intercept signals while operating */ - signal_init(); - state_rehash(&state); + /* + * Intercept signals while operating + * + * Intentionally do this after the touch operation. + * + * The signal protection is meant only for saving the content file, + * or an early stop of long operations. + */ + signal_init(); + /* save the new state if required */ if (state.need_write) state_write(&state); @@ -1945,10 +1952,18 @@ state_touch(&state); - /* intercept signals while operating */ + /* + * Intercept signals while operating + * + * Intentionally do this after the touch operation. + * + * The signal protection is meant only for saving the content file, + * or an early stop of long operations. + */ signal_init(); - state_write(&state); + if (state.need_write) + state_write(&state); } else if (operation == OPERATION_SPINUP) { ret = state_device(&state, DEVICE_UP, &filterlist_disk); #if HAVE_CHECKER diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/cmdline/touch.c new/snapraid-14.7/cmdline/touch.c --- old/snapraid-14.6/cmdline/touch.c 2026-06-03 21:14:30.000000000 +0200 +++ new/snapraid-14.7/cmdline/touch.c 2026-06-10 14:50:56.000000000 +0200 @@ -11,6 +11,8 @@ void state_touch(struct snapraid_state* state) { tommy_node* i; + unsigned counter = 0; + msg_progress("Setting sub-second timestamps...\n"); /* for all disks */ @@ -63,6 +65,24 @@ /* open it */ f = open(path, flags); +#ifdef _WIN32 + if (f == -1) { + /* LCOV_EXCL_START */ + if (errno == EACCES) { + int attributes = windows_get_file_attributes(path); + if (attributes != -1 && (attributes & FILE_ATTRIBUTE_READONLY) != 0) { + /* remove read only attribute */ + if (windows_set_file_attributes(path, attributes & ~FILE_ATTRIBUTE_READONLY) == 0) { + f = open(path, flags); + if (windows_set_file_attributes(path, attributes) != 0) { + log_error(errno, "Error restoring read-only attribute for '%s'. %s.\n", path, strerror(errno)); + } + } + } + } + /* LCOV_EXCL_STOP */ + } +#endif if (f == -1) { /* LCOV_EXCL_START */ log_error(errno, "Error opening file '%s'. %s.\n", path, strerror(errno)); @@ -123,8 +143,13 @@ log_tag("touch:%s:%s: %" PRIu64 ".%d\n", disk->name, esc_tag(file->sub), (uint64_t)st.st_mtime, STAT_NSEC(&st)); msg_info("touch %s\n", fmt_term(disk, file->sub)); + + ++counter; } } } + + msg_status("\n"); + msg_status("%8u touched files\n", counter); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/snapraid-14.6/configure new/snapraid-14.7/configure --- old/snapraid-14.6/configure 2026-06-03 21:14:50.000000000 +0200 +++ new/snapraid-14.7/configure 2026-06-10 15:22:40.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.6. +# Generated by GNU Autoconf 2.72 for SnapRAID CLI 14.7. # # # 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.6' -PACKAGE_STRING='SnapRAID CLI 14.6' +PACKAGE_VERSION='14.7' +PACKAGE_STRING='SnapRAID CLI 14.7' 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.6 to adapt to many kinds of systems. +'configure' configures SnapRAID CLI 14.7 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.6:";; + short | recursive ) echo "Configuration of SnapRAID CLI 14.7:";; 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.6 +SnapRAID CLI configure 14.7 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.6, which was +It was created by SnapRAID CLI $as_me 14.7, 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.6' + VERSION='14.7' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -9217,7 +9217,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.6, which was +This file was extended by SnapRAID CLI $as_me 14.7, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9282,7 +9282,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -SnapRAID CLI config.status 14.6 +SnapRAID CLI config.status 14.7 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\"
