]> wimlib.net Git - wimlib/log
wimlib
13 months agoInclude windows-build.sh in the release tarballs
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
Include windows-build.sh in the release tarballs

13 months agoRename make-windows-release to windows-build.sh
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
Rename make-windows-release to windows-build.sh

This has turned into a much more generic build script than it was
originally, so rename it appropriately.

13 months agoAdd a gitattributes file
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
Add a gitattributes file

This is needed to avoid all files showing as "modified" on Windows.

13 months agoci.yml: upload Windows binaries when done
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
ci.yml: upload Windows binaries when done

13 months agoci.yml: add ARM64 Windows build
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
ci.yml: add ARM64 Windows build

13 months agomake-windows-release: support cross-compiling for ARM64 in MSYS2
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
make-windows-release: support cross-compiling for ARM64 in MSYS2

Cross-compiling for ARM64 is not possible with MSYS2 CLANGARM64 out of
the box, but it is possible to do by downloading and using a prebuilt
toolchain from https://github.com/mstorsjo/llvm-mingw.  Make the
'make-windows-release' script support doing this.

Suggested at https://wimlib.net/forums/viewtopic.php?p=1488#p1488

13 months agomake-windows-release: split into functions for readability
Eric Biggers [Fri, 31 Mar 2023 07:15:02 +0000 (00:15 -0700)]
make-windows-release: split into functions for readability

13 months agoxml_windows.c: update the language ID map
Eric Biggers [Thu, 30 Mar 2023 08:16:52 +0000 (01:16 -0700)]
xml_windows.c: update the language ID map

13 months agoxml: fix wimlib_set_image_property()
Eric Biggers [Thu, 30 Mar 2023 08:16:52 +0000 (01:16 -0700)]
xml: fix wimlib_set_image_property()

The recent XML changes introduced a bug where
wimlib_set_image_property() rejected values of property_name containing
'/', '[', or ']', which are part of the "path" syntax.

13 months agoRemove the outdated 'INSTALL' file
Eric Biggers [Thu, 30 Mar 2023 07:58:20 +0000 (00:58 -0700)]
Remove the outdated 'INSTALL' file

The INSTALL file was an old version of the generic GNU installation
instructions that was not customized to this package at all and was not
referenced by any other documentation.  It's unlikely to be useful.

13 months agowin32_*.c: avoid some format string warnings
Eric Biggers [Thu, 30 Mar 2023 07:34:14 +0000 (00:34 -0700)]
win32_*.c: avoid some format string warnings

These aren't real issues as all the types in question are 32-bit ints,
but fixing these will prevent warnings later if we're ever able to
enable __attribute__((format)) on Windows (hopefully due to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64862 being fixed).

13 months agocompiler.h: remove _cold_attribute
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: remove _cold_attribute

This abstraction layer serves no purpose other than supporting gcc 4.3
and earlier, which is too old to bother supporting.  Just use
__attribute__((cold)) directly.

13 months agocompiler.h: remove _unused_attribute
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: remove _unused_attribute

This abstraction layer serves no purpose.  Just use
__attribute__((unused)) directly.

13 months agocompiler.h: remove _may_alias_attribute
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: remove _may_alias_attribute

This abstraction layer serves no purpose.  Just use
__attribute__((may_alias)) directly.

13 months agocompiler.h: remove _packed_attribute
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: remove _packed_attribute

This abstraction layer serves no purpose.  Just use
__attribute__((packed)) directly.

13 months agocompiler.h: remove _aligned_attribute
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: remove _aligned_attribute

This abstraction layer serves no purpose.  Just use
__attribute__((aligned(n))) directly.

13 months agocompiler.h: remove typeof
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: remove typeof

wimlib is compiled with -std=gnu99, so this is unnecessary.

13 months agoendianness.h: use builtins directly
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
endianness.h: use builtins directly

The compiler_bswap* macros serve no real purpose.  In endianness.h, just
use the builtins directly.

13 months agobitops: use builtins directly
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
bitops: use builtins directly

