Merge tag 'upstream/1.2.4'
authorSven Hoexter <sven@timegate.de>
Sat, 25 Jun 2016 12:12:44 +0000 (14:12 +0200)
committerSven Hoexter <sven@timegate.de>
Sat, 25 Jun 2016 12:12:44 +0000 (14:12 +0200)
Upstream version 1.2.4

52 files changed:
ChangeLog
Makefile.am
Makefile.in
README
configure
configure.ac
dump/Makefile.am
dump/Makefile.in
dump/dumpexfat.8
dump/main.c
fsck/Makefile.am
fsck/Makefile.in
fsck/exfatfsck.8
fsck/main.c
label/Makefile.am
label/Makefile.in
label/exfatlabel.8
label/main.c
libexfat/Makefile.am
libexfat/Makefile.in
libexfat/byteorder.h
libexfat/cluster.c
libexfat/compiler.h
libexfat/exfat.h
libexfat/exfatfs.h
libexfat/io.c
libexfat/log.c
libexfat/lookup.c
libexfat/mount.c
libexfat/node.c
libexfat/platform.h
libexfat/time.c
libexfat/utf.c
libexfat/utils.c
mkfs/Makefile.am
mkfs/Makefile.in
mkfs/cbm.c
mkfs/cbm.h
mkfs/fat.c
mkfs/fat.h
mkfs/main.c
mkfs/mkexfat.c
mkfs/mkexfat.h
mkfs/mkexfatfs.8
mkfs/rootdir.c
mkfs/rootdir.h
mkfs/uct.c
mkfs/uct.h
mkfs/uctc.c
mkfs/uctc.h
mkfs/vbr.c
mkfs/vbr.h

index 05cd191..7826825 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1.2.4 (2016-06-03)
+
+* Fixed wrong files names hashes when upper case table is compressed.
+* Man pages are now installed by default.
+* Commas and backslashes in device names are now escaped.
+
 1.2.3 (2015-12-19)
 
 * Fixed clusters loss when file renaming replaces target.
index 54d2ae2..1fe87ba 100644 (file)
@@ -3,7 +3,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2010-2015  Andrew Nayenko
+#      Copyright (C) 2010-2016  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
index 0ccad1f..06190f8 100644 (file)
@@ -19,7 +19,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2010-2015  Andrew Nayenko
+#      Copyright (C) 2010-2016  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 --git a/README b/README
index 8f2fe85..500d722 100644 (file)
--- a/README
+++ b/README
@@ -7,7 +7,6 @@ Supported operating systems:
 
 * GNU/Linux
 * Mac OS X 10.5 or later
-* FreeBSD
 * OpenBSD
 
 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.
@@ -15,40 +14,56 @@ Most GNU/Linux distributions already have fuse-exfat and exfat-utils in their re
 Compiling
 ---------
 
-To build this project under GNU/Linux you need to install the following packages:
+To build this project on GNU/Linux you need to install the following packages:
 
-* pkg-config
+* [pkg-config][7]
 * fuse-devel (or libfuse-dev)
-* gcc
-* make
+* [gcc][8]
+* [make][9]
+
+On Mac OS X:
+
+* pkg-config
+* [OSXFUSE][10]
+* [Xcode][11] (legacy versions include autotools but their versions are too old)
+
+On OpenBSD:
+
 
 Get the source code, change directory and compile:
 
-    ./configure --prefix=/usr
+    ./configure
     make
 
-Then install driver and utilities:
+Then install driver and utilities (from root):
 
-    sudo make install
+    make install
 
-You can remove them using this command:
+You can remove them using this command (from root):
 
-    sudo make uninstall
+    make uninstall
 
 Mounting
 --------
 
-Modern GNU/Linux distributions will mount exFAT volumes automatically—util-linux-ng 2.18 (was renamed to util-linux in 2.19) is required for this. Anyway, you can mount manually (you will need root privileges):
+Modern GNU/Linux distributions (with [util-linux][12] 2.18 or later) will mount exFAT volumes automatically. Anyway, you can mount manually (from root):
 
-    sudo mount.exfat-fuse /dev/sdXn /mnt/exfat
+    mount.exfat-fuse /dev/spec /mnt/exfat
 
-where /dev/sdXn is the partition special file, /mnt/exfat is a mountpoint.
+where /dev/spec is the [device file][13], /mnt/exfat is a mountpoint.
 
 Feedback
 --------
 
 If you have any questions, issues, suggestions, bug reports, etc. please create an [issue][3]. Pull requests are also welcome!
 
