wimlib
6 years ago1.7.5-BETA3
Eric Biggers [Fri, 30 Jan 2015 03:59:35 +0000 (21:59 -0600)]
1.7.5-BETA3

6 years agoMove errno translation to win32_replacements.c
Eric Biggers [Fri, 30 Jan 2015 03:24:57 +0000 (21:24 -0600)]
Move errno translation to win32_replacements.c

6 years agoWindows: improved error messages
Eric Biggers [Fri, 30 Jan 2015 01:16:28 +0000 (19:16 -0600)]
Windows: improved error messages

6 years agowin32_apply.c: in NO_ATTRIBUTES mode, reset file attributes
Eric Biggers [Fri, 30 Jan 2015 01:28:31 +0000 (19:28 -0600)]
win32_apply.c: in NO_ATTRIBUTES mode, reset file attributes

6 years agowin32-test-imagex-capture_and_apply.bat: fixes
Eric Biggers [Fri, 30 Jan 2015 00:46:30 +0000 (18:46 -0600)]
win32-test-imagex-capture_and_apply.bat: fixes

6 years agowin32_apply.c: adjust file creation
Eric Biggers [Thu, 29 Jan 2015 05:37:28 +0000 (23:37 -0600)]
win32_apply.c: adjust file creation

6 years agowin32-tree-cmp: Ignore directory sizes
Eric Biggers [Thu, 29 Jan 2015 06:25:19 +0000 (00:25 -0600)]
win32-tree-cmp: Ignore directory sizes

6 years agowin32-test-imagex-capture_and_apply.bat: add tests for empty named stream
Eric Biggers [Thu, 29 Jan 2015 05:13:36 +0000 (23:13 -0600)]
win32-test-imagex-capture_and_apply.bat: add tests for empty named stream

6 years agowin32-test-imagex-capture_and_apply.bat: add some tests
Eric Biggers [Thu, 29 Jan 2015 04:26:11 +0000 (22:26 -0600)]
win32-test-imagex-capture_and_apply.bat: add some tests

6 years agowin32-tree-cmp updates
Eric Biggers [Thu, 29 Jan 2015 03:05:30 +0000 (21:05 -0600)]
win32-tree-cmp updates

6 years agontfs-3g_apply.c: Don't claim to support encrypted directories
Eric Biggers [Thu, 29 Jan 2015 02:36:36 +0000 (20:36 -0600)]
ntfs-3g_apply.c: Don't claim to support encrypted directories

6 years agoUpdate NEWS
Eric Biggers [Wed, 28 Jan 2015 05:28:48 +0000 (23:28 -0600)]
Update NEWS

6 years agowin32_apply.c: fix restore of encrypted files and directories
Eric Biggers [Wed, 28 Jan 2015 05:18:51 +0000 (23:18 -0600)]
win32_apply.c: fix restore of encrypted files and directories

6 years agowin32_apply.c: test for EFS data before reparse data
Eric Biggers [Wed, 28 Jan 2015 04:31:41 +0000 (22:31 -0600)]
win32_apply.c: test for EFS data before reparse data

6 years agoextract.c: dentry_is_supported(): check all relevant attributes
Eric Biggers [Wed, 28 Jan 2015 04:30:22 +0000 (22:30 -0600)]
extract.c: dentry_is_supported(): check all relevant attributes

6 years agowin32_capture.c: use NULL instead of INVALID_HANDLE_VALUE
Eric Biggers [Wed, 28 Jan 2015 04:07:52 +0000 (22:07 -0600)]
win32_capture.c: use NULL instead of INVALID_HANDLE_VALUE

Code was correct, but since this is an NT-level handle NULL makes more
sense.

6 years agowin32_capture.c: adjust loading stream info from encrypted files
Eric Biggers [Wed, 28 Jan 2015 04:05:56 +0000 (22:05 -0600)]
win32_capture.c: adjust loading stream info from encrypted files

The previous code was not using ReadEncryptedFileRaw() on directories,
which is apparently needed.

6 years agoextract.c: check for empty extraction list
Eric Biggers [Wed, 28 Jan 2015 02:58:28 +0000 (20:58 -0600)]
extract.c: check for empty extraction list

6 years agowin32_capture.c: fix for opening encrypted files when key is unavailable
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

6 years agoUpdate NEWS
Eric Biggers [Wed, 28 Jan 2015 01:14:36 +0000 (19:14 -0600)]
Update NEWS

6 years agowimlib_iterate_dir_tree(): iterate in default case order
Eric Biggers [Wed, 28 Jan 2015 01:09:36 +0000 (19:09 -0600)]
wimlib_iterate_dir_tree(): iterate in default case order