The compiler_bs{r,f}{32,64} macros serve no real purpose.  In bitops.h,
just use the builtins directly.

13 months agocompiler.h: define UNALIGNED_ACCESS_IS_FAST on powerpc64
Eric Biggers [Thu, 30 Mar 2023 07:00:56 +0000 (00:00 -0700)]
compiler.h: define UNALIGNED_ACCESS_IS_FAST on powerpc64

13 months agoerror.h: cleanup debris from removal of --disable-error-messages
Eric Biggers [Thu, 30 Mar 2023 07:00:55 +0000 (00:00 -0700)]
error.h: cleanup debris from removal of --disable-error-messages

13 months ago'extern' in function declarations is redundant
Eric Biggers [Thu, 30 Mar 2023 07:00:55 +0000 (00:00 -0700)]
'extern' in function declarations is redundant

13 months agoxml: miscellaneous cleanups
Eric Biggers [Thu, 30 Mar 2023 07:00:55 +0000 (00:00 -0700)]
xml: miscellaneous cleanups

13 months agoci.yml: install the ntfs-3g package
Eric Biggers [Tue, 28 Mar 2023 06:14:42 +0000 (23:14 -0700)]
ci.yml: install the ntfs-3g package

Install ntfs-3g so that test-imagex-ntfs can run.  While we're here,
also install pkgconf (new name) instead of pkg-config (old name).

13 months agoci.yml: use -fno-sanitize-recover when using -fsanitize
Eric Biggers [Tue, 28 Mar 2023 06:14:42 +0000 (23:14 -0700)]
ci.yml: use -fno-sanitize-recover when using -fsanitize

Unlike ASAN, by default UBSAN doesn't abort the program on error but
instead just prints an error message.  Use -fno-sanitize-recover to
explicitly request the abort-on-error behavior for testing purposes.

13 months agotest-imagex-ntfs: find mkntfs on Debian
Eric Biggers [Tue, 28 Mar 2023 06:14:42 +0000 (23:14 -0700)]
test-imagex-ntfs: find mkntfs on Debian

Add /sbin to the PATH so that mkntfs is found on Debian.

13 months agoencoding.c: avoid UBSAN warning in convert_string()
Eric Biggers [Tue, 28 Mar 2023 06:14:42 +0000 (23:14 -0700)]
encoding.c: avoid UBSAN warning in convert_string()

When 'in == NULL && in_nbytes == 0', the statement 'in_end = in +
in_nbytes' executes 'NULL + 0'.  clang's UndefinedBehaviorSanitizer
complains that this is undefined:

    src/encoding.c:223:31: runtime error: applying zero offset to null pointer

This is questionable, but let's avoid it...

13 months agosha1.c: fix arm64 build with clang 12 and earlier
Eric Biggers [Tue, 28 Mar 2023 06:14:41 +0000 (23:14 -0700)]
sha1.c: fix arm64 build with clang 12 and earlier

clang 12 and earlier only defined the SHA-1 intrinsics when
__ARM_FEATURE_CRYPTO is defined.

13 months agomake-windows-release: support MSYS2 clang environments
Eric Biggers [Mon, 27 Mar 2023 05:30:54 +0000 (22:30 -0700)]
make-windows-release: support MSYS2 clang environments

Update tools/make-windows-release to support the CLANG32 and CLANG64
MSYS2 environments, and update ci.yml to test them in GitHub Actions.

Also try to support CLANGARM64, though I have no way to test that yet.

Finally, make a couple more tweaks to make-windows-release:

- Run the configure script unless it's explicitly requested to be
  skipped, as the previous logic was too fragile.

- Default to no docs and no zip.

13 months agoFix clang warnings about inconsistent use of dllexport
Eric Biggers [Mon, 27 Mar 2023 05:30:54 +0000 (22:30 -0700)]
Fix clang warnings about inconsistent use of dllexport

In MSYS2, clang emits many warnings like the following:

    warning: redeclaration of 'wimlib_add_empty_image' should not add 'dllexport' attribute

