Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package wimlib for openSUSE:Factory checked in at 2022-01-25 17:36:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wimlib (Old) and /work/SRC/openSUSE:Factory/.wimlib.new.1938 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wimlib" Tue Jan 25 17:36:00 2022 rev:6 rq:948499 version:1.13.5 Changes: -------- --- /work/SRC/openSUSE:Factory/wimlib/wimlib.changes 2021-07-05 22:24:05.721204085 +0200 +++ /work/SRC/openSUSE:Factory/.wimlib.new.1938/wimlib.changes 2022-01-25 17:37:20.745807191 +0100 @@ -1,0 +2,10 @@ +Mon Jan 24 22:14:16 UTC 2022 - Dirk M??ller <dmuel...@suse.com> + +- update to 1.13.5: + * Exporting "all" images from a WIM file no longer fails if multiple + images in that WIM file have the same name. + * wimlib now warns rather than aborts if two files have the same SHA-1 + hash but different sizes. + * Fixed build errors with the latest version of Mingw-w64. + +------------------------------------------------------------------- Old: ---- wimlib-1.13.4.tar.gz New: ---- wimlib-1.13.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wimlib.spec ++++++ --- /var/tmp/diff_new_pack.3QmAxd/_old 2022-01-25 17:37:21.521801847 +0100 +++ /var/tmp/diff_new_pack.3QmAxd/_new 2022-01-25 17:37:21.525801820 +0100 @@ -1,7 +1,7 @@ # # spec file for package wimlib # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define so_version 15 Name: wimlib -Version: 1.13.4 +Version: 1.13.5 Release: 0 Summary: Library to extract, create, modify, and mount WIM files License: CC0-1.0 AND GPL-3.0-or-later AND LGPL-3.0-or-later ++++++ wimlib-1.13.4.tar.gz -> wimlib-1.13.5.tar.gz ++++++ ++++ 5342 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/wimlib-1.13.4/Makefile.am new/wimlib-1.13.5/Makefile.am --- old/wimlib-1.13.4/Makefile.am 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/Makefile.am 2021-12-19 20:05:50.000000000 +0100 @@ -200,7 +200,7 @@ $(LIBFUSE_CFLAGS) \ $(LIBCRYPTO_CFLAGS) -libwim_la_LDFLAGS = $(AM_LDFLAGS) -version-info 34:0:19 +libwim_la_LDFLAGS = $(AM_LDFLAGS) -version-info 35:0:20 libwim_la_LIBADD = \ $(PTHREAD_LIBS) \ 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/wimlib-1.13.4/NEWS new/wimlib-1.13.5/NEWS --- old/wimlib-1.13.4/NEWS 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/NEWS 2021-12-19 19:57:38.000000000 +0100 @@ -1,3 +1,12 @@ +version 1.13.5: + Exporting "all" images from a WIM file no longer fails if multiple + images in that WIM file have the same name. + + wimlib now warns rather than aborts if two files have the same SHA-1 + hash but different sizes. + + Fixed build errors with the latest version of Mingw-w64. + Version 1.13.4: wimsplit now prints progress messages regularly rather than just once per WIM part. 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/wimlib-1.13.4/README new/wimlib-1.13.5/README --- old/wimlib-1.13.4/README 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/README 2021-12-19 20:19:31.000000000 +0100 @@ -1,6 +1,6 @@ INTRODUCTION -This is wimlib version 1.13.4 (April 2021). wimlib is a C library for +This is wimlib version 1.13.5 (December 2021). 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, 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/wimlib-1.13.4/README.WINDOWS new/wimlib-1.13.5/README.WINDOWS --- old/wimlib-1.13.4/README.WINDOWS 2020-06-05 02:49:18.000000000 +0200 +++ new/wimlib-1.13.5/README.WINDOWS 2021-12-19 20:19:46.000000000 +0100 @@ -94,7 +94,7 @@ designed for UNIX-like systems and is easiest to use on Linux, it's possible to build Windows binaries on Windows using Cygwin with MinGW. To do this, follow the instructions below. For the sake of example, I'll assume you are building a -64-bit version of wimlib v1.13.0. +64-bit version of wimlib v1.13.5. Run the Cygwin installer, available from https://www.cygwin.com/setup-x86.exe. When you get to the package selection screen, choose the following additional @@ -107,13 +107,13 @@ - mingw64-x86_64-winpthreads - pkg-config -Download wimlib's source code from https://wimlib.net/downloads/wimlib-1.13.0.tar.gz. +Download wimlib's source code from https://wimlib.net/downloads/wimlib-1.13.5.tar.gz. Start a Cygwin terminal and run the following commands: cd /cygdrive/c/Users/example/Downloads # (or wherever you downloaded the source to) - tar xf wimlib-1.13.0.tar.gz - cd wimlib-1.13.0 + tar xf wimlib-1.13.5.tar.gz + cd wimlib-1.13.5 ./configure --host=x86_64-w64-mingw32 make @@ -147,7 +147,7 @@ depend on any DLLs other than standard Windows DLLs. If you want to do this, install the following additional Cygwin packages: - - p7zip (category "Archiver") + - p7zip (category "Archive") - autoconf (category "Devel") - automake (category "Devel") - git (category "Devel") @@ -157,16 +157,17 @@ - wget (category "Web") Then, in a Cygwin terminal, clone the git repository, checkout the wimlib -version you want, bootstrap the repository, and run the Windows release script: +version you want (if you don't want to build the latest master branch), +bootstrap the repository, and run the Windows release script: git clone git://wimlib.net/wimlib cd wimlib - git checkout v1.13.0 + git checkout v1.13.5 # example only; omit if building the master branch ./bootstrap ./tools/make-windows-release x86_64 The release script will download and build libxml2 and winpthreads as static libraries, then build wimlib, then do some final tasks and bundle the resulting files up into a ZIP archive. If successful you'll end up with a file like -"wimlib-1.13.0-windows-x86_64-bin.zip", just like the official releases. For +"wimlib-1.13.5-windows-x86_64-bin.zip", just like the official releases. For 32-bit binaries just use "i686" instead of "x86_64". 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/wimlib-1.13.4/build-aux/ar-lib new/wimlib-1.13.5/build-aux/ar-lib --- old/wimlib-1.13.4/build-aux/ar-lib 2020-10-27 04:54:52.000000000 +0100 +++ new/wimlib-1.13.5/build-aux/ar-lib 2021-12-19 20:22:41.000000000 +0100 @@ -4,7 +4,7 @@ me=ar-lib scriptversion=2019-07-04.01; # UTC -# Copyright (C) 2010-2020 Free Software Foundation, Inc. +# Copyright (C) 2010-2021 Free Software Foundation, Inc. # Written by Peter Rosin <p...@lysator.liu.se>. # # This program is free software; you can redistribute it and/or modify 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/wimlib-1.13.4/build-aux/compile new/wimlib-1.13.5/build-aux/compile --- old/wimlib-1.13.4/build-aux/compile 2020-10-27 04:54:52.000000000 +0100 +++ new/wimlib-1.13.5/build-aux/compile 2021-12-19 20:22:41.000000000 +0100 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey <tro...@cygnus.com>. # # This program is free software; you can redistribute it and/or modify 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/wimlib-1.13.4/build-aux/missing new/wimlib-1.13.5/build-aux/missing --- old/wimlib-1.13.4/build-aux/missing 2020-10-27 04:54:52.000000000 +0100 +++ new/wimlib-1.13.5/build-aux/missing 2021-12-19 20:22:41.000000000 +0100 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify 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/wimlib-1.13.4/build-aux/test-driver new/wimlib-1.13.5/build-aux/test-driver --- old/wimlib-1.13.4/build-aux/test-driver 2020-10-27 04:54:52.000000000 +0100 +++ new/wimlib-1.13.5/build-aux/test-driver 2021-12-19 20:22:41.000000000 +0100 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# Copyright (C) 2011-2021 Free Software Foundation, Inc. # # 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 @@ -42,11 +42,13 @@ { cat <<END Usage: - test-driver --test-name=NAME --log-file=PATH --trs-file=PATH - [--expect-failure={yes|no}] [--color-tests={yes|no}] - [--enable-hard-errors={yes|no}] [--] + test-driver --test-name NAME --log-file PATH --trs-file PATH + [--expect-failure {yes|no}] [--color-tests {yes|no}] + [--enable-hard-errors {yes|no}] [--] TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS] + The '--test-name', '--log-file' and '--trs-file' options are mandatory. +See the GNU Automake documentation for information. END } @@ -103,8 +105,11 @@ trap "st=141; $do_exit" 13 trap "st=143; $do_exit" 15 -# Test script is run here. -"$@" >$log_file 2>&1 +# Test script is run here. We create the file first, then append to it, +# to ameliorate tests themselves also writing to the log file. Our tests +# don't, but others can (automake bug#35762). +: >"$log_file" +"$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then @@ -126,7 +131,7 @@ # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). -echo "$res $test_name (exit status: $estatus)" >>$log_file +echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" 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/wimlib-1.13.4/configure.ac new/wimlib-1.13.5/configure.ac --- old/wimlib-1.13.4/configure.ac 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/configure.ac 2021-08-03 06:59:57.000000000 +0200 @@ -1,6 +1,7 @@ ############################################################################### -AC_INIT([wimlib], [1.13.4], [https://wimlib.net/forums/]) +AC_INIT([wimlib], m4_esyscmd_s([tools/get-version-number]), + [https://wimlib.net/forums/]) AC_CONFIG_SRCDIR([src/wim.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) 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/wimlib-1.13.4/doc/man1/mkwinpeimg.1 new/wimlib-1.13.5/doc/man1/mkwinpeimg.1 --- old/wimlib-1.13.4/doc/man1/mkwinpeimg.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/mkwinpeimg.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH MKWINPEIMG "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH MKWINPEIMG "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME mkwinpeimg \- Make a customized bootable image of Windows PE .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimapply.1 new/wimlib-1.13.5/doc/man1/wimapply.1 --- old/wimlib-1.13.4/doc/man1/wimapply.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimapply.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMAPPLY "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMAPPLY "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimapply \- Apply a WIM image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimcapture.1 new/wimlib-1.13.5/doc/man1/wimcapture.1 --- old/wimlib-1.13.4/doc/man1/wimcapture.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimcapture.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMCAPTURE "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMCAPTURE "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimcapture, wimappend \- Capture or append a WIM image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimdelete.1 new/wimlib-1.13.5/doc/man1/wimdelete.1 --- old/wimlib-1.13.4/doc/man1/wimdelete.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimdelete.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMDELETE "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMDELETE "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimdelete \- Delete an image from a WIM archive .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimdir.1 new/wimlib-1.13.5/doc/man1/wimdir.1 --- old/wimlib-1.13.4/doc/man1/wimdir.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimdir.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMDIR "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMDIR "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimdir \- List the files contained in a WIM image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimexport.1 new/wimlib-1.13.5/doc/man1/wimexport.1 --- old/wimlib-1.13.4/doc/man1/wimexport.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimexport.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMEXPORT "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMEXPORT "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimexport \- Export image(s) from a WIM archive .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimextract.1 new/wimlib-1.13.5/doc/man1/wimextract.1 --- old/wimlib-1.13.4/doc/man1/wimextract.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimextract.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMEXTRACT "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMEXTRACT "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimextract \- Extract files from a WIM image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wiminfo.1 new/wimlib-1.13.5/doc/man1/wiminfo.1 --- old/wimlib-1.13.4/doc/man1/wiminfo.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wiminfo.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMINFO "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMINFO "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wiminfo \- Display or change information about a WIM file or image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimjoin.1 new/wimlib-1.13.5/doc/man1/wimjoin.1 --- old/wimlib-1.13.4/doc/man1/wimjoin.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimjoin.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMJOIN "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMJOIN "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimjoin\- Join a split WIM into a standalone WIM .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimlib-imagex.1 new/wimlib-1.13.5/doc/man1/wimlib-imagex.1 --- old/wimlib-1.13.4/doc/man1/wimlib-imagex.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimlib-imagex.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMLIB-IMAGEX 1 "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMLIB-IMAGEX 1 "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimlib-imagex \- Extract, create, modify, or mount a WIM archive .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimmount.1 new/wimlib-1.13.5/doc/man1/wimmount.1 --- old/wimlib-1.13.4/doc/man1/wimmount.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimmount.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMMOUNT "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMMOUNT "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimmount, wimmountrw, wimunmount \- Mount or unmount a WIM image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimoptimize.1 new/wimlib-1.13.5/doc/man1/wimoptimize.1 --- old/wimlib-1.13.4/doc/man1/wimoptimize.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimoptimize.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMOPTIMIZE "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMOPTIMIZE "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimoptimize \- Optimize a WIM archive .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimsplit.1 new/wimlib-1.13.5/doc/man1/wimsplit.1 --- old/wimlib-1.13.4/doc/man1/wimsplit.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimsplit.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMSPLIT "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMSPLIT "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimsplit \- Split a WIM archive into multiple parts .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimupdate.1 new/wimlib-1.13.5/doc/man1/wimupdate.1 --- old/wimlib-1.13.4/doc/man1/wimupdate.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimupdate.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMUPDATE "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMUPDATE "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimupdate \- Update a WIM image .SH SYNOPSIS 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/wimlib-1.13.4/doc/man1/wimverify.1 new/wimlib-1.13.5/doc/man1/wimverify.1 --- old/wimlib-1.13.4/doc/man1/wimverify.1 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/doc/man1/wimverify.1 2021-12-19 20:19:31.000000000 +0100 @@ -1,4 +1,4 @@ -.TH WIMVERIFY "1" "April 2021" "wimlib 1.13.4" "User Commands" +.TH WIMVERIFY "1" "December 2021" "wimlib 1.13.5" "User Commands" .SH NAME wimverify \- Verify a WIM archive .SH SYNOPSIS 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/wimlib-1.13.4/include/wimlib/blob_table.h new/wimlib-1.13.5/include/wimlib/blob_table.h --- old/wimlib-1.13.4/include/wimlib/blob_table.h 2021-04-07 05:55:50.000000000 +0200 +++ new/wimlib-1.13.5/include/wimlib/blob_table.h 2021-07-05 09:01:12.000000000 +0200 @@ -412,7 +412,7 @@ extern struct blob_descriptor * after_blob_hashed(struct blob_descriptor *blob, struct blob_descriptor **back_ptr, - struct blob_table *blob_table); + struct blob_table *blob_table, struct wim_inode *inode); extern int hash_unhashed_blob(struct blob_descriptor *blob, struct blob_table *blob_table, 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/wimlib-1.13.4/include/wimlib/win32_common.h new/wimlib-1.13.5/include/wimlib/win32_common.h --- old/wimlib-1.13.4/include/wimlib/win32_common.h 2018-05-02 05:38:31.000000000 +0200 +++ new/wimlib-1.13.5/include/wimlib/win32_common.h 2021-07-05 08:13:51.000000000 +0200 @@ -30,7 +30,9 @@ PRTLP_CURDIR_REF CurDirRef; } RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U; -#define FSCTL_SET_PERSISTENT_VOLUME_STATE 0x90238 +#ifndef FSCTL_SET_PERSISTENT_VOLUME_STATE +#define FSCTL_SET_PERSISTENT_VOLUME_STATE \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS) #define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED 0x00000001 @@ -40,6 +42,7 @@ ULONG Version; ULONG Reserved; } FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION; +#endif /* FSCTL_SET_PERSISTENT_VOLUME_STATE */ /* ntdll functions */ 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/wimlib-1.13.4/include/wimlib/wof.h new/wimlib-1.13.5/include/wimlib/wof.h --- old/wimlib-1.13.4/include/wimlib/wof.h 2017-09-20 04:55:16.000000000 +0200 +++ new/wimlib-1.13.5/include/wimlib/wof.h 2021-07-05 08:13:51.000000000 +0200 @@ -2,13 +2,11 @@ * wof.h * * Definitions for the Windows Overlay Filesystem filter (WOF) ioctls, as well - * some definitions for associated undocumented data structures. See - * http://msdn.microsoft.com/en-us/library/windows/hardware/ff540367(v=vs.85).aspx - * for more information about the documented ioctls. + * some definitions for associated undocumented data structures. * * The following copying information applies to this specific source code file: * - * Written in 2014-2016 by Eric Biggers <ebigge...@gmail.com> + * Written in 2014-2021 by Eric Biggers <ebigge...@gmail.com> * * To the extent possible under law, the author(s) have dedicated all copyright * and related and neighboring rights to this software to the public domain @@ -64,39 +62,149 @@ */ -/* Current version of the WOF driver/protocol */ -#define WOF_CURRENT_VERSION 1 - -/* Specifies the WIM backing provider */ -#define WOF_PROVIDER_WIM 1 - -/* Specifies the "file" backing provider (a.k.a. System Compression) */ -#define WOF_PROVIDER_FILE 2 - -/* The current version of the WIM backing provider */ -#define WIM_PROVIDER_CURRENT_VERSION 1 - -/* The current version of the file backing provider */ -#define FILE_PROVIDER_CURRENT_VERSION 1 - -/* Identifies a backing provider for a specific overlay service version. */ -struct wof_external_info { - - /* Version of the overlay service supported by the backing provider. - * Set to WOF_CURRENT_VERSION. */ - u32 version; +/*----------------------------------------------------------------------------* + * WOF ioctl definitions * + *----------------------------------------------------------------------------*/ + +#ifndef WOF_CURRENT_VERSION +/* Identifies a file backing provider and the overlay service version it supports. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/ns-ntifs-_wof_external_info */ +typedef struct _WOF_EXTERNAL_INFO { +#define WOF_CURRENT_VERSION 1 + DWORD Version; + DWORD Provider; +} WOF_EXTERNAL_INFO, *PWOF_EXTERNAL_INFO; +#endif /* WOF_CURRENT_VERSION */ + +/* WIM provider ("WIMBoot") */ +#ifndef WOF_PROVIDER_WIM +#define WOF_PROVIDER_WIM 1 +/* + * The identifier and status information for the Windows Image File (WIM) + * external backing provider. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/ns-ntifs-_wim_provider_external_info + */ +typedef struct _WIM_PROVIDER_EXTERNAL_INFO { +#define WIM_PROVIDER_CURRENT_VERSION 1 + ULONG Version; + ULONG Flags; + LARGE_INTEGER DataSourceId; +#define WIM_PROVIDER_HASH_SIZE 20 + UCHAR ResourceHash[WIM_PROVIDER_HASH_SIZE]; +} WIM_PROVIDER_EXTERNAL_INFO, *PWIM_PROVIDER_EXTERNAL_INFO; +#endif /* WOF_PROVIDER_WIM */ + +/* File provider ("system compression") */ +#ifndef WOF_PROVIDER_FILE +#define WOF_PROVIDER_FILE 2 +/* Defines metadata specific to files provided by WOF_PROVIDER_FILE. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/ns-ntifs-_file_provider_external_info_v1 */ +typedef struct _FILE_PROVIDER_EXTERNAL_INFO_V1 { +#define FILE_PROVIDER_CURRENT_VERSION 1 + DWORD Version; +#define FILE_PROVIDER_COMPRESSION_XPRESS4K 0 +#define FILE_PROVIDER_COMPRESSION_LZX 1 +#define FILE_PROVIDER_COMPRESSION_XPRESS8K 2 +#define FILE_PROVIDER_COMPRESSION_XPRESS16K 3 + DWORD Algorithm; + DWORD Flags; +} FILE_PROVIDER_EXTERNAL_INFO_V1, *PFILE_PROVIDER_EXTERNAL_INFO_V1; +#endif /* WOF_PROVIDER_FILE */ + +/* Sets the backing source for a file. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-set-external-backing */ +#ifndef FSCTL_SET_EXTERNAL_BACKING +#define FSCTL_SET_EXTERNAL_BACKING \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 195, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#endif + +/* Gets the backing information for a file from an external backing provider. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-get-external-backing */ +#ifndef FSCTL_GET_EXTERNAL_BACKING +#define FSCTL_GET_EXTERNAL_BACKING \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 196, METHOD_BUFFERED, FILE_ANY_ACCESS) +#endif - /* Identifier for the backing provider. Example value: - * WOF_PROVIDER_WIM. */ - u32 provider; -}; +#ifndef STATUS_OBJECT_NOT_EXTERNALLY_BACKED +#define STATUS_OBJECT_NOT_EXTERNALLY_BACKED 0xC000046D +#endif +/* Removes the association of a file with an external backing provider. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-delete-external-backing */ +#ifndef FSCTL_DELETE_EXTERNAL_BACKING +#define FSCTL_DELETE_EXTERNAL_BACKING \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 197, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#endif + +/* Begins or continues an enumeration of files on a volume that have a backing source. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-enum-external-backing */ +#ifndef FSCTL_ENUM_EXTERNAL_BACKING +#define FSCTL_ENUM_EXTERNAL_BACKING \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 198, METHOD_BUFFERED, FILE_ANY_ACCESS) +#endif + +/* Enumerates all the data sources from a backing provider for a specified volume. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-enum-overlay */ +#ifndef FSCTL_ENUM_OVERLAY +#define FSCTL_ENUM_OVERLAY \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 199, METHOD_NEITHER, FILE_ANY_ACCESS) +typedef struct _WIM_PROVIDER_OVERLAY_ENTRY { + ULONG NextEntryOffset; + LARGE_INTEGER DataSourceId; + GUID WimGuid; + ULONG WimFileNameOffset; + ULONG WimType; + ULONG WimIndex; + ULONG Flags; +} WIM_PROVIDER_OVERLAY_ENTRY, *PWIM_PROVIDER_OVERLAY_ENTRY; +#endif /* FSCTL_ENUM_OVERLAY */ + +/* Add a new external backing source to a volume's namespace. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-add-overlay */ +#ifndef FSCTL_ADD_OVERLAY +#define FSCTL_ADD_OVERLAY \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 204, METHOD_BUFFERED, FILE_WRITE_DATA) +typedef struct _WIM_PROVIDER_ADD_OVERLAY_INPUT { +#define WIM_BOOT_NOT_OS_WIM 0 +#define WIM_BOOT_OS_WIM 1 + ULONG WimType; + ULONG WimIndex; + ULONG WimFileNameOffset; + ULONG WimFileNameLength; +} WIM_PROVIDER_ADD_OVERLAY_INPUT, *PWIM_PROVIDER_ADD_OVERLAY_INPUT; +#endif /* FSCTL_ADD_OVERLAY */ + +/* Removes a backing source from a volume. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-remove-overlay */ +#ifndef FSCTL_REMOVE_OVERLAY +#define FSCTL_REMOVE_OVERLAY \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 205, METHOD_BUFFERED, FILE_WRITE_DATA) +typedef struct _WIM_PROVIDER_REMOVE_OVERLAY_INPUT { + LARGE_INTEGER DataSourceId; +} WIM_PROVIDER_REMOVE_OVERLAY_INPUT, *PWIM_PROVIDER_REMOVE_OVERLAY_INPUT; +#endif /* FSCTL_REMOVE_OVERLAY */ + +/* Updates a new data source identifier for a backing source attached to a volume. + * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/fsctl-update-overlay */ +#ifndef FSCTL_UPDATE_OVERLAY +#define FSCTL_UPDATE_OVERLAY \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 206, METHOD_BUFFERED, FILE_WRITE_DATA) +typedef struct _WIM_PROVIDER_UPDATE_OVERLAY_INPUT { + LARGE_INTEGER DataSourceId; + ULONG WimFileNameOffset; + ULONG WimFileNameLength; +} WIM_PROVIDER_UPDATE_OVERLAY_INPUT, *PWIM_PROVIDER_UPDATE_OVERLAY_INPUT; +#endif /* FSCTL_UPDATE_OVERLAY */ + +/*----------------------------------------------------------------------------* + * WOF reparse point and WimOverlay.dat structs (undocumented) * + *----------------------------------------------------------------------------*/ /* * Format of the WIM provider reparse data. This is the data which follows the * portion of the reparse point common to WOF. (The common portion consists of - * a reparse point header where the reparse tag is 0x80000017, then a 'struct - * wof_external_info' which specifies the provider.) + * a reparse point header where the reparse tag is 0x80000017, then a + * WOF_EXTERNAL_INFO struct which specifies the provider.) * * Note that Microsoft does not document any of the reparse point formats for * WOF, although they document the structures which must be passed into the @@ -308,279 +416,4 @@ STATIC_ASSERT(sizeof(struct WimOverlay_dat_entry_2) == 104); } -/***************************************************************************** - * - * --- FSCTL_SET_EXTERNAL_BACKING --- - * - * Sets the backing source of a file. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 0 (FILE_ANY_ACCESS) - * Function: 195 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: 'struct wof_external_info' followed by provider-specific data - * ('struct wim_provider_external_info' in the case of WIM). - * - * Output buffer: None - */ -#define FSCTL_SET_EXTERNAL_BACKING 0x9030C - -struct wim_provider_external_info { - - /* Set to WIM_PROVIDER_CURRENT_VERSION. */ - u32 version; - - /* 0 when WIM provider active, otherwise - * WIM_PROVIDER_EXTERNAL_FLAG_NOT_ACTIVE or - * WIM_PROVIDER_EXTERNAL_FLAG_SUSPENDED. */ - u32 flags; - - /* Integer ID that identifies the WIM. Get this with the - * FSCTL_ADD_OVERLAY ioctl. */ - u64 data_source_id; - - /* SHA-1 message digest of the file's unnamed data stream. */ - u8 unnamed_data_stream_hash[20]; -}; - -struct file_provider_external_info { - - /* Set to FILE_PROVIDER_CURRENT_VERSION. */ - u32 version; - - u32 compression_format; -#define FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K 0 -#define FILE_PROVIDER_COMPRESSION_FORMAT_LZX 1 -#define FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS8K 2 -#define FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS16K 3 -}; - -/***************************************************************************** - * - * --- FSCTL_GET_EXTERNAL_BACKING --- - * - * Get external backing information for the specified file. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 0 (FILE_ANY_ACCESS) - * Function: 196 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: None - * Output buffer: 'struct wof_external_info' followed by provider-specific data - * ('struct wim_provider_external_info' in the case of WIM). - */ -#define FSCTL_GET_EXTERNAL_BACKING 0x90310 - -#define STATUS_OBJECT_NOT_EXTERNALLY_BACKED 0xC000046D - -/***************************************************************************** - * - * --- FSCTL_DELETE_EXTERNAL_BACKING --- - * - * Copy a file from its backing source to its volume, then disassociate it from - * its backing provider. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 0 (FILE_ANY_ACCESS) - * Function: 197 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: None - * Output buffer: None - */ -#define FSCTL_DELETE_EXTERNAL_BACKING 0x90314 - -/***************************************************************************** - * - * --- FSCTL_ENUM_EXTERNAL_BACKING --- - * - * Enumerate externally backed files on a volume. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 0 (FILE_ANY_ACCESS) - * Function: 198 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: None - * Output buffer: A 16-byte buffer that receives the 128-bit file ID for the - * next externally backed file. - * - * The handle used may be either the volume handle or the handle for any file or - * directory on the volume. - * - * When all externally backed files on the volume have been enumerated, the - * function fails with ERROR_NO_MORE_FILES. - */ -#define FSCTL_ENUM_EXTERNAL_BACKING 0x90318 - -/***************************************************************************** - * - * --- FSCTL_ENUM_OVERLAY --- - * - * Enumerates the volume's overlay sources from the specified provider. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 0 (FILE_ANY_ACCESS) - * Function: 199 - * Method: 3 (METHOD_NEITHER) - * - * Input buffer: 'struct wof_external_info' to specify the provider for which - * to enumerate the overlay sources. - * - * Output buffer: Provider-specific data. For the WIM provider, an array of - * 'struct wim_provider_overlay_entry'. - * - * This ioctl must be performed on the volume handle, such as \\.\C: - */ -#define FSCTL_ENUM_OVERLAY 0x9031F - -struct wim_provider_overlay_entry { - /* Byte offset of the next entry from the beginning of this structure, - * or 0 if there are no more entries. */ - u32 next_entry_offset; - - u32 padding; - - /* Identifier for the WIM file. */ - u64 data_source_id; - - /* GUID of the WIM file. */ - u8 guid[16]; - - /* Byte offset of the WIM's file name from the beginning of this - * structure. */ - u32 wim_file_name_offset; - - /* Type of WIM file: WIM_BOOT_OS_WIM or WIM_BOOT_NOT_OS_WIM. */ - u32 wim_type; - - /* Index of the image in the WIM to use??? (This doesn't really make - * sense, since WIM files combine file data "blobs" for all images into - * a single table. Set to 1 if unsure...) */ - u32 wim_index; - - /* 0 when WIM provider active, otherwise - * WIM_PROVIDER_EXTERNAL_FLAG_NOT_ACTIVE or - * WIM_PROVIDER_EXTERNAL_FLAG_SUSPENDED. */ - u32 flags; - - /* Full path to the WIM in the NT device namespace, e.g. - * "\Device\HardDiskVolume2\test.wim". Seems to be null-terminated, - * although you probably shouldn't assume so. */ - wchar_t wim_file_name[]; -}; - - -/***************************************************************************** - * - * --- FSCTL_ADD_OVERLAY --- - * - * Adds a new external backing source to a volume. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 2 (FILE_WRITE_ACCESS) - * Function: 204 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: 'struct wof_external_info' followed by provider-specific data - * ('struct wim_provider_add_overlay_input' in the case of WIM). - * - * Output buffer: Buffer large enough to receive any information resulting from - * the add operation. For the WIM provider, this must be an 8 byte buffer that - * receives the 64-bit WIM file ID. - * - * This ioctl must be performed on the volume handle, such as \\.\C: - */ -#define FSCTL_ADD_OVERLAY 0x98330 - -struct wim_provider_add_overlay_input { - - /* Type of WIM file. */ - u32 wim_type; -#define WIM_BOOT_OS_WIM 0 -#define WIM_BOOT_NOT_OS_WIM 1 - - /* Index of the image in the WIM to use??? (This doesn't really make - * sense, since WIM files combine file data "blobs" for all images into - * a single table. Set to 1 if unsure...) */ - u32 wim_index; - - /* Byte offset of wim_file_name in this buffer, not including the - * preceding 'struct wof_external_info' (should be 16). */ - u32 wim_file_name_offset; - - /* Number of bytes in wim_file_name. */ - u32 wim_file_name_length; - - /* Full path to the WIM, e.g. "\??\C:\test-wimboot.wim". - * Does NOT need to be null terminated (MS docs claim otherwise). */ - wchar_t wim_file_name[]; -}; - -/***************************************************************************** - * - * --- FSCTL_REMOVE_OVERLAY --- - * - * Removes an external backing source from a volume. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 2 (FILE_WRITE_ACCESS) - * Function: 205 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: 'struct wof_external_info' followed by provider-specific data - * ('struct wim_provider_remove_overlay_input' in the case of WIM). - * - * Output buffer: None - * - * This ioctl must be performed on the volume handle, such as \\.\C: - */ -#define FSCTL_REMOVE_OVERLAY 0x98334 - -struct wim_provider_remove_overlay_input { - /* Integer ID that identifies the WIM. */ - u64 data_source_id; -}; - - -/***************************************************************************** - * - * --- FSCTL_UPDATE_OVERLAY --- - * - * Updates an overlay source for a volume. - * - * DeviceType: 9 (FILE_DEVICE_FILE_SYSTEM) - * Access: 2 (FILE_WRITE_ACCESS) - * Function: 206 - * Method: 0 (METHOD_BUFFERED) - * - * Input buffer: 'struct wof_external_info' followed by provider-specific data - * ('struct wim_provider_update_overlay_input' in the case of WIM). - * - * Output buffer: None - * - * This ioctl must be performed on the volume handle, such as \\.\C: - */ -#define FSCTL_UPDATE_OVERLAY 0x98338 - -struct wim_provider_update_overlay_input { - /* Integer ID that identifies the WIM data source. */ - u64 data_source_id; - - /* Byte offset of wim_file_name in this buffer, not including the - * preceding 'struct wof_external_info' (should be 16). */ - u32 wim_file_name_offset; - - /* Number of bytes in wim_file_name. */ - u32 wim_file_name_length; - - /* Full path to the WIM, e.g. "\??\C:\test-wimboot.wim". - * Does NOT need to be null terminated (MS docs claim otherwise). - * This WIM must be renamed from the original WIM, or at least be an - * identical copy of it! (Maybe the WIM's GUID field is checked.) */ - wchar_t wim_file_name[]; -}; - #endif /* _WOF_H_ */ 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/wimlib-1.13.4/include/wimlib.h new/wimlib-1.13.5/include/wimlib.h --- old/wimlib-1.13.4/include/wimlib.h 2021-04-19 06:35:01.000000000 +0200 +++ new/wimlib-1.13.5/include/wimlib.h 2021-12-19 20:19:31.000000000 +0100 @@ -11,7 +11,7 @@ /** * @mainpage * - * This is the documentation for the library interface of wimlib 1.13.4, a C + * This is the documentation for the library interface of wimlib 1.13.5, 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 4 +#define WIMLIB_PATCH_VERSION 5 #ifdef __cplusplus extern "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/wimlib-1.13.4/m4/nasm.m4 new/wimlib-1.13.5/m4/nasm.m4 --- old/wimlib-1.13.4/m4/nasm.m4 2016-11-27 10:30:38.000000000 +0100 +++ new/wimlib-1.13.5/m4/nasm.m4 2021-07-11 00:52:38.000000000 +0200 @@ -115,15 +115,15 @@ if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then AC_MSG_RESULT(yes) else - echo "configure: failed program was:" >&AC_FD_CC - cat conftest.asm >&AC_FD_CC + echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.asm >&AS_MESSAGE_LOG_FD rm -rf conftest* AC_MSG_RESULT(no) AC_MSG_ERROR([installation or configuration problem: assembler cannot create object files.]) fi AC_MSG_CHECKING([whether the linker accepts assembler output]) -try_nasm='${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.o $LIBS 1>&AC_FD_CC' +try_nasm='${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.o $LIBS 1>&AS_MESSAGE_LOG_FD' if AC_TRY_EVAL(try_nasm) && test -s conftest${ac_exeext}; then rm -rf conftest* AC_MSG_RESULT(yes) 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/wimlib-1.13.4/programs/mkwinpeimg new/wimlib-1.13.5/programs/mkwinpeimg --- old/wimlib-1.13.4/programs/mkwinpeimg 2021-04-19 06:35:44.000000000 +0200 +++ new/wimlib-1.13.5/programs/mkwinpeimg 2021-12-19 20:22:43.000000000 +0100 @@ -20,7 +20,7 @@ script_name="$(basename "$0")" PREFIX_REG="::" -WIMLIB_VERSION=1.13.4 +WIMLIB_VERSION=1.13.5 calc_columns () { STAT_COL=80 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/wimlib-1.13.4/src/blob_table.c new/wimlib-1.13.5/src/blob_table.c --- old/wimlib-1.13.4/src/blob_table.c 2019-12-07 04:01:24.000000000 +0100 +++ new/wimlib-1.13.5/src/blob_table.c 2021-07-05 09:01:12.000000000 +0200 @@ -36,6 +36,7 @@ #include "wimlib/assert.h" #include "wimlib/bitops.h" #include "wimlib/blob_table.h" +#include "wimlib/dentry.h" #include "wimlib/encoding.h" #include "wimlib/endianness.h" #include "wimlib/error.h" @@ -1259,7 +1260,7 @@ struct blob_descriptor * after_blob_hashed(struct blob_descriptor *blob, struct blob_descriptor **back_ptr, - struct blob_table *blob_table) + struct blob_table *blob_table, struct wim_inode *inode) { struct blob_descriptor *duplicate_blob; @@ -1273,7 +1274,16 @@ * this blob to the duplicate and update the reference to this * blob (from a stream) to point to the duplicate. The caller * is responsible for freeing @blob if needed. */ - wimlib_assert(duplicate_blob->size == blob->size); + if (duplicate_blob->size != blob->size) { + tchar hash_str[SHA1_HASH_SIZE * 2 + 1]; + + sprint_hash(blob->hash, hash_str); + WARNING("SHA-1 collision at \"%"TS"\"\n" + " (hash=%"TS", size=%"PRIu64", other_size=%"PRIu64").\n" + " File will be corrupted!", + inode_any_full_path(inode), hash_str, + blob->size, duplicate_blob->size); + } duplicate_blob->refcnt += blob->refcnt; blob->refcnt = 0; *back_ptr = duplicate_blob; @@ -1307,15 +1317,17 @@ struct blob_descriptor **blob_ret) { struct blob_descriptor **back_ptr; + struct wim_inode *inode; int ret; back_ptr = retrieve_pointer_to_unhashed_blob(blob); + inode = blob->back_inode; ret = sha1_blob(blob); if (ret) return ret; - *blob_ret = after_blob_hashed(blob, back_ptr, blob_table); + *blob_ret = after_blob_hashed(blob, back_ptr, blob_table, inode); 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/wimlib-1.13.4/src/export_image.c new/wimlib-1.13.5/src/export_image.c --- old/wimlib-1.13.4/src/export_image.c 2017-09-20 04:55:16.000000000 +0200 +++ new/wimlib-1.13.5/src/export_image.c 2021-11-23 03:12:04.000000000 +0100 @@ -179,6 +179,26 @@ /* Enable rollbacks */ for_blob_in_table(dest_wim->blob_table, blob_set_not_exported, NULL); + /* Forbid exports where the destination WIM already contains image(s) + * with the requested name(s). However, allow multi-image exports where + * there is a duplication among the source names only. */ + if (!(export_flags & WIMLIB_EXPORT_FLAG_NO_NAMES)) { + for (src_image = start_src_image; + src_image <= end_src_image; + src_image++) + { + const tchar *name = dest_name ? dest_name : + wimlib_get_image_name(src_wim, src_image); + + if (wimlib_image_name_in_use(dest_wim, name)) { + ERROR("There is already an image named \"%"TS"\" " + "in the destination WIM", name); + ret = WIMLIB_ERR_IMAGE_NAME_COLLISION; + goto out_rollback; + } + } + } + /* Export each requested image. */ for (src_image = start_src_image; src_image <= end_src_image; @@ -204,14 +224,6 @@ else next_dest_description = wimlib_get_image_description(src_wim, src_image); - /* Check for name conflict. */ - if (wimlib_image_name_in_use(dest_wim, next_dest_name)) { - ERROR("There is already an image named \"%"TS"\" " - "in the destination WIM", next_dest_name); - ret = WIMLIB_ERR_IMAGE_NAME_COLLISION; - goto out_rollback; - } - /* Load metadata for source image into memory. */ ret = select_wim_image(src_wim, src_image); if (ret) 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/wimlib-1.13.4/src/template.c new/wimlib-1.13.5/src/template.c --- old/wimlib-1.13.4/src/template.c 2017-09-20 04:55:17.000000000 +0200 +++ new/wimlib-1.13.5/src/template.c 2021-07-05 09:01:12.000000000 +0200 @@ -114,7 +114,8 @@ back_ptr = retrieve_pointer_to_unhashed_blob(blob); copy_hash(blob->hash, template_blob->hash); - if (after_blob_hashed(blob, back_ptr, blob_table) != blob) + if (after_blob_hashed(blob, back_ptr, blob_table, + inode) != blob) free_blob_descriptor(blob); } } 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/wimlib-1.13.4/src/wimboot.c new/wimlib-1.13.5/src/wimboot.c --- old/wimlib-1.13.4/src/wimboot.c 2020-05-24 20:22:36.000000000 +0200 +++ new/wimlib-1.13.5/src/wimboot.c 2021-07-05 08:13:51.000000000 +0200 @@ -11,7 +11,7 @@ */ /* - * Copyright (C) 2014-2016 Eric Biggers + * Copyright (C) 2014-2021 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 @@ -887,8 +887,9 @@ size_t wim_file_name_length; void *in; size_t insize; - struct wof_external_info *wof_info; - struct wim_provider_add_overlay_input *wim_info; + WOF_EXTERNAL_INFO *wof_info; + WIM_PROVIDER_ADD_OVERLAY_INPUT *wim_info; + wchar_t *WimFileName; HANDLE h; u64 data_source_id; DWORD bytes_returned; @@ -908,28 +909,25 @@ wim_file_name_length = sizeof(wchar_t) * (wim_path_nchars + prefix_nchars); - insize = sizeof(struct wof_external_info) + - sizeof(struct wim_provider_add_overlay_input) + - wim_file_name_length; - - in = MALLOC(insize); + insize = sizeof(*wof_info) + sizeof(*wim_info) + wim_file_name_length; + in = CALLOC(1, insize); if (!in) { ret = WIMLIB_ERR_NOMEM; goto out; } - wof_info = (struct wof_external_info *)in; - wof_info->version = WOF_CURRENT_VERSION; - wof_info->provider = WOF_PROVIDER_WIM; - - wim_info = (struct wim_provider_add_overlay_input *)(wof_info + 1); - wim_info->wim_type = WIM_BOOT_NOT_OS_WIM; - wim_info->wim_index = image; - wim_info->wim_file_name_offset = offsetof(struct wim_provider_add_overlay_input, - wim_file_name); - wim_info->wim_file_name_length = wim_file_name_length; - wmemcpy(&wim_info->wim_file_name[0], prefix, prefix_nchars); - wmemcpy(&wim_info->wim_file_name[prefix_nchars], wim_path, wim_path_nchars); + wof_info = (WOF_EXTERNAL_INFO *)in; + wof_info->Version = WOF_CURRENT_VERSION; + wof_info->Provider = WOF_PROVIDER_WIM; + + wim_info = (WIM_PROVIDER_ADD_OVERLAY_INPUT *)(wof_info + 1); + wim_info->WimType = WIM_BOOT_NOT_OS_WIM; + wim_info->WimIndex = image; + wim_info->WimFileNameOffset = sizeof(*wim_info); + wim_info->WimFileNameLength = wim_file_name_length; + WimFileName = (wchar_t *)(wim_info + 1); + wmemcpy(WimFileName, prefix, prefix_nchars); + wmemcpy(&WimFileName[prefix_nchars], wim_path, wim_path_nchars); retry_ioctl: h = open_file(drive_path, GENERIC_WRITE); @@ -1027,20 +1025,20 @@ * using FSCTL_SET_EXTERNAL_BACKING. */ unsigned int max_retries = 4; struct { - struct wof_external_info wof_info; - struct wim_provider_external_info wim_info; + WOF_EXTERNAL_INFO wof_info; + WIM_PROVIDER_EXTERNAL_INFO wim_info; } in; retry: memset(&in, 0, sizeof(in)); - in.wof_info.version = WOF_CURRENT_VERSION; - in.wof_info.provider = WOF_PROVIDER_WIM; + in.wof_info.Version = WOF_CURRENT_VERSION; + in.wof_info.Provider = WOF_PROVIDER_WIM; - in.wim_info.version = WIM_PROVIDER_CURRENT_VERSION; - in.wim_info.flags = 0; - in.wim_info.data_source_id = data_source_id; - copy_hash(in.wim_info.unnamed_data_stream_hash, blob->hash); + in.wim_info.Version = WIM_PROVIDER_CURRENT_VERSION; + in.wim_info.Flags = 0; + in.wim_info.DataSourceId.QuadPart = data_source_id; + copy_hash(in.wim_info.ResourceHash, blob->hash); /* blob_table_hash is not necessary */ @@ -1074,20 +1072,20 @@ le16 rpdatalen; le16 rpreserved; } hdr; - struct wof_external_info wof_info; + WOF_EXTERNAL_INFO wof_info; struct wim_provider_rpdata wim_info; } in; STATIC_ASSERT(sizeof(in) == 8 + - sizeof(struct wof_external_info) + + sizeof(WOF_EXTERNAL_INFO) + sizeof(struct wim_provider_rpdata)); in.hdr.rptag = WIM_IO_REPARSE_TAG_WOF; in.hdr.rpdatalen = sizeof(in) - sizeof(in.hdr); in.hdr.rpreserved = 0; - in.wof_info.version = WOF_CURRENT_VERSION; - in.wof_info.provider = WOF_PROVIDER_WIM; + in.wof_info.Version = WOF_CURRENT_VERSION; + in.wof_info.Provider = WOF_PROVIDER_WIM; in.wim_info.version = 2; in.wim_info.flags = 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/wimlib-1.13.4/src/win32_apply.c new/wimlib-1.13.5/src/win32_apply.c --- old/wimlib-1.13.4/src/win32_apply.c 2020-06-05 03:26:37.000000000 +0200 +++ new/wimlib-1.13.5/src/win32_apply.c 2021-07-05 08:13:51.000000000 +0200 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2013-2020 Eric Biggers + * Copyright (C) 2013-2021 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 @@ -2424,15 +2424,15 @@ get_system_compression_format(int extract_flags) { if (extract_flags & WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K) - return FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K; + return FILE_PROVIDER_COMPRESSION_XPRESS4K; if (extract_flags & WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS8K) - return FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS8K; + return FILE_PROVIDER_COMPRESSION_XPRESS8K; if (extract_flags & WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS16K) - return FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS16K; + return FILE_PROVIDER_COMPRESSION_XPRESS16K; - return FILE_PROVIDER_COMPRESSION_FORMAT_LZX; + return FILE_PROVIDER_COMPRESSION_LZX; } @@ -2440,11 +2440,11 @@ get_system_compression_format_string(int format) { switch (format) { - case FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K: + case FILE_PROVIDER_COMPRESSION_XPRESS4K: return L"XPRESS4K"; - case FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS8K: + case FILE_PROVIDER_COMPRESSION_XPRESS8K: return L"XPRESS8K"; - case FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS16K: + case FILE_PROVIDER_COMPRESSION_XPRESS16K: return L"XPRESS16K"; default: return L"LZX"; @@ -2456,16 +2456,16 @@ { NTSTATUS status; struct { - struct wof_external_info wof_info; - struct file_provider_external_info file_info; + WOF_EXTERNAL_INFO wof_info; + FILE_PROVIDER_EXTERNAL_INFO_V1 file_info; } in = { .wof_info = { - .version = WOF_CURRENT_VERSION, - .provider = WOF_PROVIDER_FILE, + .Version = WOF_CURRENT_VERSION, + .Provider = WOF_PROVIDER_FILE, }, .file_info = { - .version = FILE_PROVIDER_CURRENT_VERSION, - .compression_format = format, + .Version = FILE_PROVIDER_CURRENT_VERSION, + .Algorithm = format, }, }; @@ -2528,7 +2528,7 @@ bootloader_supports_compression_format(struct win32_apply_ctx *ctx, int format) { /* Windows 10 and later support XPRESS4K */ - if (format == FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K) + if (format == FILE_PROVIDER_COMPRESSION_XPRESS4K) return ctx->windows_build_number >= 10240; /* @@ -2573,7 +2573,7 @@ warned = (ctx->num_system_compression_exclusions++ > 0); if (bootloader_supports_compression_format(ctx, - FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K)) + FILE_PROVIDER_COMPRESSION_XPRESS4K)) { /* Force to XPRESS4K */ if (!warned) { @@ -2586,7 +2586,7 @@ " you requested.", get_system_compression_format_string(format)); } - format = FILE_PROVIDER_COMPRESSION_FORMAT_XPRESS4K; + format = FILE_PROVIDER_COMPRESSION_XPRESS4K; break; } else { /* Force to uncompressed */ 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/wimlib-1.13.4/src/win32_capture.c new/wimlib-1.13.5/src/win32_capture.c --- old/wimlib-1.13.4/src/win32_capture.c 2021-04-06 21:48:32.000000000 +0200 +++ new/wimlib-1.13.5/src/win32_capture.c 2021-07-05 09:01:12.000000000 +0200 @@ -5,7 +5,7 @@ */ /* - * Copyright (C) 2013-2018 Eric Biggers + * Copyright (C) 2013-2021 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 @@ -1518,7 +1518,7 @@ if (inode->i_attributes & FILE_ATTRIBUTE_REPARSE_POINT) { struct reparse_buffer_disk rpbuf; struct { - struct wof_external_info wof_info; + WOF_EXTERNAL_INFO wof_info; struct wim_provider_rpdata wim_info; } *rpdata = (void *)rpbuf.rpdata; struct blob_descriptor *reparse_blob; @@ -1536,8 +1536,8 @@ if (ret) return ret; - if (rpdata->wof_info.version != WOF_CURRENT_VERSION || - rpdata->wof_info.provider != WOF_PROVIDER_WIM || + if (rpdata->wof_info.Version != WOF_CURRENT_VERSION || + rpdata->wof_info.Provider != WOF_PROVIDER_WIM || rpdata->wim_info.version != 2) return 0; /* Not a WIM-backed file */ @@ -1545,8 +1545,8 @@ copy_hash(hash, rpdata->wim_info.unnamed_data_stream_hash); } else { struct { - struct wof_external_info wof_info; - struct wim_provider_external_info wim_info; + WOF_EXTERNAL_INFO wof_info; + WIM_PROVIDER_EXTERNAL_INFO wim_info; } out; NTSTATUS status; @@ -1580,13 +1580,13 @@ } /* Is this file backed by a WIM? */ - if (out.wof_info.version != WOF_CURRENT_VERSION || - out.wof_info.provider != WOF_PROVIDER_WIM || - out.wim_info.version != WIM_PROVIDER_CURRENT_VERSION) + if (out.wof_info.Version != WOF_CURRENT_VERSION || + out.wof_info.Provider != WOF_PROVIDER_WIM || + out.wim_info.Version != WIM_PROVIDER_CURRENT_VERSION) return 0; /* Okay, this is a WIM backed file. Get its SHA-1 hash. */ - copy_hash(hash, out.wim_info.unnamed_data_stream_hash); + copy_hash(hash, out.wim_info.ResourceHash); } /* If the file's unnamed data stream is nonempty, then fill in its hash @@ -1604,7 +1604,8 @@ return 0; back_ptr = retrieve_pointer_to_unhashed_blob(blob); copy_hash(blob->hash, hash); - if (after_blob_hashed(blob, back_ptr, blob_table) != blob) + if (after_blob_hashed(blob, back_ptr, blob_table, + inode) != blob) free_blob_descriptor(blob); } 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/wimlib-1.13.4/tests/wlfuzz.c new/wimlib-1.13.5/tests/wlfuzz.c --- old/wimlib-1.13.4/tests/wlfuzz.c 2019-12-07 04:01:24.000000000 +0100 +++ new/wimlib-1.13.5/tests/wlfuzz.c 2021-07-05 08:13:51.000000000 +0200 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2015-2016 Eric Biggers + * Copyright (C) 2015-2021 Eric Biggers * * 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 @@ -820,10 +820,10 @@ HANDLE h; void *overlay_list; DWORD bytes_returned; - const struct wim_provider_overlay_entry *entry; + const WIM_PROVIDER_OVERLAY_ENTRY *entry; struct { - struct wof_external_info wof_info; - struct wim_provider_remove_overlay_input wim; + WOF_EXTERNAL_INFO wof_info; + WIM_PROVIDER_REMOVE_OVERLAY_INPUT wim; } in; wsprintf(volume, L"\\\\.\\%lc:", drive_letter); @@ -837,11 +837,11 @@ overlay_list = malloc(32768); ASSERT(overlay_list != NULL, "out of memory"); - in.wof_info.version = WOF_CURRENT_VERSION; - in.wof_info.provider = WOF_PROVIDER_WIM; + in.wof_info.Version = WOF_CURRENT_VERSION; + in.wof_info.Provider = WOF_PROVIDER_WIM; if (!DeviceIoControl(h, FSCTL_ENUM_OVERLAY, - &in, sizeof(struct wof_external_info), + &in, sizeof(WOF_EXTERNAL_INFO), overlay_list, 32768, &bytes_returned, NULL)) { ASSERT(GetLastError() == ERROR_INVALID_FUNCTION || @@ -854,16 +854,16 @@ entry = overlay_list; for (;;) { printf("Unregistering data source ID %"PRIu64"\n", - entry->data_source_id); - in.wim.data_source_id = entry->data_source_id; + entry->DataSourceId.QuadPart); + in.wim.DataSourceId = entry->DataSourceId; ASSERT(DeviceIoControl(h, FSCTL_REMOVE_OVERLAY, &in, sizeof(in), NULL, 0, &bytes_returned, NULL), "FSCTL_REMOVE_OVERLAY failed; error=%u", (unsigned )GetLastError()); - if (entry->next_entry_offset == 0) + if (entry->NextEntryOffset == 0) break; - entry = (const struct wim_provider_overlay_entry *) - ((const uint8_t *)entry + entry->next_entry_offset); + entry = (const WIM_PROVIDER_OVERLAY_ENTRY *) + ((const uint8_t *)entry + entry->NextEntryOffset); } free(overlay_list); CloseHandle(h);