6 years agolz_lcpit: check against min_match_len ahead of time
Eric Biggers [Sun, 25 Jan 2015 20:53:06 +0000 (14:53 -0600)]
lz_lcpit: check against min_match_len ahead of time

6 years agolz_lcpit: pack SA and LCP into one array
Eric Biggers [Sun, 25 Jan 2015 19:36:00 +0000 (13:36 -0600)]
lz_lcpit: pack SA and LCP into one array

6 years agolz_lcpit: simplify and optimize build_LCPIT()
Eric Biggers [Sun, 25 Jan 2015 17:54:47 +0000 (11:54 -0600)]
lz_lcpit: simplify and optimize build_LCPIT()

6 years agoadd missing file: include/wimlib/alloca.h
Eric Biggers [Wed, 28 Jan 2015 00:03:09 +0000 (18:03 -0600)]
add missing file: include/wimlib/alloca.h

6 years agotools/make-windows-release: build with -DLIBXML_STATIC
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().

6 years agoheader cleanups
Eric Biggers [Sun, 25 Jan 2015 16:35:24 +0000 (10:35 -0600)]
header cleanups

6 years agoxml.c: Use xmlFree() for memory allocated by libxml2
Eric Biggers [Sun, 25 Jan 2015 01:47:28 +0000 (19:47 -0600)]
xml.c: Use xmlFree() for memory allocated by libxml2

6 years agoutil.c: Simplify wimlib_aligned_malloc()
Eric Biggers [Sun, 25 Jan 2015 01:36:13 +0000 (19:36 -0600)]
util.c: Simplify wimlib_aligned_malloc()

6 years agoupdate_image.c: handle_conflict(): fix freeing of unused branch
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.

6 years agoClean up inode alias tracking
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.

6 years agolzx_compress.c: adjust saving of length 2 matches
Eric Biggers [Tue, 20 Jan 2015 00:04:14 +0000 (18:04 -0600)]
lzx_compress.c: adjust saving of length 2 matches

6 years agolzx_compress.c: cleanups
Eric Biggers [Wed, 14 Jan 2015 03:55:46 +0000 (21:55 -0600)]
lzx_compress.c: cleanups

6 years agoLZ hashing cleanup
Eric Biggers [Wed, 14 Jan 2015 03:48:01 +0000 (21:48 -0600)]
LZ hashing cleanup

6 years agoEnsure validity of max_search_depth
Eric Biggers [Mon, 12 Jan 2015 02:06:41 +0000 (20:06 -0600)]
Ensure validity of max_search_depth

6 years agowimlib.h: Fix documentation for compression block sizes
Eric Biggers [Mon, 12 Jan 2015 01:03:10 +0000 (19:03 -0600)]
wimlib.h: Fix documentation for compression block sizes

6 years agolzx_compress.c: Clarify some array bounds
Eric Biggers [Sun, 11 Jan 2015 21:30:29 +0000 (15:30 -0600)]
lzx_compress.c:  Clarify some array bounds

6 years agov1.7.5-BETA
Eric Biggers [Sun, 11 Jan 2015 16:40:26 +0000 (10:40 -0600)]
v1.7.5-BETA

6 years agoMerge LZX compression updates
Eric Biggers [Sun, 11 Jan 2015 16:24:07 +0000 (10:24 -0600)]
Merge LZX compression updates

6 years agov1.7.4 v1.7.4
Eric Biggers [Sat, 3 Jan 2015 02:01:26 +0000 (20:01 -0600)]
v1.7.4

6 years agolzms_compress.c: honor LZMS_MAX_BUFFER_SIZE
Eric Biggers [Sat, 3 Jan 2015 01:43:00 +0000 (19:43 -0600)]
lzms_compress.c: honor LZMS_MAX_BUFFER_SIZE

6 years agoMisc. cleanups
Eric Biggers [Sat, 3 Jan 2015 00:25:50 +0000 (18:25 -0600)]
Misc. cleanups

6 years agoRestore -std=gnu99 instead of -std=c99
Eric Biggers [Tue, 30 Dec 2014 03:31:51 +0000 (21:31 -0600)]
Restore -std=gnu99 instead of -std=c99

6 years agoAdjust endianness detection
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.

6 years agoREADME: update COMPRESSION RATIO section
Eric Biggers [Tue, 30 Dec 2014 02:40:53 +0000 (20:40 -0600)]
README: update COMPRESSION RATIO section

6 years agoUse --enable-ssse3-sha1 for x86_64 Windows builds
Eric Biggers [Tue, 30 Dec 2014 03:01:07 +0000 (21:01 -0600)]
Use --enable-ssse3-sha1 for x86_64 Windows builds

6 years agoCleanups from recent changes
Eric Biggers [Mon, 29 Dec 2014 02:03:09 +0000 (20:03 -0600)]
Cleanups from recent changes

6 years agoAdjust naming of (de)compression files
Eric Biggers [Fri, 26 Dec 2014 20:16:44 +0000 (14:16 -0600)]
Adjust naming of (de)compression files

6 years agoLZMS: decompression optimizations
Eric Biggers [Fri, 26 Dec 2014 16:56:16 +0000 (10:56 -0600)]
LZMS: decompression optimizations

6 years agoLZMS: optimize lzms_x86_filter()
Eric Biggers [Thu, 25 Dec 2014 02:33:49 +0000 (20:33 -0600)]
LZMS: optimize lzms_x86_filter()

6 years agoresource.c: Don't manually align buffer for uncompressed data
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.

6 years agoLZX pre/post-processing improvements
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

6 years agomake-windows-release: get version number from configure.ac, not README
Eric Biggers [Tue, 23 Dec 2014 19:07:32 +0000 (13:07 -0600)]
make-windows-release: get version number from configure.ac, not README

6 years agoFaster XPRESS compression
Eric Biggers [Tue, 23 Dec 2014 05:16:38 +0000 (23:16 -0600)]
Faster XPRESS compression

6 years agotools/windeps/Makefile: update sources list
Eric Biggers [Fri, 19 Dec 2014 23:44:02 +0000 (17:44 -0600)]
tools/windeps/Makefile: update sources list

6 years agomkwinpeimg.1: missed an autoconf substitution
Eric Biggers [Fri, 19 Dec 2014 05:01:16 +0000 (23:01 -0600)]
mkwinpeimg.1: missed an autoconf substitution

6 years agoWindows build updates
Eric Biggers [Fri, 19 Dec 2014 03:38:48 +0000 (21:38 -0600)]
Windows build updates

6 years agoAdd ax_pthread.m4
Eric Biggers [Tue, 16 Dec 2014 05:50:04 +0000 (23:50 -0600)]
Add ax_pthread.m4

6 years agoconfigure.ac cleanup
Eric Biggers [Tue, 16 Dec 2014 04:55:03 +0000 (22:55 -0600)]
configure.ac cleanup

6 years agoMakefile.am cleanup
Eric Biggers [Tue, 16 Dec 2014 02:55:53 +0000 (20:55 -0600)]
Makefile.am cleanup

6 years agoutf16le_dupz() input may be misaligned
Eric Biggers [Tue, 16 Dec 2014 02:33:59 +0000 (20:33 -0600)]
utf16le_dupz() input may be misaligned

6 years agoDon't run man pages through configure
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.

6 years agoRemove support for --with-imagex-progname configure option
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.

6 years agoRemove support for --enable-more-assertions configure option
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.

6 years agoENABLE_MORE_DEBUG no longer exists
Eric Biggers [Tue, 16 Dec 2014 00:10:39 +0000 (18:10 -0600)]
ENABLE_MORE_DEBUG no longer exists

6 years agoinode.h, inode.c cleanup
Eric Biggers [Sun, 14 Dec 2014 21:03:40 +0000 (15:03 -0600)]
inode.h, inode.c cleanup

6 years agoClean up util.h and util.c
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

6 years agoHeader fixes
Eric Biggers [Sun, 14 Dec 2014 19:43:09 +0000 (13:43 -0600)]
Header fixes

6 years agoreference.c: correct rollback in error paths
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().

6 years agoupdate_image.c: Add file comment
Eric Biggers [Sun, 14 Dec 2014 05:55:29 +0000 (23:55 -0600)]
update_image.c: Add file comment

6 years agoGet rid of wimlib/version.h
Eric Biggers [Sun, 14 Dec 2014 04:38:18 +0000 (22:38 -0600)]
Get rid of wimlib/version.h

6 years agoCleanup timestamp conversion code
Eric Biggers [Sun, 14 Dec 2014 03:26:06 +0000 (21:26 -0600)]
Cleanup timestamp conversion code

6 years agotagged_items.c: length should be rounded up when adding item
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.

6 years agowim.h: reorganize WIMStruct fields and update comments
Eric Biggers [Sun, 14 Dec 2014 00:05:56 +0000 (18:05 -0600)]
wim.h: reorganize WIMStruct fields and update comments

6 years agonew internal image deletion helper
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.

6 years agoexport_image.c: adjust error message
Eric Biggers [Sat, 13 Dec 2014 19:21:48 +0000 (13:21 -0600)]
export_image.c: adjust error message

6 years agoWIMStruct: Rename 'deletion_occurred' to 'image_deletion_occurred'
Eric Biggers [Sat, 13 Dec 2014 19:20:19 +0000 (13:20 -0600)]
WIMStruct: Rename 'deletion_occurred' to 'image_deletion_occurred'

6 years agoinode_fixup.h: remove unnecessary #include
Eric Biggers [Sat, 13 Dec 2014 19:17:12 +0000 (13:17 -0600)]
inode_fixup.h: remove unnecessary #include

6 years agolz_extend: little endian CPU is necessary for byte count to work
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

6 years agoAnnotate yet another unaligned memory access
Eric Biggers [Thu, 11 Dec 2014 01:14:40 +0000 (19:14 -0600)]
Annotate yet another unaligned memory access

6 years agoUpdate version to v1.7.4-BETA
Eric Biggers [Wed, 10 Dec 2014 04:53:21 +0000 (22:53 -0600)]
Update version to v1.7.4-BETA

6 years agoportability and compression cleanups
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

6 years agocleanups
Eric Biggers [Sat, 6 Dec 2014 17:42:37 +0000 (11:42 -0600)]
cleanups

7 years agoWorkaround for FILE_SUPERSEDE being broken in Windows PE ramdisk
Eric Biggers [Wed, 26 Nov 2014 04:26:29 +0000 (22:26 -0600)]
Workaround for FILE_SUPERSEDE being broken in Windows PE ramdisk

7 years agoAdd some missing config.h includes
Eric Biggers [Sat, 22 Nov 2014 04:02:15 +0000 (22:02 -0600)]
Add some missing config.h includes

7 years agolzms-compress.c: Remove unused function
Eric Biggers [Sat, 22 Nov 2014 03:59:39 +0000 (21:59 -0600)]
lzms-compress.c: Remove unused function

7 years agomount_image.c: Replace use of zero-length array
Eric Biggers [Sat, 22 Nov 2014 03:42:35 +0000 (21:42 -0600)]
mount_image.c: Replace use of zero-length array

7 years agoRemove unused 'wim' argument to read_metadata_resource()
Eric Biggers [Sat, 22 Nov 2014 03:40:05 +0000 (21:40 -0600)]
Remove unused 'wim' argument to read_metadata_resource()

7 years agolist.h cleanup
Eric Biggers [Sat, 22 Nov 2014 03:17:02 +0000 (21:17 -0600)]
list.h cleanup

7 years agoUse quote includes for all internal headers
Eric Biggers [Sat, 22 Nov 2014 03:03:01 +0000 (21:03 -0600)]
Use quote includes for all internal headers

7 years agosha1.c: Annotate potential unaligned memory accesses in sha1_final()
Eric Biggers [Thu, 20 Nov 2014 03:43:21 +0000 (21:43 -0600)]
sha1.c: Annotate potential unaligned memory accesses in sha1_final()

7 years agolookup_table.c: Annotate potential unaligned memory access in lookup_stream()
Eric Biggers [Thu, 20 Nov 2014 03:41:37 +0000 (21:41 -0600)]
lookup_table.c: Annotate potential unaligned memory access in lookup_stream()

7 years agowimlib.h: Fix error in wimlib_get_version() documentation
Eric Biggers [Sat, 15 Nov 2014 16:13:00 +0000 (10:13 -0600)]
wimlib.h: Fix error in wimlib_get_version() documentation

7 years agov1.7.3 v1.7.3
Eric Biggers [Fri, 14 Nov 2014 00:12:23 +0000 (18:12 -0600)]
v1.7.3

7 years agoSilence compiler warning in make_huffman_decode_table()
Eric Biggers [Tue, 11 Nov 2014 00:34:25 +0000 (18:34 -0600)]
Silence compiler warning in make_huffman_decode_table()

7 years agoLZX, LZMS: Annotate unaligned memory accesses in x86 filtering
Eric Biggers [Tue, 11 Nov 2014 00:10:41 +0000 (18:10 -0600)]
LZX, LZMS: Annotate unaligned memory accesses in x86 filtering

7 years agowimlib_export_image(): cleanups and fixes for rollback
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.

7 years agowimlib_set_image_name(): Allow multiple images with empty name
Eric Biggers [Fri, 7 Nov 2014 00:44:54 +0000 (18:44 -0600)]
wimlib_set_image_name(): Allow multiple images with empty name

7 years agoFix for rewriting uncompressed resources when exporting from solid WIM
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.

7 years agoRemove "memory exhausted" error messages
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.