The problem is that dllexport is used when defining the wimlib API
functions but not when declaring them.  Fix this by using dllexport in
both places.

13 months agoAdd tools/get-version-number to the distribution tarballs
Eric Biggers [Mon, 27 Mar 2023 05:30:54 +0000 (22:30 -0700)]
Add tools/get-version-number to the distribution tarballs

Without this, 'autoreconf' only works in the git repo, not in tarballs.

13 months agomake-windows-release: fix generation of the cmd files
Eric Biggers [Mon, 27 Mar 2023 00:46:45 +0000 (17:46 -0700)]
make-windows-release: fix generation of the cmd files

13 months agoImprove fuzz testing
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Improve fuzz testing

- Convert fuzzing scripts from afl-fuzz to libFuzzer
- Add xml and wim fuzzers, including malloc failure injection
- Fuzz for 2 minutes as part of the GitHub Actions CI

13 months agoPrevent huge memory allocations from fuzzed header fields
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Prevent huge memory allocations from fuzzed header fields

13 months agosecurity.c: avoid NULL + 0 UBSAN error
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
security.c: avoid NULL + 0 UBSAN error

UBSAN complains about adding 0 to NULL.  Avoid this.

13 months agoREADME.WINDOWS: simplify the build procedure
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
README.WINDOWS: simplify the build procedure

Rework the build directions to use MSYS2 instead of Cygwin and to take
advantage of the improved make-windows-release script.

13 months agoREADME: remove an unnecessary notice
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
README: remove an unnecessary notice

The "copyright years may be listed using range notation" notice is
recommended by the GNU project, but most other people don't consider it
to be necessary or meaningful.

13 months agoci.yml: use make-windows-release script on Windows
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
ci.yml: use make-windows-release script on Windows

13 months agoImprove the make-windows-release script
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Improve the make-windows-release script

- Automatically bootstrap the repository if needed
- Add --no-zip and --no-docs options
- Add --install-msys2-packages to install the needed MSYS2 packages
- Autodetect the architecture when using MSYS2
- Use 'strip' instead of ${ARCH}-w64-mingw32-strip, for compatibility
  with MSYS2
- Make it pass 'shellcheck'
- Other cleanups

13 months agoEliminate the dependency on libxml2
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Eliminate the dependency on libxml2

libxml2 is the only remaining third-party library that Windows builds of
wimlib need.  It's a bit of a pain to have to download it, build it, and
trick libtool into linking it into the resulting DLL.  It then
constitutes a significant part of the size of the resulting DLL, even
with the minimal libxml2 configuration options being used.

In reality, WIM files only use a small subset of XML containing the most
commonly used XML features.  Using a full-featured XML library (that
supports "features" like External Entities that we have to remember to
disable) is a bit dangerous and not actually necessary.  7-Zip's WIM
support, for example, just uses a very minimal home-brew XML processor.

Another issue is that the libxml2 API always uses UTF-8, which causes
the conversion UTF-16LE => UTF-8 => UTF-16LE to be needed on Windows.
This isn't really an "issue", per se, but it shouldn't be necessary.

Finally, wimlib was integrating with libxml2 at a low level via the tree
API, and it overlooked some things.  For example, libxml2 trees have
separate CDATA and TEXT nodes, but wimlib was only looking at TEXT, so
CDATA was ignored.  It was also possible for wimlib to create a document
containing control characters, which is not valid XML so it could not be
read.  These weren't very important issues, but the point is, just using
an XML library doesn't solve quite as many problems as one would hope...

Therefore, just add a simple XML 1.0 processor directly in the source
code.  It handles all XML features that are used in WIM files, plus a
bit more for futureproofing.  It's also faster than libxml2.

13 months agotest_support.c: add some missing endianness conversions
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
test_support.c: add some missing endianness conversions

13 months agoAdd configure~ to gitignore
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Add configure~ to gitignore

13 months agoRemove some outdated scripts
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Remove some outdated scripts

