diff -Nru wimlib-1.13.2/configure wimlib-1.13.3/configure --- wimlib-1.13.2/configure 2020-05-24 18:23:42.000000000 +0000 +++ wimlib-1.13.3/configure 2020-10-27 03:54:51.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wimlib 1.13.2. +# Generated by GNU Autoconf 2.69 for wimlib 1.13.3. # -# Report bugs to . +# Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -275,10 +275,10 @@ $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: ebiggers3@gmail.com about your system, including any -$0: error possibly output before this message. Then install -$0: a modern shell, or manually run the script under such a -$0: shell if you do have one." +$0: https://wimlib.net/forums/ about your system, including +$0: any error possibly output before this message. Then +$0: install a modern shell, or manually run the script +$0: under such a shell if you do have one." fi exit 1 fi @@ -590,9 +590,9 @@ # Identity of this package. PACKAGE_NAME='wimlib' PACKAGE_TARNAME='wimlib' -PACKAGE_VERSION='1.13.2' -PACKAGE_STRING='wimlib 1.13.2' -PACKAGE_BUGREPORT='ebiggers3@gmail.com' +PACKAGE_VERSION='1.13.3' +PACKAGE_STRING='wimlib 1.13.3' +PACKAGE_BUGREPORT='https://wimlib.net/forums/' PACKAGE_URL='' ac_unique_file="src/wim.c" @@ -1369,7 +1369,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wimlib 1.13.2 to adapt to many kinds of systems. +\`configure' configures wimlib 1.13.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1439,7 +1439,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wimlib 1.13.2:";; + short | recursive ) echo "Configuration of wimlib 1.13.3:";; esac cat <<\_ACEOF @@ -1524,7 +1524,7 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to . _ACEOF ac_status=$? fi @@ -1587,7 +1587,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wimlib configure 1.13.2 +wimlib configure 1.13.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1932,9 +1932,9 @@ $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ---------------------------------- ## -## Report this to ebiggers3@gmail.com ## -## ---------------------------------- ##" +( $as_echo "## ----------------------------------------- ## +## Report this to https://wimlib.net/forums/ ## +## ----------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac @@ -2059,7 +2059,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wimlib $as_me 1.13.2, which was +It was created by wimlib $as_me 1.13.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2924,7 +2924,7 @@ # Define the identity of the package. PACKAGE='wimlib' - VERSION='1.13.2' + VERSION='1.13.3' cat >>confdefs.h <<_ACEOF @@ -15365,7 +15365,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wimlib $as_me 1.13.2, which was +This file was extended by wimlib $as_me 1.13.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15425,13 +15425,13 @@ Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wimlib config.status 1.13.2 +wimlib config.status 1.13.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru wimlib-1.13.2/configure.ac wimlib-1.13.3/configure.ac --- wimlib-1.13.2/configure.ac 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/configure.ac 2020-10-27 03:49:10.000000000 +0000 @@ -1,6 +1,6 @@ ############################################################################### -AC_INIT([wimlib], [1.13.2], [ebiggers3@gmail.com]) +AC_INIT([wimlib], [1.13.3], [https://wimlib.net/forums/]) AC_CONFIG_SRCDIR([src/wim.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) diff -Nru wimlib-1.13.2/COPYING wimlib-1.13.3/COPYING --- wimlib-1.13.2/COPYING 2017-09-20 02:55:16.000000000 +0000 +++ wimlib-1.13.3/COPYING 2020-08-23 19:37:44.000000000 +0000 @@ -1,25 +1,30 @@ -Unless otherwise specified, wimlib and its associated programs, scripts, -documentation, and other files may be redistributed and/or modified under the -terms of the GNU General Public License; either version 3 of the License, or (at -your option) any later version. There is NO WARRANTY, to the extent permitted -by law. See the file COPYING.GPLv3 for more details. - -Alternatively, when not prohibited by conflict with a third-party software -license, the library portion of wimlib may be redistributed and/or modified -under the terms of the GNU Lesser General Public License; either version 3 of -the License, or (at your option) any later version. There is NO WARRANTY, to -the extent permitted by law. See the file COPYING.LGPLv3 for more details. - ----------------------------------------- - -NOTE! The primary reason for the GPL/LGPL "dual licensing" for the library is -that on UNIX-like systems, wimlib can optionally be linked to the third-party -library "libntfs-3g", which is licensed GPLv2+. Under some interpretations of -the GPL, this would require that wimlib be licensed under the GPL as well. -However, a binary copy of wimlib that was compiled without libntfs-3g support -(for example; the exception may be applicable in other situations as well) -logically cannot be affected by libntfs-3g's license and should therefore be -free to be redistributed under the LGPL instead of the GPL. +wimlib (meaning all programs, scripts, libraries, documentation, and other files +that are part of the wimlib project -- not just the "libwim" library) may be +redistributed and/or modified under the terms of the GNU General Public License; +either version 3 of the License, or (at your option) any later version. A copy +of this license can be found in the file COPYING.GPLv3. + +Also, when not prohibited by a third-party software license, libwim (the library +portion of wimlib) may be redistributed and/or modified under the terms of the +GNU Lesser General Public License; either version 3 of the License, or (at your +option) any later version. A copy of this license can be found in the file +COPYING.LGPLv3. This is offered as a "dual license", meaning that you can +choose either this LGPLv3+ option or the above-mentioned GPLv3+ option. + +In either case there is NO WARRANTY, to the extent permitted by law. + +-------------------------------------------------------------------------------- + +NOTE! The reason for the "when not prohibited by a third-party software license" +condition on the LGPL option for libwim is that libwim can optionally be linked +to the third-party library "libntfs-3g", which is licensed under the GPL. +Usually the GPL is interpreted in a way that means that any binary that uses a +GPL library must be licensed under the GPL as well, not (for example) the LGPL. + +Therefore, if your build of libwim links to libntfs-3g, then you can't choose +the LGPL option. You may choose the LGPL option for Windows builds of libwim, +since they don't link to libntfs-3g. Likewise, you may choose the LGPL option +for UNIX builds of libwim that were built with './configure --without-ntfs-3g'. NOTE! The file COPYING.CC0 contains a public domain dedication. This public domain dedication does not apply to wimlib as a whole, but rather to individual diff -Nru wimlib-1.13.2/debian/changelog wimlib-1.13.3/debian/changelog --- wimlib-1.13.2/debian/changelog 2020-05-24 19:45:01.000000000 +0000 +++ wimlib-1.13.3/debian/changelog 2020-11-15 11:59:34.000000000 +0000 @@ -1,3 +1,11 @@ +wimlib (1.13.3-1) unstable; urgency=medium + + * New upstream version 1.13.3 + * Add Multi-Arch lines + * Bump Debhelper compat level + + -- Hilko Bengen Sun, 15 Nov 2020 12:59:34 +0100 + wimlib (1.13.2-1) unstable; urgency=medium * New upstream version 1.13.2 diff -Nru wimlib-1.13.2/debian/compat wimlib-1.13.3/debian/compat --- wimlib-1.13.2/debian/compat 2020-05-24 19:45:01.000000000 +0000 +++ wimlib-1.13.3/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -11 diff -Nru wimlib-1.13.2/debian/control wimlib-1.13.3/debian/control --- wimlib-1.13.2/debian/control 2020-05-24 19:45:01.000000000 +0000 +++ wimlib-1.13.3/debian/control 2020-11-15 11:59:34.000000000 +0000 @@ -1,7 +1,7 @@ Source: wimlib Priority: optional Maintainer: Hilko Bengen -Build-Depends: debhelper (>= 11), +Build-Depends: debhelper-compat (= 12), attr, attr-dev, doxygen, @@ -19,6 +19,7 @@ Package: libwim15 Section: libs Architecture: any +Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: wimtools Description: Library for manipulating Windows Imaging files @@ -33,6 +34,7 @@ Package: wimtools Section: otherosfs Architecture: any +Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: genisoimage, mtools, syslinux, cabextract Description: Tools for manipulating Windows Imaging files @@ -47,6 +49,7 @@ Package: libwim-dev Section: libdevel Architecture: any +Multi-Arch: same Depends: libwim15 (= ${binary:Version}), ${misc:Depends} Suggests: wimlib-doc Description: Library for manipulating Windows Imaging files - development files diff -Nru wimlib-1.13.2/doc/man1/mkwinpeimg.1 wimlib-1.13.3/doc/man1/mkwinpeimg.1 --- wimlib-1.13.2/doc/man1/mkwinpeimg.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/mkwinpeimg.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH MKWINPEIMG "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH MKWINPEIMG "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME mkwinpeimg \- Make a customized bootable image of Windows PE .SH SYNOPSIS @@ -118,6 +118,6 @@ Microsoft's licenses may limit the things that Windows PE can be used for, and they may limit your rights to redistribute customized versions of Windows PE. .SH REPORTING BUGS -Report bugs to ebiggers3@gmail.com. +Report bugs to \fIhttps://wimlib.net/forums/\fR. .SH SEE ALSO .BR wimlib-imagex (1) diff -Nru wimlib-1.13.2/doc/man1/wimapply.1 wimlib-1.13.3/doc/man1/wimapply.1 --- wimlib-1.13.2/doc/man1/wimapply.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimapply.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMAPPLY "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMAPPLY "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimapply \- Apply a WIM image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimcapture.1 wimlib-1.13.3/doc/man1/wimcapture.1 --- wimlib-1.13.2/doc/man1/wimcapture.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimcapture.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMCAPTURE "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMCAPTURE "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimcapture, wimappend \- Capture or append a WIM image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimdelete.1 wimlib-1.13.3/doc/man1/wimdelete.1 --- wimlib-1.13.2/doc/man1/wimdelete.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimdelete.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMDELETE "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMDELETE "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimdelete \- Delete an image from a WIM archive .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimdir.1 wimlib-1.13.3/doc/man1/wimdir.1 --- wimlib-1.13.2/doc/man1/wimdir.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimdir.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMDIR "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMDIR "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimdir \- List the files contained in a WIM image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimexport.1 wimlib-1.13.3/doc/man1/wimexport.1 --- wimlib-1.13.2/doc/man1/wimexport.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimexport.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMEXPORT "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMEXPORT "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimexport \- Export image(s) from a WIM archive .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimextract.1 wimlib-1.13.3/doc/man1/wimextract.1 --- wimlib-1.13.2/doc/man1/wimextract.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimextract.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMEXTRACT "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMEXTRACT "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimextract \- Extract files from a WIM image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wiminfo.1 wimlib-1.13.3/doc/man1/wiminfo.1 --- wimlib-1.13.2/doc/man1/wiminfo.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wiminfo.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMINFO "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMINFO "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wiminfo \- Display or change information about a WIM file or image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimjoin.1 wimlib-1.13.3/doc/man1/wimjoin.1 --- wimlib-1.13.2/doc/man1/wimjoin.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimjoin.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMJOIN "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMJOIN "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimjoin\- Join a split WIM into a standalone WIM .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimlib-imagex.1 wimlib-1.13.3/doc/man1/wimlib-imagex.1 --- wimlib-1.13.2/doc/man1/wimlib-imagex.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimlib-imagex.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMLIB-IMAGEX 1 "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMLIB-IMAGEX 1 "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimlib-imagex \- Extract, create, modify, or mount a WIM archive .SH SYNOPSIS @@ -224,7 +224,7 @@ General Public License; either version 3 of the License, or (at your option) any later version. There is NO WARRANTY, to the extent permitted by law. .SH REPORTING BUGS -Report bugs to ebiggers3@gmail.com or to \fIhttps://wimlib.net/forums/\fR. +Report bugs to \fIhttps://wimlib.net/forums/\fR. Feedback and suggestions are also welcome. .SH SEE ALSO .BR wimappend (1), diff -Nru wimlib-1.13.2/doc/man1/wimmount.1 wimlib-1.13.3/doc/man1/wimmount.1 --- wimlib-1.13.2/doc/man1/wimmount.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimmount.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMMOUNT "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMMOUNT "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimmount, wimmountrw, wimunmount \- Mount or unmount a WIM image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimoptimize.1 wimlib-1.13.3/doc/man1/wimoptimize.1 --- wimlib-1.13.2/doc/man1/wimoptimize.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimoptimize.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMOPTIMIZE "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMOPTIMIZE "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimoptimize \- Optimize a WIM archive .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimsplit.1 wimlib-1.13.3/doc/man1/wimsplit.1 --- wimlib-1.13.2/doc/man1/wimsplit.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimsplit.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMSPLIT "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMSPLIT "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimsplit \- Split a WIM archive into multiple parts .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimupdate.1 wimlib-1.13.3/doc/man1/wimupdate.1 --- wimlib-1.13.2/doc/man1/wimupdate.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimupdate.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMUPDATE "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMUPDATE "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimupdate \- Update a WIM image .SH SYNOPSIS diff -Nru wimlib-1.13.2/doc/man1/wimverify.1 wimlib-1.13.3/doc/man1/wimverify.1 --- wimlib-1.13.2/doc/man1/wimverify.1 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/doc/man1/wimverify.1 2020-10-27 03:49:10.000000000 +0000 @@ -1,4 +1,4 @@ -.TH WIMVERIFY "1" "May 2020" "wimlib 1.13.2" "User Commands" +.TH WIMVERIFY "1" "October 2020" "wimlib 1.13.3" "User Commands" .SH NAME wimverify \- Verify a WIM archive .SH SYNOPSIS diff -Nru wimlib-1.13.2/include/wimlib.h wimlib-1.13.3/include/wimlib.h --- wimlib-1.13.2/include/wimlib.h 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/include/wimlib.h 2020-10-27 03:49:10.000000000 +0000 @@ -11,7 +11,7 @@ /** * @mainpage * - * This is the documentation for the library interface of wimlib 1.13.2, a C + * This is the documentation for the library interface of wimlib 1.13.3, a C * library for creating, modifying, extracting, and mounting files in the * Windows Imaging (WIM) format. This documentation is intended for developers * only. If you have installed wimlib and want to know how to use the @b @@ -411,7 +411,7 @@ #define WIMLIB_MINOR_VERSION 13 /** Patch version of the library (for example, the 5 in 1.2.5). */ -#define WIMLIB_PATCH_VERSION 2 +#define WIMLIB_PATCH_VERSION 3 #ifdef __cplusplus extern "C" { diff -Nru wimlib-1.13.2/Makefile.am wimlib-1.13.3/Makefile.am --- wimlib-1.13.2/Makefile.am 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/Makefile.am 2020-10-27 03:49:10.000000000 +0000 @@ -200,7 +200,7 @@ $(LIBFUSE_CFLAGS) \ $(LIBCRYPTO_CFLAGS) -libwim_la_LDFLAGS = $(AM_LDFLAGS) -version-info 32:0:17 +libwim_la_LDFLAGS = $(AM_LDFLAGS) -version-info 33:0:18 libwim_la_LIBADD = \ $(PTHREAD_LIBS) \ diff -Nru wimlib-1.13.2/Makefile.in wimlib-1.13.3/Makefile.in --- wimlib-1.13.2/Makefile.in 2020-05-24 18:23:42.000000000 +0000 +++ wimlib-1.13.3/Makefile.in 2020-10-27 03:54:52.000000000 +0000 @@ -918,7 +918,7 @@ $(LIBFUSE_CFLAGS) \ $(LIBCRYPTO_CFLAGS) -libwim_la_LDFLAGS = $(AM_LDFLAGS) -version-info 32:0:17 +libwim_la_LDFLAGS = $(AM_LDFLAGS) -version-info 33:0:18 libwim_la_LIBADD = $(PTHREAD_LIBS) $(LIBXML2_LIBS) $(LIBNTFS_3G_LIBS) \ $(LIBFUSE_LIBS) $(LIBRT_LIBS) $(LIBCRYPTO_LIBS) \ $(PLATFORM_LIBS) $(am__append_7) diff -Nru wimlib-1.13.2/NEWS wimlib-1.13.3/NEWS --- wimlib-1.13.2/NEWS 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/NEWS 2020-10-27 03:53:59.000000000 +0000 @@ -1,3 +1,16 @@ +Version 1.13.3: + On Windows, improved performance of capturing an entire drive in some + cases. + + On Windows, fixed leaking a directory handle (or triggering a SEH + exception when running under a debugger) when referencing WIM files. + + On Windows, when applying a Windows OS image using the --compact flag, + bootloader files can now be compressed with stronger compression + algorithms if the version of Windows is recent enough to support it. + + Clarified the license text. + Version 1.13.2: Prevented miscompilation with gcc 10 at -O3 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94994). diff -Nru wimlib-1.13.2/programs/mkwinpeimg wimlib-1.13.3/programs/mkwinpeimg --- wimlib-1.13.2/programs/mkwinpeimg 2020-05-24 19:13:11.000000000 +0000 +++ wimlib-1.13.3/programs/mkwinpeimg 2020-10-27 03:54:57.000000000 +0000 @@ -20,7 +20,7 @@ script_name="$(basename "$0")" PREFIX_REG="::" -WIMLIB_VERSION=1.13.2 +WIMLIB_VERSION=1.13.3 calc_columns () { STAT_COL=80 diff -Nru wimlib-1.13.2/README wimlib-1.13.3/README --- wimlib-1.13.2/README 2020-05-24 18:22:36.000000000 +0000 +++ wimlib-1.13.3/README 2020-10-27 03:49:10.000000000 +0000 @@ -1,6 +1,6 @@ INTRODUCTION -This is wimlib version 1.13.2 (May 2020). wimlib is a C library for +This is wimlib version 1.13.3 (October 2020). wimlib is a C library for creating, modifying, extracting, and mounting files in the Windows Imaging Format (WIM files). wimlib and its command-line frontend 'wimlib-imagex' provide a free and cross-platform alternative to Microsoft's WIMGAPI, ImageX, @@ -267,7 +267,7 @@ law. See the COPYING file for more details. Bug reports, suggestions, and other contributions are appreciated and may be -sent via email to ebiggers3@gmail.com or posted to https://wimlib.net/forums. +posted to https://wimlib.net/forums/. wimlib is independently developed and does not contain any code, data, or files copyrighted by Microsoft. It is not known to be affected by any patents. diff -Nru wimlib-1.13.2/README.WINDOWS wimlib-1.13.3/README.WINDOWS --- wimlib-1.13.2/README.WINDOWS 2018-11-23 23:35:07.000000000 +0000 +++ wimlib-1.13.3/README.WINDOWS 2020-06-05 00:49:18.000000000 +0000 @@ -104,8 +104,8 @@ - mingw64-x86_64-binutils - mingw64-x86_64-gcc-g++ - mingw64-x86_64-libxml2 - - mingw64-x86_64-pkg-config - mingw64-x86_64-winpthreads + - pkg-config Download wimlib's source code from https://wimlib.net/downloads/wimlib-1.13.0.tar.gz. @@ -153,7 +153,6 @@ - git (category "Devel") - libtool (category "Devel") - nasm (category "Devel") - - pkg-config (category "Devel") - ghostscript (category "Graphics") - wget (category "Web") diff -Nru wimlib-1.13.2/src/win32_apply.c wimlib-1.13.3/src/win32_apply.c --- wimlib-1.13.2/src/win32_apply.c 2019-12-07 03:01:24.000000000 +0000 +++ wimlib-1.13.3/src/win32_apply.c 2020-06-05 01:26:37.000000000 +0000 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2013-2018 Eric Biggers + * Copyright (C) 2013-2020 Eric Biggers * * This file is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free @@ -244,14 +244,6 @@ } } -/* Is the image being extracted an OS image for Windows 10 or later? */ -static bool -is_image_windows_10_or_later(struct win32_apply_ctx *ctx) -{ - /* Note: if no build number is available, this returns false. */ - return ctx->windows_build_number >= 10240; -} - static const wchar_t * current_path(struct win32_apply_ctx *ctx); @@ -2530,6 +2522,22 @@ .num_strings = ARRAY_LEN(bootloader_pattern_strings), }; +/* Returns true if the specified system compression format is supported by the + * bootloader of the image being applied. */ +static bool +bootloader_supports_compression_format(struct win32_apply_ctx *ctx, int format) +{ + /* Windows 10 and later support XPRESS4K */ + if (format == FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K) + return ctx->windows_build_number >= 10240; + + /* + * Windows 10 version 1903 and later support the other formats; + * see https://wimlib.net/forums/viewtopic.php?f=1&t=444 + */ + return ctx->windows_build_number >= 18362; +} + static NTSTATUS set_system_compression_on_inode(struct wim_inode *inode, int format, struct win32_apply_ctx *ctx) @@ -2539,12 +2547,8 @@ HANDLE h; /* If it may be needed for compatibility with the Windows bootloader, - * force this file to XPRESS4K or uncompressed format. The bootloader - * of Windows 10 supports XPRESS4K only; older versions don't support - * system compression at all. */ - if (!is_image_windows_10_or_later(ctx) || - format != FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K) - { + * force this file to XPRESS4K or uncompressed format. */ + if (!bootloader_supports_compression_format(ctx, format)) { /* We need to check the patterns against every name of the * inode, in case any of them match. */ struct wim_dentry *dentry; @@ -2568,7 +2572,9 @@ warned = (ctx->num_system_compression_exclusions++ > 0); - if (is_image_windows_10_or_later(ctx)) { + if (bootloader_supports_compression_format(ctx, + FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K)) + { /* Force to XPRESS4K */ if (!warned) { WARNING("For compatibility with the " diff -Nru wimlib-1.13.2/src/win32_capture.c wimlib-1.13.3/src/win32_capture.c --- wimlib-1.13.2/src/win32_capture.c 2018-11-23 18:19:07.000000000 +0000 +++ wimlib-1.13.3/src/win32_capture.c 2020-06-02 04:10:11.000000000 +0000 @@ -803,12 +803,13 @@ } static int -winnt_build_dentry_tree_recursive(struct wim_dentry **root_ret, - HANDLE cur_dir, - const wchar_t *relative_path, - size_t relative_path_nchars, - const wchar_t *filename, - struct winnt_scan_ctx *ctx); +winnt_build_dentry_tree(struct wim_dentry **root_ret, + HANDLE cur_dir, + const wchar_t *relative_path, + size_t relative_path_nchars, + const wchar_t *filename, + struct winnt_scan_ctx *ctx, + bool recursive); static int winnt_recurse_directory(HANDLE h, @@ -850,13 +851,14 @@ if (!filename) goto out_free_buf; - ret = winnt_build_dentry_tree_recursive( + ret = winnt_build_dentry_tree( &child, h, filename, info->FileNameLength / 2, filename, - ctx); + ctx, + true); pathbuf_truncate(ctx->params, orig_path_nchars); @@ -1701,12 +1703,13 @@ } static int -winnt_build_dentry_tree_recursive(struct wim_dentry **root_ret, - HANDLE cur_dir, - const wchar_t *relative_path, - size_t relative_path_nchars, - const wchar_t *filename, - struct winnt_scan_ctx *ctx) +winnt_build_dentry_tree(struct wim_dentry **root_ret, + HANDLE cur_dir, + const wchar_t *relative_path, + size_t relative_path_nchars, + const wchar_t *filename, + struct winnt_scan_ctx *ctx, + bool recursive) { struct wim_dentry *root = NULL; struct wim_inode *inode = NULL; @@ -1883,7 +1886,7 @@ set_sort_key(inode, sort_key); - if (inode_is_directory(inode)) { + if (inode_is_directory(inode) && recursive) { /* Directory: recurse to children. */ @@ -1907,10 +1910,16 @@ } out_progress: - if (likely(root)) - ret = do_scan_progress(ctx->params, WIMLIB_SCAN_DENTRY_OK, inode); - else - ret = do_scan_progress(ctx->params, WIMLIB_SCAN_DENTRY_EXCLUDED, NULL); + ret = 0; + if (recursive) { /* if !recursive, caller handles progress */ + if (likely(root)) + ret = do_scan_progress(ctx->params, + WIMLIB_SCAN_DENTRY_OK, inode); + else + ret = do_scan_progress(ctx->params, + WIMLIB_SCAN_DENTRY_EXCLUDED, + NULL); + } out: if (likely(h)) NtClose(h); @@ -2710,10 +2719,10 @@ * ntfs_stream => wim_inode_stream * * This also handles things such as exclusions and issuing progress messages. - * It's similar to winnt_build_dentry_tree_recursive(), but this is much faster - * because almost all information we need is already loaded in memory in the - * ntfs_* structures. However, in some cases we still fall back to - * winnt_build_dentry_tree_recursive() and/or opening the file. + * It's similar to winnt_build_dentry_tree(), but this is much faster because + * almost all information we need is already loaded in memory in the ntfs_* + * structures. However, in some cases we still fall back to + * winnt_build_dentry_tree() and/or opening the file. */ static int generate_wim_structures_recursive(struct wim_dentry **root_ret, @@ -2732,7 +2741,7 @@ if (NTFS_IS_SPECIAL_FILE(ni->ino)) goto out; - /* Fall back to a recursive scan for unhandled cases. Reparse points, + /* Fall back to the standard scan for unhandled cases. Reparse points, * in particular, can't be properly handled here because a commonly used * filter driver (WOF) hides reparse points from regular filesystem APIs * but not from FSCTL_QUERY_FILE_LAYOUT. */ @@ -2740,13 +2749,16 @@ FILE_ATTRIBUTE_ENCRYPTED) || ni->special_streams != 0) { - ret = winnt_build_dentry_tree_recursive(&root, - NULL, - ctx->params->cur_path, - ctx->params->cur_path_nchars, - filename, - ctx); - goto out; + ret = winnt_build_dentry_tree(&root, NULL, + ctx->params->cur_path, + ctx->params->cur_path_nchars, + filename, ctx, false); + if (ret) /* Error? */ + goto out; + if (!root) /* Excluded? */ + goto out_progress; + inode = root->d_inode; + goto process_children; } /* Test for exclusion based on path. */ @@ -2866,6 +2878,7 @@ /* If processing a directory, then recurse to its children. In this * version there is no need to go to disk, as we already have the list * of children cached from the MFT. */ +process_children: if (inode_is_directory(inode)) { const struct ntfs_dentry *nd = ni->first_child; @@ -3027,10 +3040,8 @@ } } #endif - ret = winnt_build_dentry_tree_recursive(root_ret, NULL, - params->cur_path, - params->cur_path_nchars, - L"", &ctx); + ret = winnt_build_dentry_tree(root_ret, NULL, params->cur_path, + params->cur_path_nchars, L"", &ctx, true); out: vss_put_snapshot(ctx.snapshot); if (ret == 0) diff -Nru wimlib-1.13.2/src/win32_replacements.c wimlib-1.13.3/src/win32_replacements.c --- wimlib-1.13.2/src/win32_replacements.c 2018-05-02 03:38:31.000000000 +0000 +++ wimlib-1.13.3/src/win32_replacements.c 2020-10-27 03:16:27.000000000 +0000 @@ -692,7 +692,7 @@ pglob->gl_pathv[pglob->gl_pathc++] = path; } while (FindNextFileW(hFind, &dat)); err = GetLastError(); - CloseHandle(hFind); + FindClose(hFind); if (err != ERROR_NO_MORE_FILES) { set_errno_from_win32_error(err); ret = GLOB_ABORTED; @@ -701,7 +701,7 @@ return 0; oom: - CloseHandle(hFind); + FindClose(hFind); errno = ENOMEM; ret = GLOB_NOSPACE; fail_globfree: