Hello community, here is the log from the commit of package exfat-utils for openSUSE:Factory checked in at 2018-10-18 15:39:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/exfat-utils (Old) and /work/SRC/openSUSE:Factory/.exfat-utils.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "exfat-utils" Thu Oct 18 15:39:43 2018 rev:2 rq:642827 version:1.3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/exfat-utils/exfat-utils.changes 2017-12-04 10:01:24.362528225 +0100 +++ /work/SRC/openSUSE:Factory/.exfat-utils.new/exfat-utils.changes 2018-10-18 15:40:04.430042171 +0200 @@ -1,0 +2,9 @@ +Thu Oct 18 02:49:12 UTC 2018 - s...@suspend.net + +- Update to 1.3.0 + * exfatfsck can now repair some errors + * Added experimental Android support for exfa-utils + * Cleaned up FUSE code preparing for FUSE 3 support + * dirent ->d_type is now filled on readdir() + +------------------------------------------------------------------- Old: ---- exfat-utils-1.2.7.tar.gz New: ---- exfat-utils-1.3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ exfat-utils.spec ++++++ --- /var/tmp/diff_new_pack.KIzxbd/_old 2018-10-18 15:40:05.450041013 +0200 +++ /var/tmp/diff_new_pack.KIzxbd/_new 2018-10-18 15:40:05.454041008 +0200 @@ -1,7 +1,7 @@ # # spec file for package exfat-utils # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2013 Sidlovsky, Yaroslav <zawer...@gmail.com> # # All modifications and additions to the file contributed by third parties @@ -13,15 +13,15 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: exfat-utils -Version: 1.2.7 +Version: 1.3.0 Release: 0 Summary: Utilities for exFAT file system -License: GPL-2.0+ +License: GPL-2.0-or-later Group: System/Filesystems Url: https://github.com/relan/exfat Source0: https://github.com/relan/exfat/releases/download/v%{version}/%{name}-%{version}.tar.gz ++++++ exfat-utils-1.2.7.tar.gz -> exfat-utils-1.3.0.tar.gz ++++++ ++++ 5673 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/ChangeLog new/exfat-utils-1.3.0/ChangeLog --- old/exfat-utils-1.2.7/ChangeLog 2017-06-05 09:04:11.000000000 +0200 +++ new/exfat-utils-1.3.0/ChangeLog 2018-09-15 07:04:52.000000000 +0200 @@ -1,3 +1,20 @@ +1.3.0 (2018-09-15) + +* exfatfsck can now repair some errors. +* Added experimental Android support for exfat-utils [liminghao, LongPingWEI, +Pablo Mendez Hernandez, Pierre-Hugues Husson]. +* Cleaned up FUSE code preparing for FUSE 3 support. +* Removed OpenBSD support as it does not handle -o option in fuse_main(). +* Re-introduced FreeBSD support [Oleksii Samorukov]. +* Fixed DragonFly BSD support [Tomohiro Kusumi]. +* dirent->d_type in now filled on readdir() [Mark Browning]. + +1.2.8 (2018-02-03) + +* Fixed new files or directories creation in the root directory: ensure there +are no 0x00 entries before valid ones; otherwise Windows can corrupt them. +* Fixed compilation on GNU/HURD platform. + 1.2.7 (2017-06-05) * Fixed handling of two last clusters: operations with files that occupy these diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/Makefile.am new/exfat-utils-1.3.0/Makefile.am --- old/exfat-utils-1.2.7/Makefile.am 2017-06-05 09:05:58.000000000 +0200 +++ new/exfat-utils-1.3.0/Makefile.am 2018-09-15 07:06:05.000000000 +0200 @@ -3,7 +3,7 @@ # Automake source. # # Free exFAT implementation. -# Copyright (C) 2010-2017 Andrew Nayenko +# Copyright (C) 2010-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/README new/exfat-utils-1.3.0/README --- old/exfat-utils-1.2.7/README 2017-06-05 09:05:51.000000000 +0200 +++ new/exfat-utils-1.3.0/README 2018-09-15 07:05:57.000000000 +0200 @@ -7,7 +7,7 @@ * GNU/Linux * Mac OS X 10.5 or later -* OpenBSD +* FreeBSD Most GNU/Linux distributions already have fuse-exfat and exfat-utils in their repositories, so you can just install and use them. The next chapter describes how to compile them from source. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/configure.ac new/exfat-utils-1.3.0/configure.ac --- old/exfat-utils-1.2.7/configure.ac 2017-06-05 09:05:58.000000000 +0200 +++ new/exfat-utils-1.3.0/configure.ac 2018-09-15 07:06:05.000000000 +0200 @@ -3,7 +3,7 @@ # Autoconf source. # # Free exFAT implementation. -# Copyright (C) 2010-2017 Andrew Nayenko +# Copyright (C) 2010-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ # AC_INIT([Free exFAT implementation], - [1.2.7], + [1.3.0], [re...@users.noreply.github.com], [exfat-utils], [https://github.com/relan/exfat]) @@ -31,6 +31,12 @@ AC_PROG_RANLIB AM_PROG_AR AC_SYS_LARGEFILE +PKG_CHECK_MODULES([UBLIO], [libublio], [ + CFLAGS="$CFLAGS $UBLIO_CFLAGS" + LIBS="$LIBS $UBLIO_LIBS" + AC_DEFINE([USE_UBLIO], [1], + [Define if block devices are not supported.]) +], [:]) AC_CONFIG_HEADERS([libexfat/config.h]) AC_CONFIG_FILES([ libexfat/Makefile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/dump/Makefile.am new/exfat-utils-1.3.0/dump/Makefile.am --- old/exfat-utils-1.2.7/dump/Makefile.am 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/dump/Makefile.am 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ # Automake source. # # Free exFAT implementation. -# Copyright (C) 2011-2017 Andrew Nayenko +# Copyright (C) 2011-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/dump/dumpexfat.8 new/exfat-utils-1.3.0/dump/dumpexfat.8 --- old/exfat-utils-1.2.7/dump/dumpexfat.8 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/dump/dumpexfat.8 2018-09-15 07:04:52.000000000 +0200 @@ -1,6 +1,6 @@ -.\" Copyright (C) 2011-2016 Andrew Nayenko +.\" Copyright (C) 2011-2018 Andrew Nayenko .\" -.TH DUMPEXFAT 8 "February 2011" +.TH DUMPEXFAT 8 "July 2016" .SH NAME .B dumpexfat \- dump exFAT file system diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/dump/main.c new/exfat-utils-1.3.0/dump/main.c --- old/exfat-utils-1.2.7/dump/main.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/dump/main.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Prints detailed information about exFAT volume. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -226,7 +226,7 @@ break; case 'V': printf("dumpexfat %s\n", VERSION); - puts("Copyright (C) 2011-2017 Andrew Nayenko"); + puts("Copyright (C) 2011-2018 Andrew Nayenko"); return 0; default: usage(argv[0]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/fsck/Makefile.am new/exfat-utils-1.3.0/fsck/Makefile.am --- old/exfat-utils-1.2.7/fsck/Makefile.am 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/fsck/Makefile.am 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ # Automake source. # # Free exFAT implementation. -# Copyright (C) 2011-2017 Andrew Nayenko +# Copyright (C) 2011-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/fsck/exfatfsck.8 new/exfat-utils-1.3.0/fsck/exfatfsck.8 --- old/exfat-utils-1.2.7/fsck/exfatfsck.8 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/fsck/exfatfsck.8 2018-09-15 07:04:52.000000000 +0200 @@ -1,26 +1,49 @@ -.\" Copyright (C) 2011-2016 Andrew Nayenko +.\" Copyright (C) 2011-2018 Andrew Nayenko .\" -.TH EXFATFSCK 8 "February 2011" +.TH EXFATFSCK 8 "September 2018" .SH NAME .B exfatfsck \- check an exFAT file system .SH SYNOPSIS .B exfatfsck [ -.B \-V +.B \-a +| +.B \-n +| +.B \-p +| +.B \-y ] .I device +.br +.B exfatfsck +[ +.B \-V +] .SH DESCRIPTION .B exfatfsck -checks an exFAT file system for errors. Note that it cannot repair corrupted -FS, it just reports found errors. +checks an exFAT file system for errors. It can repair some of them. .SH COMMAND LINE OPTIONS Command line options available: .TP +.BI \-a +Automatically repair the file system. No user intervention required. +.TP +.BI \-n +No-operation mode: non-interactively check for errors, but don't write +anything to the file system. +.TP +.BI \-p +Same as \fB\-a\fR for compatibility with other *fsck. +.TP .BI \-V Print version and copyright. +.TP +.BI \-y +Same as \fB\-a\fR for compatibility with other *fsck. .SH EXIT CODES Zero is returned if errors were not found. Any other code means an error. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/fsck/main.c new/exfat-utils-1.3.0/fsck/main.c --- old/exfat-utils-1.2.7/fsck/main.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/fsck/main.c 2018-09-15 07:04:52.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system checker. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -114,39 +114,67 @@ files_count++; nodeck(ef, node); } + exfat_flush_node(ef, node); exfat_put_node(ef, node); } exfat_closedir(ef, &it); + exfat_flush_node(ef, parent); exfat_put_node(ef, parent); free(entry_path); } -static void fsck(struct exfat* ef) +static void fsck(struct exfat* ef, const char* spec, const char* options) { + if (exfat_mount(ef, spec, options) != 0) + { + fputs("File system checking stopped. ", stdout); + return; + } + exfat_print_info(ef->sb, exfat_count_free_clusters(ef)); dirck(ef, ""); + exfat_unmount(ef); + + printf("Totally %"PRIu64" directories and %"PRIu64" files.\n", + directories_count, files_count); + fputs("File system checking finished. ", stdout); } static void usage(const char* prog) { - fprintf(stderr, "Usage: %s [-V] <device>\n", prog); + fprintf(stderr, "Usage: %s [-a | -n | -p | -y] <device>\n", prog); + fprintf(stderr, " %s -V\n", prog); exit(1); } int main(int argc, char* argv[]) { int opt; + const char* options; const char* spec = NULL; struct exfat ef; printf("exfatfsck %s\n", VERSION); - while ((opt = getopt(argc, argv, "V")) != -1) + if (isatty(STDIN_FILENO)) + options = "repair=1"; + else + options = "repair=0"; + + while ((opt = getopt(argc, argv, "anpVy")) != -1) { switch (opt) { + case 'a': + case 'p': + case 'y': + options = "repair=2"; + break; + case 'n': + options = "repair=0,ro"; + break; case 'V': - puts("Copyright (C) 2011-2017 Andrew Nayenko"); + puts("Copyright (C) 2011-2018 Andrew Nayenko"); return 0; default: usage(argv[0]); @@ -157,19 +185,12 @@ usage(argv[0]); spec = argv[optind]; - if (exfat_mount(&ef, spec, "ro") != 0) - return 1; - printf("Checking file system on %s.\n", spec); - fsck(&ef); - exfat_unmount(&ef); - printf("Totally %"PRIu64" directories and %"PRIu64" files.\n", - directories_count, files_count); - - fputs("File system checking finished. ", stdout); + fsck(&ef, spec, options); if (exfat_errors != 0) { - printf("ERRORS FOUND: %d.\n", exfat_errors); + printf("ERRORS FOUND: %d, FIXED: %d.\n", + exfat_errors, exfat_errors_fixed); return 1; } puts("No errors found."); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/label/Makefile.am new/exfat-utils-1.3.0/label/Makefile.am --- old/exfat-utils-1.2.7/label/Makefile.am 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/label/Makefile.am 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ # Automake source. # # Free exFAT implementation. -# Copyright (C) 2011-2017 Andrew Nayenko +# Copyright (C) 2011-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/label/exfatlabel.8 new/exfat-utils-1.3.0/label/exfatlabel.8 --- old/exfat-utils-1.2.7/label/exfatlabel.8 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/label/exfatlabel.8 2018-09-15 07:04:52.000000000 +0200 @@ -1,6 +1,6 @@ -.\" Copyright (C) 2011-2016 Andrew Nayenko +.\" Copyright (C) 2011-2018 Andrew Nayenko .\" -.TH EXFATLABEL 8 "February 2011" +.TH EXFATLABEL 8 "September 2017" .SH NAME .B exfatlabel \- get or set an exFAT file system label @@ -22,9 +22,9 @@ .I label argument is present, .B exfatlabel -sets the new volume name. Label can be up to 15 characters. This limit is -shorter if characters beyond Unicode BMP are used because internally label -is stored in UTF-16. +sets the new volume name. Empty label ('') removes volume name. Label can be +up to 15 characters. This limit is shorter if characters beyond Unicode BMP +are used because internally label is stored in UTF-16. If .I label diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/label/main.c new/exfat-utils-1.3.0/label/main.c --- old/exfat-utils-1.2.7/label/main.c 2017-05-03 07:37:23.000000000 +0200 +++ new/exfat-utils-1.3.0/label/main.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Prints or changes exFAT volume label. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ if (strcmp(*pp, "-V") == 0) { printf("exfatlabel %s\n", VERSION); - puts("Copyright (C) 2011-2017 Andrew Nayenko"); + puts("Copyright (C) 2011-2018 Andrew Nayenko"); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/Makefile.am new/exfat-utils-1.3.0/libexfat/Makefile.am --- old/exfat-utils-1.2.7/libexfat/Makefile.am 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/Makefile.am 2018-09-15 07:04:52.000000000 +0200 @@ -3,7 +3,7 @@ # Automake source. # # Free exFAT implementation. -# Copyright (C) 2010-2017 Andrew Nayenko +# Copyright (C) 2010-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -33,6 +33,7 @@ mount.c \ node.c \ platform.h \ + repair.c \ time.c \ utf.c \ utils.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/byteorder.h new/exfat-utils-1.3.0/libexfat/byteorder.h --- old/exfat-utils-1.2.7/libexfat/byteorder.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/byteorder.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Endianness stuff. exFAT uses little-endian byte order. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/cluster.c new/exfat-utils-1.3.0/libexfat/cluster.c --- old/exfat-utils-1.2.7/libexfat/cluster.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/cluster.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/compiler.h new/exfat-utils-1.3.0/libexfat/compiler.h --- old/exfat-utils-1.2.7/libexfat/compiler.h 2017-05-18 09:44:16.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/compiler.h 2018-09-15 06:12:42.000000000 +0200 @@ -4,7 +4,7 @@ showstopper. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/config.h.in new/exfat-utils-1.3.0/libexfat/config.h.in --- old/exfat-utils-1.2.7/libexfat/config.h.in 2017-06-05 09:06:02.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/config.h.in 2018-09-15 07:06:10.000000000 +0200 @@ -21,6 +21,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* Define if block devices are not supported. */ +#undef USE_UBLIO + /* Version number of package */ #undef VERSION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/exfat.h new/exfat-utils-1.3.0/libexfat/exfat.h --- old/exfat-utils-1.2.7/libexfat/exfat.h 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/exfat.h 2018-09-15 07:04:52.000000000 +0200 @@ -4,7 +4,7 @@ implementation. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,10 @@ #ifndef EXFAT_H_INCLUDED #define EXFAT_H_INCLUDED +#ifndef ANDROID +/* Android.bp is used instead of autotools when targeting Android */ #include "config.h" +#endif #include "compiler.h" #include "exfatfs.h" #include <stdio.h> @@ -61,6 +64,9 @@ #define BMAP_CLR(bitmap, index) \ ((bitmap)[BMAP_BLOCK(index)] &= ~BMAP_MASK(index)) +#define EXFAT_REPAIR(hook, ef, ...) \ + (exfat_ask_to_fix(ef) && exfat_fix_ ## hook(ef, __VA_ARGS__)) + /* The size of off_t type must be 64 bits. File systems larger than 2 GB will be corrupted with 32-bit off_t. */ STATIC_ASSERT(sizeof(off_t) == 8); @@ -119,6 +125,7 @@ gid_t gid; int ro; bool noatime; + enum { EXFAT_REPAIR_NO, EXFAT_REPAIR_ASK, EXFAT_REPAIR_YES } repair; }; /* in-core nodes iterator */ @@ -135,6 +142,7 @@ }; extern int exfat_errors; +extern int exfat_errors_fixed; void exfat_bug(const char* format, ...) PRINTF NORETURN; void exfat_error(const char* format, ...) PRINTF; @@ -225,4 +233,12 @@ uint8_t* centisec); void exfat_tzset(void); +bool exfat_ask_to_fix(const struct exfat* ef); +bool exfat_fix_invalid_vbr_checksum(const struct exfat* ef, void* sector, + uint32_t vbr_checksum); +bool exfat_fix_invalid_node_checksum(const struct exfat* ef, + struct exfat_node* node); +bool exfat_fix_unknown_entry(struct exfat* ef, struct exfat_node* dir, + const struct exfat_entry* entry, off_t offset); + #endif /* ifndef EXFAT_H_INCLUDED */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/exfatfs.h new/exfat-utils-1.3.0/libexfat/exfatfs.h --- old/exfat-utils-1.2.7/libexfat/exfatfs.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/exfatfs.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Definitions of structures and constants used in exFAT file system. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/io.c new/exfat-utils-1.3.0/libexfat/io.c --- old/exfat-utils-1.2.7/libexfat/io.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/io.c 2018-09-15 07:04:52.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,14 +35,23 @@ #include <sys/disklabel.h> #include <sys/dkio.h> #include <sys/ioctl.h> -#endif +#elif __linux__ #include <sys/mount.h> +#endif +#ifdef USE_UBLIO +#include <sys/uio.h> +#include <ublio.h> +#endif struct exfat_dev { int fd; enum exfat_mode mode; off_t size; /* in bytes */ +#ifdef USE_UBLIO + off_t pos; + ublio_filehandle_t ufh; +#endif }; static bool is_open(int fd) @@ -79,12 +88,15 @@ { struct exfat_dev* dev; struct stat stbuf; +#ifdef USE_UBLIO + struct ublio_param up; +#endif /* The system allocates file descriptors sequentially. If we have been started with stdin (0), stdout (1) or stderr (2) closed, the system will give us descriptor 0, 1 or 2 later when we open block device, FUSE communication pipe, etc. As a result, functions using stdin, - stdout or stderr will actualy work with a different thing and can + stdout or stderr will actually work with a different thing and can corrupt it. Protect descriptors 0, 1 and 2 from such misuse. */ while (!is_open(STDIN_FILENO) || !is_open(STDOUT_FILENO) @@ -234,6 +246,24 @@ } } +#ifdef USE_UBLIO + memset(&up, 0, sizeof(struct ublio_param)); + up.up_blocksize = 256 * 1024; + up.up_items = 64; + up.up_grace = 32; + up.up_priv = &dev->fd; + + dev->pos = 0; + dev->ufh = ublio_open(&up); + if (dev->ufh == NULL) + { + close(dev->fd); + free(dev); + exfat_error("failed to initialize ublio"); + return NULL; + } +#endif + return dev; } @@ -241,6 +271,13 @@ { int rc = 0; +#ifdef USE_UBLIO + if (ublio_close(dev->ufh) != 0) + { + exfat_error("failed to close ublio"); + rc = -EIO; + } +#endif if (close(dev->fd) != 0) { exfat_error("failed to close device: %s", strerror(errno)); @@ -254,6 +291,13 @@ { int rc = 0; +#ifdef USE_UBLIO + if (ublio_fsync(dev->ufh) != 0) + { + exfat_error("ublio fsync failed"); + rc = -EIO; + } +#endif if (fsync(dev->fd) != 0) { exfat_error("fsync failed: %s", strerror(errno)); @@ -274,29 +318,56 @@ off_t exfat_seek(struct exfat_dev* dev, off_t offset, int whence) { +#ifdef USE_UBLIO + /* XXX SEEK_CUR will be handled incorrectly */ + return dev->pos = lseek(dev->fd, offset, whence); +#else return lseek(dev->fd, offset, whence); +#endif } ssize_t exfat_read(struct exfat_dev* dev, void* buffer, size_t size) { +#ifdef USE_UBLIO + ssize_t result = ublio_pread(dev->ufh, buffer, size, dev->pos); + if (result >= 0) + dev->pos += size; + return result; +#else return read(dev->fd, buffer, size); +#endif } ssize_t exfat_write(struct exfat_dev* dev, const void* buffer, size_t size) { +#ifdef USE_UBLIO + ssize_t result = ublio_pwrite(dev->ufh, buffer, size, dev->pos); + if (result >= 0) + dev->pos += size; + return result; +#else return write(dev->fd, buffer, size); +#endif } ssize_t exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, off_t offset) { +#ifdef USE_UBLIO + return ublio_pread(dev->ufh, buffer, size, offset); +#else return pread(dev->fd, buffer, size, offset); +#endif } ssize_t exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, off_t offset) { +#ifdef USE_UBLIO + return ublio_pwrite(dev->ufh, buffer, size, offset); +#else return pwrite(dev->fd, buffer, size, offset); +#endif } ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/log.c new/exfat-utils-1.3.0/libexfat/log.c --- old/exfat-utils-1.2.7/libexfat/log.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/log.c 2018-09-15 07:04:52.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,11 @@ #include "exfat.h" #include <stdarg.h> +#ifdef __ANDROID__ +#include <android/log.h> +#else #include <syslog.h> +#endif #include <unistd.h> int exfat_errors; @@ -43,8 +47,12 @@ va_end(ap); fputs(".\n", stderr); +#ifdef __ANDROID__ + __android_log_vprint(ANDROID_LOG_FATAL, PACKAGE, format, aq); +#else if (!isatty(STDERR_FILENO)) vsyslog(LOG_CRIT, format, aq); +#endif va_end(aq); abort(); @@ -67,8 +75,12 @@ va_end(ap); fputs(".\n", stderr); +#ifdef __ANDROID__ + __android_log_vprint(ANDROID_LOG_ERROR, PACKAGE, format, aq); +#else if (!isatty(STDERR_FILENO)) vsyslog(LOG_ERR, format, aq); +#endif va_end(aq); } @@ -89,8 +101,12 @@ va_end(ap); fputs(".\n", stderr); +#ifdef __ANDROID__ + __android_log_vprint(ANDROID_LOG_WARN, PACKAGE, format, aq); +#else if (!isatty(STDERR_FILENO)) vsyslog(LOG_WARNING, format, aq); +#endif va_end(aq); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/lookup.c new/exfat-utils-1.3.0/libexfat/lookup.c --- old/exfat-utils-1.2.7/libexfat/lookup.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/lookup.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/mount.c new/exfat-utils-1.3.0/libexfat/mount.c --- old/exfat-utils-1.2.7/libexfat/mount.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/mount.c 2018-09-15 07:04:52.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -103,15 +103,28 @@ ef->gid = get_int_option(options, "gid", 10, getegid()); ef->noatime = match_option(options, "noatime"); + + switch (get_int_option(options, "repair", 10, 0)) + { + case 1: + ef->repair = EXFAT_REPAIR_ASK; + break; + case 2: + ef->repair = EXFAT_REPAIR_YES; + break; + default: + ef->repair = EXFAT_REPAIR_NO; + break; + } } -static bool verify_vbr_checksum(struct exfat_dev* dev, void* sector, - off_t sector_size) +static bool verify_vbr_checksum(const struct exfat* ef, void* sector) { + off_t sector_size = SECTOR_SIZE(*ef->sb); uint32_t vbr_checksum; int i; - if (exfat_pread(dev, sector, sector_size, 0) < 0) + if (exfat_pread(ef->dev, sector, sector_size, 0) < 0) { exfat_error("failed to read boot sector"); return false; @@ -119,7 +132,7 @@ vbr_checksum = exfat_vbr_start_checksum(sector, sector_size); for (i = 1; i < 11; i++) { - if (exfat_pread(dev, sector, sector_size, i * sector_size) < 0) + if (exfat_pread(ef->dev, sector, sector_size, i * sector_size) < 0) { exfat_error("failed to read VBR sector"); return false; @@ -127,7 +140,7 @@ vbr_checksum = exfat_vbr_add_checksum(sector, sector_size, vbr_checksum); } - if (exfat_pread(dev, sector, sector_size, i * sector_size) < 0) + if (exfat_pread(ef->dev, sector, sector_size, i * sector_size) < 0) { exfat_error("failed to read VBR checksum sector"); return false; @@ -137,7 +150,8 @@ { exfat_error("invalid VBR checksum 0x%x (expected 0x%x)", le32_to_cpu(((const le32_t*) sector)[i]), vbr_checksum); - return false; + if (!EXFAT_REPAIR(invalid_vbr_checksum, ef, sector, vbr_checksum)) + return false; } return true; } @@ -252,7 +266,7 @@ return -ENOMEM; } /* use zero_cluster as a temporary buffer for VBR checksum verification */ - if (!verify_vbr_checksum(ef->dev, ef->zero_cluster, SECTOR_SIZE(*ef->sb))) + if (!verify_vbr_checksum(ef, ef->zero_cluster)) { exfat_free(ef); return -EIO; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/node.c new/exfat-utils-1.3.0/libexfat/node.c --- old/exfat-utils-1.2.7/libexfat/node.c 2017-05-30 17:18:46.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/node.c 2018-09-15 07:04:52.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -223,7 +223,8 @@ exfat_get_name(node, buffer); exfat_error("'%s' has invalid checksum (%#hx != %#hx)", buffer, le16_to_cpu(actual_checksum), le16_to_cpu(meta1->checksum)); - ret = false; + if (!EXFAT_REPAIR(invalid_node_checksum, ef, node)) + ret = false; } /* @@ -516,7 +517,8 @@ break; /* deleted entry, ignore it */ exfat_error("unknown entry type %#hhx", entry.type); - return -EIO; + if (!EXFAT_REPAIR(unknown_entry, ef, parent, &entry, *offset)) + return -EIO; } *offset += sizeof(entry); } @@ -855,7 +857,8 @@ free(dmap); return -EIO; case -EINVAL: - /* slot is occupied, continue searching */ + /* slot at (i-n) is occupied, go back and check (i-n+1) */ + i -= contiguous - 1; contiguous = 0; break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/platform.h new/exfat-utils-1.3.0/libexfat/platform.h --- old/exfat-utils-1.2.7/libexfat/platform.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/platform.h 2018-09-15 07:04:52.000000000 +0200 @@ -4,7 +4,7 @@ same kernel can use different libc implementations. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,7 +46,7 @@ #define EXFAT_LITTLE_ENDIAN LITTLE_ENDIAN #define EXFAT_BIG_ENDIAN BIG_ENDIAN -#elif defined(__FreeBSD__) || defined(__DragonFlyBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) #include <sys/endian.h> #define exfat_bswap16(x) bswap16(x) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/repair.c new/exfat-utils-1.3.0/libexfat/repair.c --- old/exfat-utils-1.2.7/libexfat/repair.c 1970-01-01 01:00:00.000000000 +0100 +++ new/exfat-utils-1.3.0/libexfat/repair.c 2018-09-15 07:04:52.000000000 +0200 @@ -0,0 +1,102 @@ +/* + repair.c (09.03.17) + exFAT file system implementation library. + + Free exFAT implementation. + Copyright (C) 2010-2018 Andrew Nayenko + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "exfat.h" +#include <strings.h> + +int exfat_errors_fixed; + +bool exfat_ask_to_fix(const struct exfat* ef) +{ + const char* question = "Fix (Y/N)?"; + char answer[8]; + bool yeah, nope; + + switch (ef->repair) + { + case EXFAT_REPAIR_NO: + return false; + case EXFAT_REPAIR_YES: + printf("%s %s", question, "Y\n"); + return true; + case EXFAT_REPAIR_ASK: + do + { + printf("%s ", question); + fflush(stdout); + if (fgets(answer, sizeof(answer), stdin)) + { + yeah = strcasecmp(answer, "Y\n") == 0; + nope = strcasecmp(answer, "N\n") == 0; + } + else + { + yeah = false; + nope = true; + } + } + while (!yeah && !nope); + return yeah; + } + exfat_bug("invalid repair option value: %d", ef->repair); +} + +bool exfat_fix_invalid_vbr_checksum(const struct exfat* ef, void* sector, + uint32_t vbr_checksum) +{ + size_t i; + off_t sector_size = SECTOR_SIZE(*ef->sb); + + for (i = 0; i < sector_size / sizeof(vbr_checksum); i++) + ((le32_t*) sector)[i] = cpu_to_le32(vbr_checksum); + if (exfat_pwrite(ef->dev, sector, sector_size, 11 * sector_size) < 0) + { + exfat_error("failed to write correct VBR checksum"); + return false; + } + exfat_errors_fixed++; + return true; +} + +bool exfat_fix_invalid_node_checksum(const struct exfat* ef, + struct exfat_node* node) +{ + /* checksum will be rewritten by exfat_flush_node() */ + node->is_dirty = true; + + exfat_errors_fixed++; + return true; +} + +bool exfat_fix_unknown_entry(struct exfat* ef, struct exfat_node* dir, + const struct exfat_entry* entry, off_t offset) +{ + struct exfat_entry deleted = *entry; + + deleted.type &= ~EXFAT_ENTRY_VALID; + if (exfat_generic_pwrite(ef, dir, &deleted, sizeof(struct exfat_entry), + offset) != sizeof(struct exfat_entry)) + return false; + + exfat_errors_fixed++; + return true; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/time.c new/exfat-utils-1.3.0/libexfat/time.c --- old/exfat-utils-1.2.7/libexfat/time.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/time.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/utf.c new/exfat-utils-1.3.0/libexfat/utf.c --- old/exfat-utils-1.2.7/libexfat/utf.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/utf.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/libexfat/utils.c new/exfat-utils-1.3.0/libexfat/utils.c --- old/exfat-utils-1.2.7/libexfat/utils.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/libexfat/utils.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ exFAT file system implementation library. Free exFAT implementation. - Copyright (C) 2010-2017 Andrew Nayenko + Copyright (C) 2010-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/Makefile.am new/exfat-utils-1.3.0/mkfs/Makefile.am --- old/exfat-utils-1.2.7/mkfs/Makefile.am 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/Makefile.am 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ # Automake source. # # Free exFAT implementation. -# Copyright (C) 2011-2017 Andrew Nayenko +# Copyright (C) 2011-2018 Andrew Nayenko # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/cbm.c new/exfat-utils-1.3.0/mkfs/cbm.c --- old/exfat-utils-1.2.7/mkfs/cbm.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/cbm.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Clusters Bitmap creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/cbm.h new/exfat-utils-1.3.0/mkfs/cbm.h --- old/exfat-utils-1.2.7/mkfs/cbm.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/cbm.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Clusters Bitmap creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/fat.c new/exfat-utils-1.3.0/mkfs/fat.c --- old/exfat-utils-1.2.7/mkfs/fat.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/fat.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ File Allocation Table creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/fat.h new/exfat-utils-1.3.0/mkfs/fat.h --- old/exfat-utils-1.2.7/mkfs/fat.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/fat.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ File Allocation Table creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/main.c new/exfat-utils-1.3.0/mkfs/main.c --- old/exfat-utils-1.2.7/mkfs/main.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/main.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Creates exFAT file system. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -228,7 +228,7 @@ } break; case 'V': - puts("Copyright (C) 2011-2017 Andrew Nayenko"); + puts("Copyright (C) 2011-2018 Andrew Nayenko"); return 0; default: usage(argv[0]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/mkexfat.c new/exfat-utils-1.3.0/mkfs/mkexfat.c --- old/exfat-utils-1.2.7/mkfs/mkexfat.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/mkexfat.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ FS creation engine. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/mkexfat.h new/exfat-utils-1.3.0/mkfs/mkexfat.h --- old/exfat-utils-1.2.7/mkfs/mkexfat.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/mkexfat.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ FS creation engine. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/mkexfatfs.8 new/exfat-utils-1.3.0/mkfs/mkexfatfs.8 --- old/exfat-utils-1.2.7/mkfs/mkexfatfs.8 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/mkexfatfs.8 2018-09-15 07:04:52.000000000 +0200 @@ -1,6 +1,6 @@ -.\" Copyright (C) 2011-2016 Andrew Nayenko +.\" Copyright (C) 2011-2018 Andrew Nayenko .\" -.TH MKEXFATFS 8 "January 2011" +.TH MKEXFATFS 8 "January 2014" .SH NAME .B mkexfatfs \- create an exFAT file system diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/rootdir.c new/exfat-utils-1.3.0/mkfs/rootdir.c --- old/exfat-utils-1.2.7/mkfs/rootdir.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/rootdir.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Root directory creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/rootdir.h new/exfat-utils-1.3.0/mkfs/rootdir.h --- old/exfat-utils-1.2.7/mkfs/rootdir.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/rootdir.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Root directory creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/uct.c new/exfat-utils-1.3.0/mkfs/uct.c --- old/exfat-utils-1.2.7/mkfs/uct.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/uct.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Upper Case Table creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/uct.h new/exfat-utils-1.3.0/mkfs/uct.h --- old/exfat-utils-1.2.7/mkfs/uct.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/uct.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Upper Case Table creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/uctc.c new/exfat-utils-1.3.0/mkfs/uctc.c --- old/exfat-utils-1.2.7/mkfs/uctc.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/uctc.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Upper Case Table contents. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/uctc.h new/exfat-utils-1.3.0/mkfs/uctc.h --- old/exfat-utils-1.2.7/mkfs/uctc.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/uctc.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Upper Case Table declaration. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/vbr.c new/exfat-utils-1.3.0/mkfs/vbr.c --- old/exfat-utils-1.2.7/mkfs/vbr.c 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/vbr.c 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Volume Boot Record creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/exfat-utils-1.2.7/mkfs/vbr.h new/exfat-utils-1.3.0/mkfs/vbr.h --- old/exfat-utils-1.2.7/mkfs/vbr.h 2017-05-02 19:28:31.000000000 +0200 +++ new/exfat-utils-1.3.0/mkfs/vbr.h 2018-09-15 06:12:42.000000000 +0200 @@ -3,7 +3,7 @@ Volume Boot Record creation code. Free exFAT implementation. - Copyright (C) 2011-2017 Andrew Nayenko + Copyright (C) 2011-2018 Andrew Nayenko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by