13 months agoSimplify check for __NR_getrandom
Eric Biggers [Mon, 27 Mar 2023 00:25:46 +0000 (17:25 -0700)]
Simplify check for __NR_getrandom

There is no need for the configure script to check whether
__NR_getrandom is defined, as the source code can just use #ifdef.

13 months agosha1.c: fix arm64 build with clang 16
Eric Biggers [Thu, 23 Mar 2023 08:07:16 +0000 (01:07 -0700)]
sha1.c: fix arm64 build with clang 16

Reported at https://wimlib.net/forums/viewtopic.php?p=1480#p1480

13 months agoDon't touch config.rpath in bootstrap script
Eric Biggers [Mon, 20 Mar 2023 03:59:17 +0000 (20:59 -0700)]
Don't touch config.rpath in bootstrap script

This has no purpose.

13 months agoUpdate some copyright years
Eric Biggers [Mon, 20 Mar 2023 03:59:17 +0000 (20:59 -0700)]
Update some copyright years

13 months agoConsistently use _WIN32 instead of __WIN32__
Eric Biggers [Mon, 20 Mar 2023 03:59:17 +0000 (20:59 -0700)]
Consistently use _WIN32 instead of __WIN32__

_WIN32 works with all compilers, while __WIN32__ is MinGW-specific.
This project used __WIN32__ in files that only support MinGW, and _WIN32
in other files such as the library header and example programs.  One
place even used WIN32.  Avoid this unnecessary complication by just
always using _WIN32.

13 months agoUse native Windows threads on Windows
Eric Biggers [Mon, 20 Mar 2023 03:59:16 +0000 (20:59 -0700)]
Use native Windows threads on Windows

This makes building wimlib for Windows easier, as it no longer depends
on winpthreads.

13 months agoExplicitly define _WIN32_WINNT
Eric Biggers [Mon, 20 Mar 2023 03:59:16 +0000 (20:59 -0700)]
Explicitly define _WIN32_WINNT

Explicitly define _WIN32_WINNT to correspond to the minimum Windows
version we are supporting (currently Windows Vista).

13 months agoRemove support for Windows XP
Eric Biggers [Mon, 20 Mar 2023 03:59:16 +0000 (20:59 -0700)]
Remove support for Windows XP

13 months agoUpdate NEWS
Eric Biggers [Sat, 18 Mar 2023 07:31:39 +0000 (00:31 -0700)]
Update NEWS

13 months agoAdd a configuration file for GitHub Actions
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Add a configuration file for GitHub Actions

13 months agoFix build with very latest MinGW
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Fix build with very latest MinGW

MinGW's winioctl.h has added the FSCTL_*_OVERLAY constants but not the
structs they use, so make sure to define the structs ourselves.

13 months agoSkip a test case on macOS
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Skip a test case on macOS

13 months agoMake the 'tree-cmp' program build on macOS
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Make the 'tree-cmp' program build on macOS

13 months agoFix 'MAX' redefined warning on macOS
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Fix 'MAX' redefined warning on macOS

13 months agoUpdate winpthreads in Windows binaries to 10.0.0
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Update winpthreads in Windows binaries to 10.0.0

13 months agoUpdate libxml in Windows binaries to 2.10.3
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Update libxml in Windows binaries to 2.10.3

13 months agoAdd a basic test for wimverify and the SHA-1 code
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Add a basic test for wimverify and the SHA-1 code

13 months agoSHA-1 rework
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
SHA-1 rework

First, add new SHA-1 implementations that use the x86 and ARM SHA-1
intrinsics, so that these can be taken advantage of in Windows builds.

Second, replace sha1-ssse3.asm with an easier-to-maintain implementation
using intrinsics, and build a copy of it with AVX+BMI2 enabled.

Finally, now that better SHA-1 implementations are included, support for
OpenSSL's SHA-1 is no longer very useful, so remove it.

I considered going in the other direction: removing all SHA-1 code and
relying completely on external libraries.  Some issues with that are:

- Statically linking OpenSSL into libwim.dll on Windows increases the
  binary size by over 4x, even when using "no-autoalginit".

