Eric Biggers [Wed, 22 Jun 2016 01:01:57 +0000 (20:01 -0500)]
lz_extend: simplify lz_extend() slightly
Unrolling the first four word copies does not seem give noticably better
performance anymore, and on a recent Intel processor actually appears to
decrease the performance slightly.
Eric Biggers [Wed, 22 Jun 2016 01:01:52 +0000 (20:01 -0500)]
Character encoding and string conversion updates
- Allow unpaired surrogates when translating between "UTF-8" and
"UTF-16LE". This allows Windows-style filenames to be processed
losslessly on UNIX-like systems, even if they are not valid UTF-16LE.
- Implement UTF-8 and UTF-16LE codecs ourselves and drop the iconv
requirement. This was necessary to allow surrogate codepoints, but it
also provides better performance and actually results in *fewer* lines
of code and a slightly smaller binary.
- Drop support for multibyte encodings other than UTF-8 on UNIX-like
systems. It is probably not worth the effort to support such
encodings. Interestingly, the support was entirely broken before
v1.9.1, yet no one ever complained...
Eric Biggers [Sun, 15 May 2016 02:18:00 +0000 (21:18 -0500)]
win32_apply.c: better workaround for access denied bug when creating ADS
Removing directory DACLs was not really a good idea, since this state can
too easily remain after extraction. Instead, since the unexpected
STATUS_ACCESS_DENIED error only occurs when creating an empty named data
stream, we can avoid the error by requesting no permissions on the
handle. It happens that no permissions are needed anyway.
Eric Biggers [Sun, 17 Apr 2016 14:44:54 +0000 (09:44 -0500)]
Add randomized testing program
Introduce the ability to configure the library with test-specific code,
add in-library code for directory tree generation and comparison, and add
the "wlfuzz" randomized test runner which uses the new functionality.
Mike Swanson [Tue, 16 Feb 2016 02:43:15 +0000 (18:43 -0800)]
make-windows-release: allow *.cmd files to operate from paths w/ spaces
If wimlib is unpacked in a path with spaces in it, such as
"C:\Documents and Settings" (default user location on Windows XP), the
shell will prompt back with a message like:
'C:\Documents' is not recognized as an internal or external command,
operable program or batch file.
Simply using double quotes as a guard resolves this and allows it to work.
Eric Biggers [Sat, 6 Feb 2016 15:47:10 +0000 (09:47 -0600)]
Merge compiler-gcc.h into compiler.h
Compiling with MSVC or another non-GCC-like compiler will be harder than
previously thought. Since it's not currently a goal, simplify things by
just merging compiler-gcc.h into compiler.h.
Eric Biggers [Sat, 6 Feb 2016 15:47:08 +0000 (09:47 -0600)]
extract.c: replace tempnam() with mkstemp() on non-Windows
tempnam() produces an annoying warning when linking, even though wimlib
was using it safely (with O_EXCL to make it race-free). Just replace it
with mkstemp() anyway.
Eric Biggers [Thu, 4 Feb 2016 01:20:26 +0000 (19:20 -0600)]
Image metadata updates
- Maintain selected_count of each WIM image
- Unload each WIM image when it is no longer selected by any WIMStruct
- Enforce that every 'wim_image_metadata' is created in a valid state
- Simplify NEW_IMAGE support for read-write mounts
- Improve comments
Eric Biggers [Wed, 3 Feb 2016 01:36:35 +0000 (19:36 -0600)]
inode_fixup: don't warn about inode corrections
This warning is usually not actionable, and people may assume it
indicates a problem with wimlib rather than the program which created the
WIM image. So just remove it.