Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package exfatprogs for openSUSE:Factory checked in at 2023-05-21 19:08:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/exfatprogs (Old) and /work/SRC/openSUSE:Factory/.exfatprogs.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "exfatprogs" Sun May 21 19:08:13 2023 rev:12 rq:1087932 version:1.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/exfatprogs/exfatprogs.changes 2022-10-29 20:15:41.941760654 +0200 +++ /work/SRC/openSUSE:Factory/.exfatprogs.new.1533/exfatprogs.changes 2023-05-21 19:08:29.214359244 +0200 @@ -1,0 +2,7 @@ +Fri May 19 09:21:26 UTC 2023 - Michael Vetter <mvet...@suse.com> + +- Update to 1.2.1: + * fsck.exfat: Repair zero size directory. + * fsck.exfat: Four small clean-ups. + +------------------------------------------------------------------- Old: ---- exfatprogs-1.2.0.tar.xz exfatprogs-1.2.0.tar.xz.asc New: ---- exfatprogs-1.2.1.tar.xz exfatprogs-1.2.1.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ exfatprogs.spec ++++++ --- /var/tmp/diff_new_pack.kLGfuE/_old 2023-05-21 19:08:29.922363287 +0200 +++ /var/tmp/diff_new_pack.kLGfuE/_new 2023-05-21 19:08:29.930363333 +0200 @@ -1,7 +1,7 @@ # # spec file for package exfatprogs # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: exfatprogs -Version: 1.2.0 +Version: 1.2.1 Release: 0 Summary: Utilities for exFAT file system maintenance License: GPL-2.0-or-later ++++++ exfatprogs-1.2.0.tar.xz -> exfatprogs-1.2.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/Makefile.in new/exfatprogs-1.2.1/Makefile.in --- old/exfatprogs-1.2.0/Makefile.in 2022-10-28 11:38:00.208001015 +0200 +++ new/exfatprogs-1.2.1/Makefile.in 2023-05-18 13:52:01.525543247 +0200 @@ -198,7 +198,7 @@ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/ltmain.sh \ $(top_srcdir)/build-aux/missing COPYING NEWS build-aux/compile \ - build-aux/config.guess build-aux/config.sub build-aux/depcomp \ + build-aux/config.guess build-aux/config.sub \ build-aux/install-sh build-aux/ltmain.sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/NEWS new/exfatprogs-1.2.1/NEWS --- old/exfatprogs-1.2.0/NEWS 2022-10-28 11:28:54.838536359 +0200 +++ new/exfatprogs-1.2.1/NEWS 2023-05-18 13:47:54.032231282 +0200 @@ -1,3 +1,10 @@ +exfatprogs 1.2.1 - released 2023-05-17 +====================================== + +CHANGES : + * fsck.exfat: Repair zero size directory. + * fsck.exfat: Four small clean-ups. + exfatprogs 1.2.0 - released 2022-10-28 ====================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/configure new/exfatprogs-1.2.1/configure --- old/exfatprogs-1.2.0/configure 2022-10-28 11:36:56.035294064 +0200 +++ new/exfatprogs-1.2.1/configure 2023-05-18 13:52:00.765530076 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for exfatprogs 1.2.0. +# Generated by GNU Autoconf 2.69 for exfatprogs 1.2.1. # # Report bugs to <linkinj...@kernel.org>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='exfatprogs' PACKAGE_TARNAME='exfatprogs' -PACKAGE_VERSION='1.2.0' -PACKAGE_STRING='exfatprogs 1.2.0' +PACKAGE_VERSION='1.2.1' +PACKAGE_STRING='exfatprogs 1.2.1' PACKAGE_BUGREPORT='linkinj...@kernel.org' PACKAGE_URL='https://github.com/exfatprogs/exfatprogs' @@ -1325,7 +1325,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 exfatprogs 1.2.0 to adapt to many kinds of systems. +\`configure' configures exfatprogs 1.2.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1396,7 +1396,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of exfatprogs 1.2.0:";; + short | recursive ) echo "Configuration of exfatprogs 1.2.1:";; esac cat <<\_ACEOF @@ -1508,7 +1508,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -exfatprogs configure 1.2.0 +exfatprogs configure 1.2.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1786,7 +1786,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by exfatprogs $as_me 1.2.0, which was +It was created by exfatprogs $as_me 1.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2654,7 +2654,7 @@ # Define the identity of the package. PACKAGE='exfatprogs' - VERSION='1.2.0' + VERSION='1.2.1' cat >>confdefs.h <<_ACEOF @@ -13256,7 +13256,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by exfatprogs $as_me 1.2.0, which was +This file was extended by exfatprogs $as_me 1.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13323,7 +13323,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -exfatprogs config.status 1.2.0 +exfatprogs config.status 1.2.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/exfat2img/exfat2img.c new/exfatprogs-1.2.1/exfat2img/exfat2img.c --- old/exfatprogs-1.2.0/exfat2img/exfat2img.c 2022-10-28 11:28:54.842536039 +0200 +++ new/exfatprogs-1.2.1/exfat2img/exfat2img.c 2023-05-18 13:47:54.032231282 +0200 @@ -754,7 +754,7 @@ } else if (ret == 0) { return 0; } - buf += (size_t)ret; + buf = (char *)buf + (size_t)ret; read_len += (size_t)ret; } return read_len; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/fsck/fsck.c new/exfatprogs-1.2.1/fsck/fsck.c --- old/exfatprogs-1.2.0/fsck/fsck.c 2022-10-28 11:28:54.842536039 +0200 +++ new/exfatprogs-1.2.1/fsck/fsck.c 2023-05-18 13:47:54.036231479 +0200 @@ -103,21 +103,31 @@ }) static int check_clus_chain(struct exfat_de_iter *de_iter, - struct exfat_inode *node) + struct exfat_inode *node) { struct exfat *exfat = de_iter->exfat; struct exfat_dentry *stream_de; - clus_t clus, prev, next; + clus_t clus, prev, next, new_clus; uint64_t count, max_count; + int err; clus = node->first_clus; prev = EXFAT_EOF_CLUSTER; count = 0; max_count = DIV_ROUND_UP(node->size, exfat->clus_size); - if (node->size == 0 && node->first_clus == EXFAT_FREE_CLUSTER) + if (node->size == 0 && node->first_clus == EXFAT_FREE_CLUSTER) { + /* locate a cluster for the empty dir if the dir starts with EXFAT_FREE_CLUSTER */ + if (node->attr & ATTR_SUBDIR) { + if (repair_file_ask(de_iter, node, + ER_DE_FIRST_CLUS, + "size %#" PRIx64 ", but the first cluster %#x", + node->size, node->first_clus)) + goto allocate_cluster; + return -EINVAL; + } return 0; - + } /* the first cluster is wrong */ if ((node->size == 0 && node->first_clus != EXFAT_FREE_CLUSTER) || (node->size > 0 && !exfat_heap_clus(exfat, node->first_clus))) { @@ -215,6 +225,38 @@ } return 0; +allocate_cluster: + exfat_de_iter_get_dirty(de_iter, 1, &stream_de); + err = exfat_find_free_cluster(exfat, exfat->start_clu, &new_clus); + if (err) { + exfat->start_clu = EXFAT_FIRST_CLUSTER; + exfat_err("failed to find a free cluster\n"); + return -ENOSPC; + } + exfat->start_clu = new_clus; + + if (exfat_set_fat(exfat, new_clus, EXFAT_EOF_CLUSTER)) + return -EIO; + + /* zero out the new cluster */ + if (exfat_write(exfat->blk_dev->dev_fd, exfat->zero_cluster, + exfat->clus_size, exfat_c2o(exfat, new_clus)) != + (ssize_t)exfat->clus_size) { + exfat_err("failed to fill new cluster with zeroes\n"); + return -EIO; + } + + /* modify the number of cluster form 0 to 1 */ + count = 1; + stream_de->stream_start_clu = cpu_to_le32(new_clus); + stream_de->stream_size = cpu_to_le64(count * exfat->clus_size); + stream_de->stream_valid_size = cpu_to_le64(count * exfat->clus_size); + stream_de->dentry.stream.flags |= EXFAT_SF_CONTIGUOUS; + node->first_clus = new_clus; + node->size = count * exfat->clus_size; + node->is_contiguous = true; + exfat_bitmap_set(exfat->alloc_bitmap, new_clus); + return 1; truncate_file: node->size = count * exfat->clus_size; if (!exfat_heap_clus(exfat, prev)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/fsck/repair.c new/exfatprogs-1.2.1/fsck/repair.c --- old/exfatprogs-1.2.0/fsck/repair.c 2022-10-28 11:28:54.842536039 +0200 +++ new/exfatprogs-1.2.1/fsck/repair.c 2023-05-18 13:47:54.036231479 +0200 @@ -61,6 +61,7 @@ {ER_FILE_LARGER_SIZE, ERF_PREEN_YES, ERP_TRUNCATE, 0, 0, 0}, {ER_FILE_DUPLICATED_CLUS, ERF_PREEN_YES, ERP_TRUNCATE, 0, 0, 0}, {ER_FILE_ZERO_NOFAT, ERF_PREEN_YES, ERP_FIX, 0, 0, 0}, + {ER_DE_FIRST_CLUS, ERF_PREEN_YES, ERP_FIX, 0, 0, 0} }; static struct exfat_repair_problem *find_problem(er_problem_code_t prcode) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/fsck/repair.h new/exfatprogs-1.2.1/fsck/repair.h --- old/exfatprogs-1.2.0/fsck/repair.h 2022-10-28 11:28:54.842536039 +0200 +++ new/exfatprogs-1.2.1/fsck/repair.h 2023-05-18 13:47:54.036231479 +0200 @@ -23,7 +23,7 @@ #define ER_FILE_LARGER_SIZE 0x00002005 #define ER_FILE_DUPLICATED_CLUS 0x00002006 #define ER_FILE_ZERO_NOFAT 0x00002007 - +#define ER_DE_FIRST_CLUS 0x00002008 typedef unsigned int er_problem_code_t; struct exfat_fsck; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/include/exfat_dir.h new/exfatprogs-1.2.1/include/exfat_dir.h --- old/exfatprogs-1.2.0/include/exfat_dir.h 2022-10-28 11:28:54.842536039 +0200 +++ new/exfatprogs-1.2.1/include/exfat_dir.h 2023-05-18 13:47:54.036231479 +0200 @@ -75,6 +75,7 @@ int exfat_build_file_dentry_set(struct exfat *exfat, const char *name, unsigned short attr, struct exfat_dentry **dentry_set, int *dentry_count); +int exfat_find_free_cluster(struct exfat *exfat, clus_t start, clus_t *new_clu); int exfat_add_dentry_set(struct exfat *exfat, struct exfat_dentry_loc *loc, struct exfat_dentry *dset, int dcount, bool need_next_loc); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/include/libexfat.h.rej new/exfatprogs-1.2.1/include/libexfat.h.rej --- old/exfatprogs-1.2.0/include/libexfat.h.rej 2022-02-09 03:42:10.102081219 +0100 +++ new/exfatprogs-1.2.1/include/libexfat.h.rej 1970-01-01 01:00:00.000000000 +0100 @@ -1,9 +0,0 @@ -diff a/include/libexfat.h b/include/libexfat.h (rejected hunks) -@@ -35,6 +35,7 @@ - #define VOLUME_LABEL_BUFFER_SIZE (VOLUME_LABEL_MAX_LEN*MB_LEN_MAX+1) - - /* Upcase tabel macro */ -+#define EXFAT_UPCASE_TABLE_CHARS (0x10000) - #define EXFAT_UPCASE_TABLE_SIZE (5836) - - /* Flags for tune.exfat and exfatlabel */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/include/version.h new/exfatprogs-1.2.1/include/version.h --- old/exfatprogs-1.2.0/include/version.h 2022-10-28 11:28:54.846535719 +0200 +++ new/exfatprogs-1.2.1/include/version.h 2023-05-18 13:47:54.036231479 +0200 @@ -5,6 +5,6 @@ #ifndef _VERSION_H -#define EXFAT_PROGS_VERSION "1.2.0" +#define EXFAT_PROGS_VERSION "1.2.1" #endif /* !_VERSION_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/include/version.h.rej new/exfatprogs-1.2.1/include/version.h.rej --- old/exfatprogs-1.2.0/include/version.h.rej 2022-07-22 07:41:51.927679828 +0200 +++ new/exfatprogs-1.2.1/include/version.h.rej 1970-01-01 01:00:00.000000000 +0100 @@ -1,9 +0,0 @@ -diff a/include/version.h b/include/version.h (rejected hunks) -@@ -6,6 +6,6 @@ - #ifndef _VERSION_H - - #define EXFAT_PROGS_VERSION "1.1.2" --#define WEBOS_EXFAT_PROGS_VERSION "webos-1.1.2-8" -+#define WEBOS_EXFAT_PROGS_VERSION "webos-1.1.2-9" - - #endif /* !_VERSION_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/lib/exfat_dir.c new/exfatprogs-1.2.1/lib/exfat_dir.c --- old/exfatprogs-1.2.0/lib/exfat_dir.c 2022-10-28 11:28:54.846535719 +0200 +++ new/exfatprogs-1.2.1/lib/exfat_dir.c 2023-05-18 13:47:54.040231677 +0200 @@ -35,10 +35,11 @@ unsigned int i; desc = &iter->buffer_desc[block & 0x01]; - device_offset = exfat_c2o(exfat, desc->p_clus) + desc->offset; for (i = 0; i < iter->read_size / iter->write_size; i++) { if (desc->dirty[i]) { + device_offset = exfat_c2o(exfat, desc->p_clus) + + desc->offset; if (exfat_write(exfat->blk_dev->dev_fd, desc->buffer + i * iter->write_size, iter->write_size, @@ -677,7 +678,7 @@ return 0; } -static int find_free_cluster(struct exfat *exfat, +int exfat_find_free_cluster(struct exfat *exfat, clus_t start, clus_t *new_clu) { clus_t end = le32_to_cpu(exfat->bs->bsx.clu_count) + @@ -804,7 +805,7 @@ if ((need_dset && !inode->dentry_set) || inode->is_contiguous) return -EINVAL; - err = find_free_cluster(exfat, exfat->start_clu, new_clu); + err = exfat_find_free_cluster(exfat, exfat->start_clu, new_clu); if (err) { exfat->start_clu = EXFAT_FIRST_CLUSTER; exfat_err("failed to find an free cluster\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/lib/libexfat.c new/exfatprogs-1.2.1/lib/libexfat.c --- old/exfatprogs-1.2.0/lib/libexfat.c 2022-10-28 11:28:54.846535719 +0200 +++ new/exfatprogs-1.2.1/lib/libexfat.c 2023-05-18 13:47:54.040231677 +0200 @@ -15,6 +15,7 @@ #include <errno.h> #include <wchar.h> #include <limits.h> +#include <assert.h> #include "exfat_ondisk.h" #include "libexfat.h" @@ -748,8 +749,7 @@ off_t exfat_c2o(struct exfat *exfat, unsigned int clus) { - if (clus < EXFAT_FIRST_CLUSTER) - return ~0L; + assert(clus >= EXFAT_FIRST_CLUSTER); return exfat_s2o(exfat, le32_to_cpu(exfat->bs->bsx.clu_offset) + ((off_t)(clus - EXFAT_FIRST_CLUSTER) << diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exfatprogs-1.2.0/manpages/fsck.exfat.8 new/exfatprogs-1.2.1/manpages/fsck.exfat.8 --- old/exfatprogs-1.2.0/manpages/fsck.exfat.8 2022-10-28 11:28:54.850535398 +0200 +++ new/exfatprogs-1.2.1/manpages/fsck.exfat.8 2023-05-18 13:47:54.040231677 +0200 @@ -42,7 +42,7 @@ .IP - Start cluster number is invalid. The cluster number and file size are changed to 0. .IP - -Checksum value of direcotry entry set is invalid. Directory entry set is deleted. +Checksum value of directory entry set is invalid. Directory entry set is deleted. .IP - Bad hash value of a file name. The hash value is changed properly. .IP -