- OpenSSL has deprecated its easy-to-use SHA-1 API in favor of the EVP
  API, which is harder to use (everything can fail) and slower.

- Windows CryptoAPI is Windows-only (duh) and also has a complex, slow
  API where every function can fail, so that's not great either.

- SHA-1 is considered insecure these days, so it may be unwise to count
  on its continued support in crypto libraries into the future.

So, let's just do it ourselves...

13 months agoAdd and use SHA1_HASH_STRING_LEN constant
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Add and use SHA1_HASH_STRING_LEN constant

13 months agoAdd unaligned access helpers for be32
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Add unaligned access helpers for be32

13 months agoRename sha1_buffer() to simply sha1()
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Rename sha1_buffer() to simply sha1()

13 months agoImprove runtime CPU feature detection
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Improve runtime CPU feature detection

- Make wimlib_global_init() do the CPU feature detection, so that it
  doesn't have to be done on-demand later.

- Add support for detecting the x86 SHA extensions.

- Add support for detecting ARMv8 SHA1 instructions on Linux, Windows,
  and macOS.  (64-bit only for now.)

- Allow disabling features via an environment variable for testing.

- Remove some unused functionality.

13 months agoCall wimlib_global_init() when creating compressors and decompressors
Eric Biggers [Sat, 18 Mar 2023 07:17:54 +0000 (00:17 -0700)]
Call wimlib_global_init() when creating compressors and decompressors

All nontrivial API functions are supposed to call wimlib_global_init().
wimlib_create_compressor() and wimlib_create_decompressor() did not.
Make them do so, so that CPU feature detection can be moved to
wimlib_global_init().

15 months agowimsplit: use uint64_t for part_size
Eric Biggers [Wed, 11 Jan 2023 06:56:14 +0000 (22:56 -0800)]
wimsplit: use uint64_t for part_size

Reported at https://wimlib.net/forums/viewtopic.php?t=640

15 months agoSuppress deprecation warnings for OpenSSL's SHA1_* functions
Eric Biggers [Wed, 11 Jan 2023 06:56:14 +0000 (22:56 -0800)]
Suppress deprecation warnings for OpenSSL's SHA1_* functions

19 months agov1.13.6 v1.13.6
Eric Biggers [Sun, 11 Sep 2022 17:34:12 +0000 (12:34 -0500)]
v1.13.6

19 months agotools/make-releases: use libdeflate-gzip instead of 7z
Eric Biggers [Sun, 11 Sep 2022 17:34:12 +0000 (12:34 -0500)]
tools/make-releases: use libdeflate-gzip instead of 7z

19 months agotools/afl-fuzz: add gitignore file
Eric Biggers [Sun, 11 Sep 2022 17:34:12 +0000 (12:34 -0500)]
tools/afl-fuzz: add gitignore file

19 months agotools/afl-fuzz: fix ctype calculation
Eric Biggers [Sun, 11 Sep 2022 17:34:12 +0000 (12:34 -0500)]
tools/afl-fuzz: fix ctype calculation

19 months agoMakefile.am: don't explicitly link to msvcrt
Eric Biggers [Sun, 11 Sep 2022 17:34:12 +0000 (12:34 -0500)]
Makefile.am: don't explicitly link to msvcrt

The latest MinGW versions don't want this, and it causes an error about
the lib not being found.

21 months agotools: add afl-fuzz files
Eric Biggers [Fri, 5 Aug 2022 05:23:23 +0000 (22:23 -0700)]
tools: add afl-fuzz files

21 months agowof.h: guard by __WIN32__
Eric Biggers [Fri, 5 Aug 2022 05:03:21 +0000 (22:03 -0700)]
wof.h: guard by __WIN32__

This is needed for the wlfuzz program to compile on non-Windows.

21 months agowimlib.h: remove duplicate 'the'
Eric Biggers [Sun, 31 Jul 2022 02:10:07 +0000 (19:10 -0700)]
wimlib.h: remove duplicate 'the'