-[1]: http://en.wikipedia.org/wiki/ExFAT
-[2]: http://en.wikipedia.org/wiki/Filesystem_in_Userspace
+[1]: https://en.wikipedia.org/wiki/ExFAT
+[2]: https://en.wikipedia.org/wiki/Filesystem_in_Userspace
 [3]: https://github.com/relan/exfat/issues
+[7]: http://www.freedesktop.org/wiki/Software/pkg-config/
+[8]: https://gcc.gnu.org/
+[9]: https://www.gnu.org/software/make/
+[10]: https://osxfuse.github.io/
+[11]: https://en.wikipedia.org/wiki/Xcode
+[12]: https://www.kernel.org/pub/linux/utils/util-linux/
+[13]: https://en.wikipedia.org/wiki/Device_file
index f605681..3c3b3ab 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Free exFAT implementation 1.2.3.
+# Generated by GNU Autoconf 2.69 for Free exFAT implementation 1.2.4.
 #
 # Report bugs to <relan@users.noreply.github.com>.
 #
@@ -579,8 +579,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='Free exFAT implementation'
 PACKAGE_TARNAME='exfat-utils'
-PACKAGE_VERSION='1.2.3'
-PACKAGE_STRING='Free exFAT implementation 1.2.3'
+PACKAGE_VERSION='1.2.4'
+PACKAGE_STRING='Free exFAT implementation 1.2.4'
 PACKAGE_BUGREPORT='relan@users.noreply.github.com'
 PACKAGE_URL='https://github.com/relan/exfat'
 
@@ -1228,7 +1228,7 @@ if test "$ac_init_help" = "long"; then
   # 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 Free exFAT implementation 1.2.3 to adapt to many kinds of systems.
