Eric Biggers [Wed, 28 Jan 2015 02:58:28 +0000 (20:58 -0600)]
extract.c: check for empty extraction list
Eric Biggers [Wed, 28 Jan 2015 02:45:00 +0000 (20:45 -0600)]
win32_capture.c: fix for opening encrypted files when key is unavailable
Eric Biggers [Wed, 28 Jan 2015 01:14:36 +0000 (19:14 -0600)]
Update NEWS
Eric Biggers [Wed, 28 Jan 2015 01:09:36 +0000 (19:09 -0600)]
wimlib_iterate_dir_tree(): iterate in default case order
Eric Biggers [Sun, 25 Jan 2015 20:53:06 +0000 (14:53 -0600)]
lz_lcpit: check against min_match_len ahead of time
Eric Biggers [Sun, 25 Jan 2015 19:36:00 +0000 (13:36 -0600)]
lz_lcpit: pack SA and LCP into one array
Eric Biggers [Sun, 25 Jan 2015 17:54:47 +0000 (11:54 -0600)]
lz_lcpit: simplify and optimize build_LCPIT()
Eric Biggers [Wed, 28 Jan 2015 00:03:09 +0000 (18:03 -0600)]
add missing file: include/wimlib/alloca.h
Eric Biggers [Sun, 25 Jan 2015 16:47:05 +0000 (10:47 -0600)]
tools/make-windows-release: build with -DLIBXML_STATIC
This is needed to correctly link with xmlFree().
Eric Biggers [Sun, 25 Jan 2015 16:35:24 +0000 (10:35 -0600)]
header cleanups
Eric Biggers [Sun, 25 Jan 2015 01:47:28 +0000 (19:47 -0600)]
xml.c: Use xmlFree() for memory allocated by libxml2
Eric Biggers [Sun, 25 Jan 2015 01:36:13 +0000 (19:36 -0600)]
util.c: Simplify wimlib_aligned_malloc()
Eric Biggers [Sun, 25 Jan 2015 00:43:42 +0000 (18:43 -0600)]
update_image.c: handle_conflict(): fix freeing of unused branch
If the directory has alternate data streams, they should be freed here.
Eric Biggers [Sat, 24 Jan 2015 16:20:12 +0000 (10:20 -0600)]
Clean up inode alias tracking
New helper functions:
- d_associate()
- d_disassociate()
i_nlink, d_inode, and i_dentry are no longer changed outside of these
functions. We maintain the invariants:
i_nlink == list_size(&i_dentry) == # of d_inode references
put_inode() is removed; free_inode() is now private to inode.c.
This fixes at least one bug: when freeing a dentry, it was not being
deleted from the inode's dentry list.
Eric Biggers [Tue, 20 Jan 2015 00:04:14 +0000 (18:04 -0600)]
lzx_compress.c: adjust saving of length 2 matches
Eric Biggers [Wed, 14 Jan 2015 03:55:46 +0000 (21:55 -0600)]
lzx_compress.c: cleanups
Eric Biggers [Wed, 14 Jan 2015 03:48:01 +0000 (21:48 -0600)]
LZ hashing cleanup
Eric Biggers [Mon, 12 Jan 2015 02:06:41 +0000 (20:06 -0600)]
Ensure validity of max_search_depth
Eric Biggers [Mon, 12 Jan 2015 01:03:10 +0000 (19:03 -0600)]
wimlib.h: Fix documentation for compression block sizes
Eric Biggers [Sun, 11 Jan 2015 21:30:29 +0000 (15:30 -0600)]
lzx_compress.c: Clarify some array bounds
Eric Biggers [Sun, 11 Jan 2015 16:40:26 +0000 (10:40 -0600)]
v1.7.5-BETA
Eric Biggers [Sun, 11 Jan 2015 16:24:07 +0000 (10:24 -0600)]
Merge LZX compression updates
Eric Biggers [Sat, 3 Jan 2015 02:01:26 +0000 (20:01 -0600)]
v1.7.4
Eric Biggers [Sat, 3 Jan 2015 01:43:00 +0000 (19:43 -0600)]
lzms_compress.c: honor LZMS_MAX_BUFFER_SIZE
Eric Biggers [Sat, 3 Jan 2015 00:25:50 +0000 (18:25 -0600)]
Misc. cleanups
Eric Biggers [Tue, 30 Dec 2014 03:31:51 +0000 (21:31 -0600)]
Restore -std=gnu99 instead of -std=c99
Eric Biggers [Tue, 30 Dec 2014 03:26:06 +0000 (21:26 -0600)]
Adjust endianness detection
__BYTE_ORDER__ isn't available in older gcc, unfortunately.
Eric Biggers [Tue, 30 Dec 2014 02:40:53 +0000 (20:40 -0600)]
README: update COMPRESSION RATIO section
Eric Biggers [Tue, 30 Dec 2014 03:01:07 +0000 (21:01 -0600)]
Use --enable-ssse3-sha1 for x86_64 Windows builds
Eric Biggers [Mon, 29 Dec 2014 02:03:09 +0000 (20:03 -0600)]
Cleanups from recent changes
Eric Biggers [Fri, 26 Dec 2014 20:16:44 +0000 (14:16 -0600)]
Adjust naming of (de)compression files
Eric Biggers [Fri, 26 Dec 2014 16:56:16 +0000 (10:56 -0600)]
LZMS: decompression optimizations
Eric Biggers [Thu, 25 Dec 2014 02:33:49 +0000 (20:33 -0600)]
LZMS: optimize lzms_x86_filter()
Eric Biggers [Thu, 25 Dec 2014 02:06:42 +0000 (20:06 -0600)]
resource.c: Don't manually align buffer for uncompressed data
The main reason this was being done was to speed up LZX postprocessing,
but that now can use the vectorized version (with a tiny bit of overhead)
even if the start of the buffer is not 16-byte aligned.
Eric Biggers [Thu, 25 Dec 2014 01:58:04 +0000 (19:58 -0600)]
LZX pre/post-processing improvements
- much faster inner loop for non-vectorized version
- use either SSE2 or AVX-2 for vectorized version
- faster inner loop for vectorized version
- support vectorized version on buffers that are not properly aligned
Eric Biggers [Tue, 23 Dec 2014 19:07:32 +0000 (13:07 -0600)]
make-windows-release: get version number from configure.ac, not README
Eric Biggers [Tue, 23 Dec 2014 05:16:38 +0000 (23:16 -0600)]
Faster XPRESS compression
Eric Biggers [Fri, 19 Dec 2014 23:44:02 +0000 (17:44 -0600)]
tools/windeps/Makefile: update sources list
Eric Biggers [Fri, 19 Dec 2014 05:01:16 +0000 (23:01 -0600)]
mkwinpeimg.1: missed an autoconf substitution
Eric Biggers [Fri, 19 Dec 2014 03:38:48 +0000 (21:38 -0600)]
Windows build updates
Eric Biggers [Tue, 16 Dec 2014 05:50:04 +0000 (23:50 -0600)]
Add ax_pthread.m4
Eric Biggers [Tue, 16 Dec 2014 04:55:03 +0000 (22:55 -0600)]
configure.ac cleanup
Eric Biggers [Tue, 16 Dec 2014 02:55:53 +0000 (20:55 -0600)]
Makefile.am cleanup
Eric Biggers [Tue, 16 Dec 2014 02:33:59 +0000 (20:33 -0600)]
utf16le_dupz() input may be misaligned
Eric Biggers [Tue, 16 Dec 2014 01:45:49 +0000 (19:45 -0600)]
Don't run man pages through configure
The only remaining reason is to update the version number, but there is
already a sed command being run to update all the dates. So we might as
well simplify by just having the unmodified man pages.
Eric Biggers [Tue, 16 Dec 2014 01:25:36 +0000 (19:25 -0600)]
Remove support for --with-imagex-progname configure option
The program is always called "wimlib-imagex" now. I expect no one is
using the configuration option, and nothing stops the user from renaming
the binary anyway.
Eric Biggers [Tue, 16 Dec 2014 00:20:29 +0000 (18:20 -0600)]
Remove support for --enable-more-assertions configure option
The only uses of wimlib_assert2() were in compression code (where
problems are relatively easy to detect), and this option was disabled by
default anyway. Simplify by just having one kind of assertion.
Eric Biggers [Tue, 16 Dec 2014 00:10:39 +0000 (18:10 -0600)]
ENABLE_MORE_DEBUG no longer exists
Eric Biggers [Sun, 14 Dec 2014 21:03:40 +0000 (15:03 -0600)]
inode.h, inode.c cleanup
Eric Biggers [Sun, 14 Dec 2014 19:51:40 +0000 (13:51 -0600)]
Clean up util.h and util.c
- Move logging/error code into new file error.c
- Remove ZERO_ARRAY()
- Move path separator macros into paths.h
- Comment improvements
- Remove support for undocumented WIMLIB_DEBUG environmental variable
Eric Biggers [Sun, 14 Dec 2014 19:43:09 +0000 (13:43 -0600)]
Header fixes
Eric Biggers [Sun, 14 Dec 2014 18:05:52 +0000 (12:05 -0600)]
reference.c: correct rollback in error paths
previous implementation had several problems:
- use of 'out_refcnt' was wrong (it wasn't guaranteed to be 0 beforehand)
- globs were rolled back individually, not together
This commit correctly implements full rollback for both
wimlib_reference_resources() and wimlib_reference_resource_files().
Eric Biggers [Sun, 14 Dec 2014 05:55:29 +0000 (23:55 -0600)]
update_image.c: Add file comment
Eric Biggers [Sun, 14 Dec 2014 04:38:18 +0000 (22:38 -0600)]
Get rid of wimlib/version.h
Eric Biggers [Sun, 14 Dec 2014 03:26:06 +0000 (21:26 -0600)]
Cleanup timestamp conversion code
Eric Biggers [Sun, 14 Dec 2014 01:40:02 +0000 (19:40 -0600)]
tagged_items.c: length should be rounded up when adding item
Also 0-fill the new item, including the padding.
These changes have no effect on the only caller of
inode_add_tagged_item() but should be made for correctness in case this
function gets more callers in the future.
Eric Biggers [Sun, 14 Dec 2014 00:05:56 +0000 (18:05 -0600)]
wim.h: reorganize WIMStruct fields and update comments
Eric Biggers [Sat, 13 Dec 2014 19:38:31 +0000 (13:38 -0600)]
new internal image deletion helper
Define a new helper function delete_wim_image() and use in
wimlib_delete_image() and in the error path of
wimlib_add_image_multisource().
This fixes a bug: current_image wasn't being reset to WIMLIB_NO_IMAGE in
the error path of wimlib_add_image_multisource(). Bad things would
happen if the library user then continued to use the same WIMStruct.
Eric Biggers [Sat, 13 Dec 2014 19:21:48 +0000 (13:21 -0600)]
export_image.c: adjust error message
Eric Biggers [Sat, 13 Dec 2014 19:20:19 +0000 (13:20 -0600)]
WIMStruct: Rename 'deletion_occurred' to 'image_deletion_occurred'
Eric Biggers [Sat, 13 Dec 2014 19:17:12 +0000 (13:17 -0600)]
inode_fixup.h: remove unnecessary #include
Eric Biggers [Thu, 11 Dec 2014 01:45:07 +0000 (19:45 -0600)]
lz_extend: little endian CPU is necessary for byte count to work
Eric Biggers [Thu, 11 Dec 2014 01:14:40 +0000 (19:14 -0600)]
Annotate yet another unaligned memory access
Eric Biggers [Wed, 10 Dec 2014 04:53:21 +0000 (22:53 -0600)]
Update version to v1.7.4-BETA
Eric Biggers [Wed, 10 Dec 2014 01:40:17 +0000 (19:40 -0600)]
portability and compression cleanups
- Split compiler.h into compiler.h and compiler-gcc.h
- Compile with -std=c99. Some GCC extensions are still used but they are
explicitly defined in compiler-gcc.h.
- Add get_unaligned_uXX_le() and put_unaligned_uXX_le() helpers
- Faster lz_copy() in some cases
- Faster lz_extend() in some cases
- New bitops.h header
Eric Biggers [Sat, 6 Dec 2014 17:42:37 +0000 (11:42 -0600)]
cleanups
Eric Biggers [Wed, 26 Nov 2014 04:26:29 +0000 (22:26 -0600)]
Workaround for FILE_SUPERSEDE being broken in Windows PE ramdisk
Eric Biggers [Sat, 22 Nov 2014 04:02:15 +0000 (22:02 -0600)]
Add some missing config.h includes
Eric Biggers [Sat, 22 Nov 2014 03:59:39 +0000 (21:59 -0600)]
lzms-compress.c: Remove unused function
Eric Biggers [Sat, 22 Nov 2014 03:42:35 +0000 (21:42 -0600)]
mount_image.c: Replace use of zero-length array
Eric Biggers [Sat, 22 Nov 2014 03:40:05 +0000 (21:40 -0600)]
Remove unused 'wim' argument to read_metadata_resource()
Eric Biggers [Sat, 22 Nov 2014 03:17:02 +0000 (21:17 -0600)]
list.h cleanup
Eric Biggers [Sat, 22 Nov 2014 03:03:01 +0000 (21:03 -0600)]
Use quote includes for all internal headers
Eric Biggers [Thu, 20 Nov 2014 03:43:21 +0000 (21:43 -0600)]
sha1.c: Annotate potential unaligned memory accesses in sha1_final()
Eric Biggers [Thu, 20 Nov 2014 03:41:37 +0000 (21:41 -0600)]
lookup_table.c: Annotate potential unaligned memory access in lookup_stream()
Eric Biggers [Sat, 15 Nov 2014 16:13:00 +0000 (10:13 -0600)]
wimlib.h: Fix error in wimlib_get_version() documentation
Eric Biggers [Fri, 14 Nov 2014 00:12:23 +0000 (18:12 -0600)]
v1.7.3
Eric Biggers [Tue, 11 Nov 2014 00:34:25 +0000 (18:34 -0600)]
Silence compiler warning in make_huffman_decode_table()
Eric Biggers [Tue, 11 Nov 2014 00:10:41 +0000 (18:10 -0600)]
LZX, LZMS: Annotate unaligned memory accesses in x86 filtering
Eric Biggers [Fri, 7 Nov 2014 00:50:18 +0000 (18:50 -0600)]
wimlib_export_image(): cleanups and fixes for rollback
- rollback setting of wimboot flag correctly (actually, don't even set it
until we've succeeded)
- on rollback, free wim_lookup_table_entries in the destination if and
only if they were exported. Before it was possible for one to be freed
if it happened to have had 0 reference count before.
Eric Biggers [Fri, 7 Nov 2014 00:44:54 +0000 (18:44 -0600)]
wimlib_set_image_name(): Allow multiple images with empty name
Eric Biggers [Wed, 5 Nov 2014 01:25:55 +0000 (19:25 -0600)]
Fix for rewriting uncompressed resources when exporting from solid WIM
The changes from commit
1ba2a3422b ("Workaround for WOF incompatibility")
are resulting in excessive, expensive decompressions when exporting small
incompressible files from solid blocks. For now, add an optimization for
single chunk resources which prevents this common case from triggering
the degenerate behavior.
Eric Biggers [Sun, 26 Oct 2014 23:47:12 +0000 (18:47 -0500)]
Remove "memory exhausted" error messages
Calling code checks for NULL returns anyway, and in the case of
allocating chunk compressors there is a fallback so there shouldn't
be an error message.
Eric Biggers [Sun, 26 Oct 2014 23:50:49 +0000 (18:50 -0500)]
write.c: Warn when falling back to single-threaded compression
Eric Biggers [Sun, 26 Oct 2014 23:55:44 +0000 (18:55 -0500)]
win32_get_avail_memory(): Report 85% of minimum of virtual and physical memory
This should be a better prediction of how much memory can actually be
allocated.
Eric Biggers [Sat, 25 Oct 2014 18:13:21 +0000 (13:13 -0500)]
Update NEWS
Eric Biggers [Sat, 25 Oct 2014 16:28:03 +0000 (11:28 -0500)]
Add warning messages and retries around FSCTL_SET_EXTERNAL_BACKING
Eric Biggers [Sat, 25 Oct 2014 00:25:49 +0000 (19:25 -0500)]
Don't use the old ADD_IMAGE flag names
Eric Biggers [Sat, 25 Oct 2014 00:19:47 +0000 (19:19 -0500)]
Rename add_image_params => capture_params
Eric Biggers [Wed, 22 Oct 2014 03:19:11 +0000 (22:19 -0500)]
Report some extraction errors on Windows
Eric Biggers [Wed, 22 Oct 2014 03:18:05 +0000 (22:18 -0500)]
Report directory tree scan errors
Eric Biggers [Wed, 22 Oct 2014 03:17:30 +0000 (22:17 -0500)]
Add WIMLIB_PROGRESS_MSG_HANDLE_ERROR
Eric Biggers [Sat, 18 Oct 2014 02:14:18 +0000 (21:14 -0500)]
win32_apply.c: Try to remove/rename conflicting short names
Eric Biggers [Wed, 15 Oct 2014 00:00:17 +0000 (19:00 -0500)]
wimboot.c: Fix format string
Eric Biggers [Tue, 14 Oct 2014 04:24:02 +0000 (23:24 -0500)]
Update NEWS
Eric Biggers [Tue, 14 Oct 2014 03:18:35 +0000 (22:18 -0500)]
win32_apply.c: Match PrepopulateList patterns against all inode aliases
Eric Biggers [Tue, 14 Oct 2014 03:10:27 +0000 (22:10 -0500)]
win32_apply.c: Never externally back extracted SYSTEM registry files
Eric Biggers [Tue, 14 Oct 2014 02:26:40 +0000 (21:26 -0500)]
wimboot.c: Dynamically size extents and drive_info arrays
I figured a limit of 8 partitions is good enough, but for some reason
Windows returns 4 times as many partitions as there actually are.
Whatever, just remove the fixed limit.
Eric Biggers [Tue, 14 Oct 2014 01:36:05 +0000 (20:36 -0500)]
Update version to v1.7.3-BETA
Eric Biggers [Tue, 14 Oct 2014 00:42:16 +0000 (19:42 -0500)]
Limit can_modify_wim() calls; remove can_delete_from_wim()
It isn't necessary to check for permission to modify a WIM for in-memory
operations such as wimlib_add_image(), wimlib_update_image(), and
wimlib_delete_image(). It is only when the user attempts to modify an
on-disk WIM file using wimlib_overwrite() --- or when the user explicitly
opens an on-disk WIM file for write access --- that write permissions
need to be checked.
This change prevents the library from getting in the way of "unusual" use
cases, such as making last-minute changes to a WIM before extracting it
even when the underlying file is located on read-only media, which
otherwise are fully supported by the existing code.
Also part of this change is the removal of can_delete_from_wim(). This
function did a lot of work (decompressing each metadata resource) that
usually turns out to be a waste of time. And it turns out that it really
needs to be called for any 'wimlib_update_command', including "add" and
"rename", because both "add" and "rename" can cause files to be deleted
(specifically, replaced). But this is gone too far. Instead, just get
rid of can_delete_from_wim() completely: it's not needed if we retain
0-reference streams when not recalculating reference counts as part of
wimlib_write() anyway.