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 -

Reply via email to