+\`configure' configures Free exFAT implementation 1.2.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1294,7 +1294,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Free exFAT implementation 1.2.3:";;
+     short | recursive ) echo "Configuration of Free exFAT implementation 1.2.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1386,7 +1386,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Free exFAT implementation configure 1.2.3
+Free exFAT implementation configure 1.2.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1441,7 +1441,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Free exFAT implementation $as_me 1.2.3, which was
+It was created by Free exFAT implementation $as_me 1.2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2304,7 +2304,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='exfat-utils'
- VERSION='1.2.3'
+ VERSION='1.2.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4611,7 +4611,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Free exFAT implementation $as_me 1.2.3, which was
+This file was extended by Free exFAT implementation $as_me 1.2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4678,7 +4678,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Free exFAT implementation config.status 1.2.3
+Free exFAT implementation config.status 1.2.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
index a1dcd87..20160ee 100644 (file)
@@ -3,7 +3,7 @@
 #      Autoconf source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2010-2015  Andrew Nayenko
+#      Copyright (C) 2010-2016  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
 #
 
 AC_INIT([Free exFAT implementation],
-       [1.2.3],
+       [1.2.4],
        [relan@users.noreply.github.com],
        [exfat-utils],
        [https://github.com/relan/exfat])
-AM_INIT_AUTOMAKE([1.11.2 -Wall -Werror foreign subdir-objects no-installman])
+AM_INIT_AUTOMAKE([1.11.2 -Wall -Werror foreign subdir-objects])
 AC_PROG_CC
 AC_PROG_CC_C99
 AC_PROG_RANLIB
index 340ac0c..f9a79dd 100644 (file)
@@ -3,7 +3,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
index d92facf..b85985c 100644 (file)
@@ -19,7 +19,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
@@ -119,7 +119,7 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/libexfat/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"
 PROGRAMS = $(sbin_PROGRAMS)
 am_dumpexfat_OBJECTS = dumpexfat-main.$(OBJEXT)
 dumpexfat_OBJECTS = $(am_dumpexfat_OBJECTS)
@@ -423,7 +423,6 @@ dumpexfat-main.obj: main.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='main.c' object='dumpexfat-main.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dumpexfat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dumpexfat-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
-
 install-man8: $(dist_man8_MANS)
        @$(NORMAL_INSTALL)
        @list1='$(dist_man8_MANS)'; \
@@ -550,9 +549,9 @@ distdir: $(DISTFILES)
        done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(PROGRAMS) $(MANS)
 installdirs:
-       for dir in "$(DESTDIR)$(sbindir)"; do \
+       for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -607,7 +606,7 @@ info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-man
 
 install-dvi: install-dvi-am
 
@@ -652,7 +651,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-sbinPROGRAMS
+uninstall-am: uninstall-man uninstall-sbinPROGRAMS
 
 uninstall-man: uninstall-man8
 
index 5cf3995..31c7dca 100644 (file)
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2011-2015  Andrew Nayenko
+.\" Copyright (C) 2011-2016  Andrew Nayenko
 .\"
 .TH DUMPEXFAT 8 "February 2011"
 .SH NAME
index b6e0409..75f7ff1 100644 (file)
@@ -3,7 +3,7 @@
        Prints detailed information about exFAT volume.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
@@ -166,7 +166,7 @@ int main(int argc, char* argv[])
                        used_sectors = true;
                        break;
                case 'V':
-                       puts("Copyright (C) 2011-2015  Andrew Nayenko");
+                       puts("Copyright (C) 2011-2016  Andrew Nayenko");
                        return 0;
                default:
                        usage(argv[0]);
index 5901ae2..dbb8121 100644 (file)
@@ -3,7 +3,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
index 970e944..e45c02f 100644 (file)
@@ -19,7 +19,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
@@ -119,7 +119,7 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/libexfat/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"
 PROGRAMS = $(sbin_PROGRAMS)
 am_exfatfsck_OBJECTS = exfatfsck-main.$(OBJEXT)
 exfatfsck_OBJECTS = $(am_exfatfsck_OBJECTS)
@@ -423,7 +423,6 @@ exfatfsck-main.obj: main.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='main.c' object='exfatfsck-main.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exfatfsck_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o exfatfsck-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
-
 install-man8: $(dist_man8_MANS)
        @$(NORMAL_INSTALL)
        @list1='$(dist_man8_MANS)'; \
@@ -550,9 +549,9 @@ distdir: $(DISTFILES)
        done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(PROGRAMS) $(MANS)
 installdirs:
-       for dir in "$(DESTDIR)$(sbindir)"; do \
+       for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -607,7 +606,7 @@ info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-man
 
 install-dvi: install-dvi-am
 
@@ -653,7 +652,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-sbinPROGRAMS
+uninstall-am: uninstall-man uninstall-sbinPROGRAMS
        @$(NORMAL_INSTALL)
        $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
 uninstall-man: uninstall-man8
index e950488..b0a788a 100644 (file)
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2011-2015  Andrew Nayenko
+.\" Copyright (C) 2011-2016  Andrew Nayenko
 .\"
 .TH EXFATFSCK 8 "February 2011"
 .SH NAME
index ded76b2..a72d74c 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system checker.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
@@ -147,7 +147,7 @@ int main(int argc, char* argv[])
                switch (opt)
                {
                case 'V':
-                       puts("Copyright (C) 2011-2015  Andrew Nayenko");
+                       puts("Copyright (C) 2011-2016  Andrew Nayenko");
                        return 0;
                default:
                        usage(argv[0]);
index a2bf9c8..c610f2f 100644 (file)
@@ -3,7 +3,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
index 4a3c124..df14387 100644 (file)
@@ -19,7 +19,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
@@ -119,7 +119,7 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/libexfat/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"
 PROGRAMS = $(sbin_PROGRAMS)
 am_exfatlabel_OBJECTS = exfatlabel-main.$(OBJEXT)
 exfatlabel_OBJECTS = $(am_exfatlabel_OBJECTS)
@@ -423,7 +423,6 @@ exfatlabel-main.obj: main.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='main.c' object='exfatlabel-main.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exfatlabel_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o exfatlabel-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
-
 install-man8: $(dist_man8_MANS)
        @$(NORMAL_INSTALL)
        @list1='$(dist_man8_MANS)'; \
@@ -550,9 +549,9 @@ distdir: $(DISTFILES)
        done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(PROGRAMS) $(MANS)
 installdirs:
-       for dir in "$(DESTDIR)$(sbindir)"; do \
+       for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -607,7 +606,7 @@ info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-man
 
 install-dvi: install-dvi-am
 
@@ -652,7 +651,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-sbinPROGRAMS
+uninstall-am: uninstall-man uninstall-sbinPROGRAMS
 
 uninstall-man: uninstall-man8
 
index bff6e79..429f9f9 100644 (file)
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2011-2015  Andrew Nayenko
+.\" Copyright (C) 2011-2016  Andrew Nayenko
 .\"
 .TH EXFATLABEL 8 "February 2011"
 .SH NAME
index b219d4e..a083f30 100644 (file)
@@ -3,7 +3,7 @@
        Prints or changes exFAT volume label.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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 @@ int main(int argc, char* argv[])
                if (strcmp(*pp, "-V") == 0)
                {
                        printf("exfatlabel %s\n", VERSION);
-                       puts("Copyright (C) 2011-2015  Andrew Nayenko");
+                       puts("Copyright (C) 2011-2016  Andrew Nayenko");
                        return 0;
                }
 
index f9067e9..102d89d 100644 (file)
@@ -3,7 +3,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2010-2015  Andrew Nayenko
+#      Copyright (C) 2010-2016  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
index 9d8a0c1..164e661 100644 (file)
@@ -19,7 +19,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2010-2015  Andrew Nayenko
+#      Copyright (C) 2010-2016  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
index 472cb48..e417ad6 100644 (file)
@@ -3,7 +3,7 @@
        Endianness stuff. exFAT uses little-endian byte order.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index fc3657b..13bc6ce 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index 1a4742e..b590d01 100644 (file)
@@ -4,7 +4,7 @@
        showstopper.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index 97d3692..75cb6e6 100644 (file)
@@ -4,7 +4,7 @@
        implementation.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
@@ -97,8 +97,7 @@ struct exfat
 {
        struct exfat_dev* dev;
        struct exfat_super_block* sb;
-       le16_t* upcase;
-       size_t upcase_chars;
+       uint16_t* upcase;
        struct exfat_node* root;
        struct
        {
index eca2cac..c155312 100644 (file)
@@ -3,7 +3,7 @@
        Definitions of structures and constants used in exFAT file system.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
@@ -99,6 +99,8 @@ struct exfat_entry_bitmap                     /* allocated clusters bitmap */
 PACKED;
 STATIC_ASSERT(sizeof(struct exfat_entry_bitmap) == 32);
 
+#define EXFAT_UPCASE_CHARS 0x10000
+
 struct exfat_entry_upcase                      /* upper case translation table */
 {
        uint8_t type;                                   /* EXFAT_ENTRY_UPCASE */
index 3d7aaad..60f28e2 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
 #include <sys/ioctl.h>
 #endif
 #include <sys/mount.h>
-#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 int open_ro(const char* spec)
@@ -82,9 +74,6 @@ struct exfat_dev* exfat_open(const char* spec, enum exfat_mode mode)
 {
        struct exfat_dev* dev;
        struct stat stbuf;
-#ifdef USE_UBLIO
-       struct ublio_param up;
-#endif
 
        dev = malloc(sizeof(struct exfat_dev));
        if (dev == NULL)
@@ -222,24 +211,6 @@ struct exfat_dev* exfat_open(const char* spec, enum exfat_mode mode)
                }
        }
 
-#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;
 }
 
@@ -247,13 +218,6 @@ int exfat_close(struct exfat_dev* dev)
 {
        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));
@@ -267,13 +231,6 @@ int exfat_fsync(struct exfat_dev* dev)
 {
        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));
@@ -294,56 +251,29 @@ off_t exfat_get_size(const struct exfat_dev* dev)
 
 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,
index fd8982b..e37b0d8 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index d5bb389..30b6410 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
@@ -61,10 +61,7 @@ struct exfat_node* exfat_readdir(struct exfat* ef, struct exfat_iterator* it)
 
 static int compare_char(struct exfat* ef, uint16_t a, uint16_t b)
 {
-       if (a >= ef->upcase_chars || b >= ef->upcase_chars)
-               return (int) a - (int) b;
-
-       return (int) le16_to_cpu(ef->upcase[a]) - (int) le16_to_cpu(ef->upcase[b]);
+       return (int) ef->upcase[a] - (int) ef->upcase[b];
 }
 
 static int compare_name(struct exfat* ef, const le16_t* a, const le16_t* b)
index 0d6ce9e..b1ce654 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
@@ -376,5 +376,4 @@ void exfat_unmount(struct exfat* ef)
        ef->sb = NULL;
        free(ef->upcase);
        ef->upcase = NULL;
-       ef->upcase_chars = 0;
 }
index 4dd4dc6..fa04e25 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
@@ -227,6 +227,26 @@ static bool check_node(const struct exfat_node* node, uint16_t actual_checksum,
        return true;
 }
 
+static void decompress_upcase(uint16_t* output, const le16_t* source,
+               size_t size)
+{
+       size_t si;
+       size_t oi;
+
+       for (oi = 0; oi < EXFAT_UPCASE_CHARS; oi++)
+               output[oi] = oi;
+
+       for (si = 0, oi = 0; si < size && oi < EXFAT_UPCASE_CHARS; si++)
+       {
+               uint16_t ch = le16_to_cpu(source[si]);
+
+               if (ch == 0xffff && si + 1 < size)      /* indicates a run */
+                       oi += le16_to_cpu(source[++si]);
+               else
+                       output[oi++] = ch;
+       }
+}
+
 /*
  * Reads one entry in directory at position pointed by iterator and fills
  * node structure.
@@ -247,6 +267,8 @@ static int readdir(struct exfat* ef, const struct exfat_node* parent,
        uint16_t reference_checksum = 0;
        uint16_t actual_checksum = 0;
        uint64_t valid_size = 0;
+       uint64_t upcase_size = 0;
+       le16_t* upcase_comp = NULL;
 
        *node = NULL;
 
@@ -371,33 +393,48 @@ static int readdir(struct exfat* ef, const struct exfat_node* parent,
                                                le32_to_cpu(upcase->start_cluster));
                                goto error;
                        }
-                       if (le64_to_cpu(upcase->size) == 0 ||
-                               le64_to_cpu(upcase->size) > 0xffff * sizeof(uint16_t) ||
-                               le64_to_cpu(upcase->size) % sizeof(uint16_t) != 0)
+                       upcase_size = le64_to_cpu(upcase->size);
+                       if (upcase_size == 0 ||
+                               upcase_size > EXFAT_UPCASE_CHARS * sizeof(uint16_t) ||
+                               upcase_size % sizeof(uint16_t) != 0)
                        {
                                exfat_error("bad upcase table size (%"PRIu64" bytes)",
-                                               le64_to_cpu(upcase->size));
+                                               upcase_size);
                                goto error;
                        }
-                       ef->upcase = malloc(le64_to_cpu(upcase->size));
-                       if (ef->upcase == NULL)
+                       upcase_comp = malloc(upcase_size);
+                       if (upcase_comp == NULL)
                        {
                                exfat_error("failed to allocate upcase table (%"PRIu64" bytes)",
-                                               le64_to_cpu(upcase->size));
+                                               upcase_size);
                                rc = -ENOMEM;
                                goto error;
                        }
-                       ef->upcase_chars = le64_to_cpu(upcase->size) / sizeof(le16_t);
 
-                       if (exfat_pread(ef->dev, ef->upcase, le64_to_cpu(upcase->size),
+                       /* read compressed upcase table */
+                       if (exfat_pread(ef->dev, upcase_comp, upcase_size,
                                        exfat_c2o(ef, le32_to_cpu(upcase->start_cluster))) < 0)
                        {
+                               free(upcase_comp);
                                exfat_error("failed to read upper case table "
                                                "(%"PRIu64" bytes starting at cluster %#x)",
-                                               le64_to_cpu(upcase->size),
+                                               upcase_size,
                                                le32_to_cpu(upcase->start_cluster));
                                goto error;
                        }
+
+                       /* decompress upcase table */
+                       ef->upcase = calloc(EXFAT_UPCASE_CHARS, sizeof(uint16_t));
+                       if (ef->upcase == NULL)
+                       {
+                               free(upcase_comp);
+                               exfat_error("failed to allocate decompressed upcase table");
+                               rc = -ENOMEM;
+                               goto error;
+                       }
+                       decompress_upcase(ef->upcase, upcase_comp,
+                                       upcase_size / sizeof(uint16_t));
+                       free(upcase_comp);
                        break;
 
                case EXFAT_ENTRY_BITMAP:
index 99fe507..4c5a0df 100644 (file)
@@ -4,7 +4,7 @@
        same kernel can use different libc implementations.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index 45c4aff..7d2becd 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index 6f14882..98ae52d 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
index 388f360..0d3b809 100644 (file)
@@ -3,7 +3,7 @@
        exFAT file system implementation library.
 
        Free exFAT implementation.
-       Copyright (C) 2010-2015  Andrew Nayenko
+       Copyright (C) 2010-2016  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
@@ -124,8 +124,7 @@ le16_t exfat_calc_name_hash(const struct exfat* ef, const le16_t* name)
                uint16_t c = le16_to_cpu(name[i]);
 
                /* convert to upper case */
-               if (c < ef->upcase_chars)
-                       c = le16_to_cpu(ef->upcase[c]);
+               c = ef->upcase[c];
 
                hash = ((hash << 15) | (hash >> 1)) + (c & 0xff);
                hash = ((hash << 15) | (hash >> 1)) + (c >> 8);
index ea97a1f..b411a96 100644 (file)
@@ -3,7 +3,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
index 64864a4..0e4840f 100644 (file)
@@ -19,7 +19,7 @@
 #      Automake source.
 #
 #      Free exFAT implementation.
-#      Copyright (C) 2011-2015  Andrew Nayenko
+#      Copyright (C) 2011-2016  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
@@ -119,7 +119,7 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/libexfat/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"
 PROGRAMS = $(sbin_PROGRAMS)
 am_mkexfatfs_OBJECTS = mkexfatfs-cbm.$(OBJEXT) mkexfatfs-fat.$(OBJEXT) \
        mkexfatfs-main.$(OBJEXT) mkexfatfs-mkexfat.$(OBJEXT) \
@@ -547,7 +547,6 @@ mkexfatfs-vbr.obj: vbr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vbr.c' object='mkexfatfs-vbr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mkexfatfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mkexfatfs-vbr.obj `if test -f 'vbr.c'; then $(CYGPATH_W) 'vbr.c'; else $(CYGPATH_W) '$(srcdir)/vbr.c'; fi`
-
 install-man8: $(dist_man8_MANS)
        @$(NORMAL_INSTALL)
        @list1='$(dist_man8_MANS)'; \
@@ -674,9 +673,9 @@ distdir: $(DISTFILES)
        done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(PROGRAMS) $(MANS)
 installdirs:
-       for dir in "$(DESTDIR)$(sbindir)"; do \
+       for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -731,7 +730,7 @@ info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-man
 
 install-dvi: install-dvi-am
 
@@ -777,7 +776,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-sbinPROGRAMS
+uninstall-am: uninstall-man uninstall-sbinPROGRAMS
        @$(NORMAL_INSTALL)
        $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
 uninstall-man: uninstall-man8
index 0250571..57e5784 100644 (file)
@@ -3,7 +3,7 @@
        Clusters Bitmap creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 414b0d7..cc5a7db 100644 (file)
@@ -3,7 +3,7 @@
        Clusters Bitmap creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index c70dc86..0ca3f3a 100644 (file)
@@ -3,7 +3,7 @@
        File Allocation Table creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 9370cf3..fce809c 100644 (file)
@@ -3,7 +3,7 @@
        File Allocation Table creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 2ee6da6..a164eeb 100644 (file)
@@ -3,7 +3,7 @@
        Creates exFAT file system.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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 @@ int main(int argc, char* argv[])
                        }
                        break;
                case 'V':
-                       puts("Copyright (C) 2011-2015  Andrew Nayenko");
+                       puts("Copyright (C) 2011-2016  Andrew Nayenko");
                        return 0;
                default:
                        usage(argv[0]);
index 4b7a344..07a48d2 100644 (file)
@@ -3,7 +3,7 @@
        FS creation engine.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 8d2b5e3..b15922c 100644 (file)
@@ -3,7 +3,7 @@
        FS creation engine.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index e339468..74e0bfe 100644 (file)
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2011-2015  Andrew Nayenko
+.\" Copyright (C) 2011-2016  Andrew Nayenko
 .\"
 .TH MKEXFATFS 8 "January 2011"
 .SH NAME
index 84fa31f..8341039 100644 (file)
@@ -3,7 +3,7 @@
        Root directory creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 56db5b0..26be1d6 100644 (file)
@@ -3,7 +3,7 @@
        Root directory creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index d1deb2d..7d708fb 100644 (file)
@@ -3,7 +3,7 @@
        Upper Case Table creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 3a08db9..731f0cb 100644 (file)
@@ -3,7 +3,7 @@
        Upper Case Table creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 5849f37..08da19c 100644 (file)
@@ -3,7 +3,7 @@
        Upper Case Table contents.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 3e200f1..7ca31e7 100644 (file)
@@ -3,7 +3,7 @@
        Upper Case Table declaration.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 702aa6d..481fd63 100644 (file)
@@ -3,7 +3,7 @@
        Volume Boot Record creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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
index 74e60e5..9cc038f 100644 (file)
@@ -3,7 +3,7 @@
        Volume Boot Record creation code.
 
        Free exFAT implementation.
-       Copyright (C) 2011-2015  Andrew Nayenko
+       Copyright (C) 2011-2016  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