21 months agoRemove some unnecessary configure options
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
Remove some unnecessary configure options

Remove support for the following options which aren't really useful and
probably aren't being used by anyone:

* --disable-assertions
* --disable-error-messages
* --disable-multithreaded-compression

21 months agoDon't bother with malloc function attribute
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
Don't bother with malloc function attribute

21 months agomatchfinder_common: sync with libdeflate
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
matchfinder_common: sync with libdeflate

21 months agocompress_common: sync with libdeflate
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
compress_common: sync with libdeflate

21 months agobt_matchfinder: sync with libdeflate
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
bt_matchfinder: sync with libdeflate

21 months agohc_matchfinder: sync with libdeflate
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
hc_matchfinder: sync with libdeflate

21 months agoUse MIT license instead of CC0
Eric Biggers [Sun, 31 Jul 2022 02:03:42 +0000 (19:03 -0700)]
Use MIT license instead of CC0

CC0 has continued to fall out of favor due to the patents clause
(https://lwn.net/ml/fedora-legal/CAC1cPGw1xScGAXo-0NRs92zFB7ptRxTt=oCYi0BxfZDfAgUtYQ@mail.gmail.com).
Years ago I released some source files in this project (not the whole
project) under CC0.  Use the MIT license for these files instead.

Note that this requires claiming copyright on the latest version of
these files.  Of course, previous versions of these files remain public
domain where legally recognized; this is *not* in any way an attempt to
"revoke" the public domain status of previous versions.

21 months agoReduce MAX_OPEN_FILES to 128 on macOS where the default limit is 256
Mathieu Schroeter [Mon, 11 Jul 2022 12:05:48 +0000 (14:05 +0200)]
Reduce MAX_OPEN_FILES to 128 on macOS where the default limit is 256

2 years agowimlib_iterate_dir_tree(): don't checksum unhashed blobs
Eric Biggers [Mon, 3 Jan 2022 20:33:20 +0000 (14:33 -0600)]
wimlib_iterate_dir_tree(): don't checksum unhashed blobs

wimlib_iterate_dir_tree() on a modified-but-not-committed image is very
slow because it checksums all unhashed blobs.  This was originally
implemented by commit 681faad85f73 ("wimlib_iterate_dir_tree(): checksum
unhashed blobs"), presumably to make the sha1_hash field always valid.
However, I can't remember a real use case for this.  The current
behavior is causing problems, so let's just revert it and update the
documentation accordingly.

Reported at https://wimlib.net/forums/viewtopic.php?f=1&t=572

2 years agowimsplit: don't print success message on failure
Eric Biggers [Mon, 3 Jan 2022 19:53:34 +0000 (13:53 -0600)]
wimsplit: don't print success message on failure

2 years agov1.13.5 v1.13.5
Eric Biggers [Sun, 19 Dec 2021 19:06:07 +0000 (13:06 -0600)]
v1.13.5

2 years agoUpdate libxml to 2.9.12 for Windows binaries
Eric Biggers [Sun, 19 Dec 2021 18:55:47 +0000 (12:55 -0600)]
Update libxml to 2.9.12 for Windows binaries

2 years agoexport_image.c: allow duplicate image names in source WIM
Eric Biggers [Tue, 23 Nov 2021 01:55:42 +0000 (17:55 -0800)]
export_image.c: allow duplicate image names in source WIM

Reported at https://wimlib.net/forums/viewtopic.php?f=1&t=568.  DISM can
create WIM files containing images with duplicate names, whereas wimlib
enforces unique image names in certain cases such as adding images,
exporting images, and changing image names.  This behavior generally
seems fine, but the "export" check is too strict: an export of "all"
images will fail if the source WIM contains duplicate names.

Fix this by making wimlib_export_image() allow duplicate image names in
the source WIM, provided that they don't collide with image names that
already exist in the destination WIM.

2 years agoconfigure.ac: fix trailing newline issue
Eric Biggers [Tue, 3 Aug 2021 04:53:42 +0000 (21:53 -0700)]
configure.ac: fix trailing newline issue

Reported at https://wimlib.net/forums/viewtopic.php?f=1&t=562.
m4_esyscmd() needs to be m4_esyscmd_s(), so that the version string
doesn't get a trailing newline.  It works for me either way, but that's
probably because in autoconf 2.70, AC_INIT started trimming extra
whitespace from its arguments (as per the release notes at
https://lists.gnu.org/archive/html/autotools-announce/2020-12/msg00001.html).
So presumably this fix is needed for older versions of autoconf.

2 years agoconfigure.ac: generate version number from git commit and tags
Eric Biggers [Sat, 10 Jul 2021 22:47:57 +0000 (17:47 -0500)]
configure.ac: generate version number from git commit and tags

This should hopefully make it less confusing when building from the git
repository.  Previously, when doing so the version number would always
be that of the last official release.

2 years agonasm.m4: use AS_MESSAGE_LOG_FD
Eric Biggers [Sat, 10 Jul 2021 22:51:26 +0000 (17:51 -0500)]
nasm.m4: use AS_MESSAGE_LOG_FD

Address the following warning when running autoreconf:

    configure.ac:191: warning: The macro `AC_FD_CC' is obsolete.
    configure.ac:191: You should run autoupdate.
    ./lib/autoconf/general.m4:399: AC_FD_CC is expanded from...
    m4/nasm.m4:4: AC_PROG_NASM is expanded from...
    configure.ac:191: the top level

2 years agov1.13.5-BETA1
Eric Biggers [Sat, 10 Jul 2021 01:26:16 +0000 (20:26 -0500)]
v1.13.5-BETA1

2 years agoREADME.WINDOWS: clarify how to build master branch
Eric Biggers [Sat, 10 Jul 2021 00:56:49 +0000 (17:56 -0700)]
README.WINDOWS: clarify how to build master branch

2 years agoWarn rather than abort if SHA-1 is same but size is different
Eric Biggers [Mon, 5 Jul 2021 06:03:50 +0000 (23:03 -0700)]
Warn rather than abort if SHA-1 is same but size is different

Assertions should only be used for bugs in wimlib, but this scenario can
also happen if there is a SHA-1 collision, or if the SHA-1 hash provided
by the filesystem for a WIM-backed file on Windows is wrong.

2 years agotools/make-windows-release: ensure the headers in tools/windeps/ are used
Eric Biggers [Tue, 29 Jun 2021 07:42:11 +0000 (00:42 -0700)]
tools/make-windows-release: ensure the headers in tools/windeps/ are used

Avoid a build error due to the libxml2 headers not being found.

Previously it worked by chance due to the system headers being used.
This stopped working in Cygwin builds for some reason, though.

2 years agotools/make-windows-release: check existence of config.log before grepping it
Eric Biggers [Tue, 29 Jun 2021 07:42:11 +0000 (00:42 -0700)]
tools/make-windows-release: check existence of config.log before grepping it

Avoid a misleading log message.

2 years agowin32: update WOF ioctl definitions
Eric Biggers [Tue, 29 Jun 2021 07:42:11 +0000 (00:42 -0700)]
win32: update WOF ioctl definitions

Use the "official" Microsoft struct and field names, and only define
things when they aren't already defined (since some of them were
recently added to MinGW's winioctl.h, causing build errors).

2 years agowin32: only define FSCTL_SET_PERSISTENT_VOLUME_STATE if not yet defined
Eric Biggers [Tue, 29 Jun 2021 07:42:11 +0000 (00:42 -0700)]
win32: only define FSCTL_SET_PERSISTENT_VOLUME_STATE if not yet defined

The MinGW headers define this (and the related struct and constant) now,
which is causing a build error.

Also use CTL_CODE() rather than a raw number.

2 years agoREADME.WINDOWS: fix category of p7zip
Eric Biggers [Tue, 29 Jun 2021 07:42:11 +0000 (00:42 -0700)]
README.WINDOWS: fix category of p7zip