wimlib
5 years agowrite.c: ensure that 'old_integrity_table' is always freed
Eric Biggers [Sat, 24 Oct 2015 19:46:11 +0000 (14:46 -0500)]
write.c: ensure that 'old_integrity_table' is always freed

5 years agowrite.c: don't write integrity table if there is no blob table
Eric Biggers [Sat, 24 Oct 2015 19:31:24 +0000 (14:31 -0500)]
write.c: don't write integrity table if there is no blob table

The following commands would produce an invalid integrity table:

wimcapture empty empty.wim
wimdelete delete empty.wim 1 --check

5 years agowin32_capture.c: experimental fixup of WIM-backed files
Eric Biggers [Sun, 1 Nov 2015 18:34:42 +0000 (12:34 -0600)]
win32_capture.c: experimental fixup of WIM-backed files

5 years agowrite.c: send first WRITE_STREAMS message before writing raw copy blobs
Eric Biggers [Fri, 23 Oct 2015 04:13:03 +0000 (23:13 -0500)]
write.c: send first WRITE_STREAMS message before writing raw copy blobs

5 years agowrite.c: compaction bug fix
Eric Biggers [Fri, 23 Oct 2015 04:07:01 +0000 (23:07 -0500)]
write.c: compaction bug fix

5 years agodoc: note that data integrity is not guaranteed in --unsafe-compact mode
Eric Biggers [Wed, 21 Oct 2015 03:31:41 +0000 (22:31 -0500)]
doc: note that data integrity is not guaranteed in --unsafe-compact mode

5 years agoImproved reporting of concurrent modifications and corruptions
Eric Biggers [Wed, 21 Oct 2015 03:26:23 +0000 (22:26 -0500)]
Improved reporting of concurrent modifications and corruptions

5 years agowin32_apply.c: dereference reparse point when opening target dir
Eric Biggers [Mon, 19 Oct 2015 02:36:02 +0000 (21:36 -0500)]
win32_apply.c: dereference reparse point when opening target dir

5 years agoUpdate NEWS
Eric Biggers [Mon, 19 Oct 2015 00:44:58 +0000 (19:44 -0500)]
Update NEWS

5 years agowimlib_split(): forbid splitting arbitrary WIMStructs
Eric Biggers [Mon, 19 Oct 2015 00:39:27 +0000 (19:39 -0500)]
wimlib_split(): forbid splitting arbitrary WIMStructs

5 years agoDelay xml_update_image_info() until write
Eric Biggers [Mon, 19 Oct 2015 00:39:36 +0000 (19:39 -0500)]
Delay xml_update_image_info() until write

wimlib_update_image() should not be walking the entire image's directory
tree on every call.

5 years agowimlib_export_image(): improve duplicate image detection
Eric Biggers [Mon, 19 Oct 2015 00:39:35 +0000 (19:39 -0500)]
wimlib_export_image(): improve duplicate image detection

5 years agoForbid modifying multi-referenced images
Eric Biggers [Mon, 19 Oct 2015 00:39:34 +0000 (19:39 -0500)]
Forbid modifying multi-referenced images

5 years agoMake WIMStructs reference-counted
Eric Biggers [Mon, 19 Oct 2015 00:39:34 +0000 (19:39 -0500)]
Make WIMStructs reference-counted

Simplify the library API by eliminating rules on when WIMStructs can be
freed after calls to wimlib_export_image() and
wimlib_reference_resources().  Also eliminate the internal 'subwims'
list.

5 years agoDon't unnecessarily rebuild exported metadata resources
Eric Biggers [Mon, 19 Oct 2015 00:39:30 +0000 (19:39 -0500)]
Don't unnecessarily rebuild exported metadata resources

- When image metadata is modified, release the descriptor for the backing
  resource (if any), since it can no longer be used
- In write_metadata_resources(), allow copying metadata resources from a
  WIM file other than the one being written
- Remove the 'modified' and 'dont_check_metadata_hash' fields which are
  no longer needed

5 years agowimlib_iterate_dir_tree(): free d_full_path after using
Eric Biggers [Mon, 19 Oct 2015 00:39:33 +0000 (19:39 -0500)]
wimlib_iterate_dir_tree(): free d_full_path after using

5 years agoinode: move 'i_extra_size' to 'i_extra' buffer
Eric Biggers [Mon, 19 Oct 2015 00:39:33 +0000 (19:39 -0500)]
inode: move 'i_extra_size' to 'i_extra' buffer

Usually there will be no extra data and this will save a bit of memory.

5 years agoarchlinux/PKGBUILD: don't install README.WINDOWS
Eric Biggers [Mon, 19 Oct 2015 00:39:32 +0000 (19:39 -0500)]
archlinux/PKGBUILD: don't install README.WINDOWS

5 years agotools/make-windows-release: configure --without-libcrypto
Eric Biggers [Mon, 19 Oct 2015 00:39:31 +0000 (19:39 -0500)]
tools/make-windows-release: configure --without-libcrypto

5 years agoFix various typos
Eric Biggers [Mon, 19 Oct 2015 00:39:31 +0000 (19:39 -0500)]
Fix various typos

5 years agowimlib-imagex: forbid --unsafe-compact when it doesn't make sense
Eric Biggers [Mon, 19 Oct 2015 00:39:30 +0000 (19:39 -0500)]
wimlib-imagex: forbid --unsafe-compact when it doesn't make sense

5 years agoxml_export_image(): fix memory leak if append_image_node() fails
Eric Biggers [Mon, 19 Oct 2015 00:39:29 +0000 (19:39 -0500)]
xml_export_image(): fix memory leak if append_image_node() fails

5 years agoxml_print_image_info(): handle LANGUAGE element with no text
Eric Biggers [Mon, 19 Oct 2015 00:39:29 +0000 (19:39 -0500)]
xml_print_image_info(): handle LANGUAGE element with no text

5 years agowimlib_set_image_name(): allow setting image to existing name
Eric Biggers [Mon, 19 Oct 2015 00:39:28 +0000 (19:39 -0500)]
wimlib_set_image_name(): allow setting image to existing name

5 years agowimlib_set_image_property(): forbid NULL or empty property names
Eric Biggers [Mon, 19 Oct 2015 00:39:28 +0000 (19:39 -0500)]
wimlib_set_image_property(): forbid NULL or empty property names

5 years agowimlib_get_image_property(): forbid NULL or empty property names
Eric Biggers [Mon, 19 Oct 2015 00:39:27 +0000 (19:39 -0500)]
wimlib_get_image_property(): forbid NULL or empty property names

5 years agoREADME: update tested architectures
Eric Biggers [Mon, 19 Oct 2015 00:39:26 +0000 (19:39 -0500)]
README: update tested architectures

5 years agoBig endian fix: load_u24_unaligned() must be consistent with loaded_u32_to_u24()
Eric Biggers [Mon, 19 Oct 2015 00:39:26 +0000 (19:39 -0500)]
Big endian fix: load_u24_unaligned() must be consistent with loaded_u32_to_u24()

5 years agoMake endian conversion macros const-friendly
Eric Biggers [Mon, 19 Oct 2015 00:39:25 +0000 (19:39 -0500)]
Make endian conversion macros const-friendly

This avoids compilation errors on big endian systems.

5 years agoREADME: update COMPRESSION RATIO section
Eric Biggers [Mon, 19 Oct 2015 00:39:25 +0000 (19:39 -0500)]
README: update COMPRESSION RATIO section

5 years agobt_matchfinder: use 2-way hash for length 3 matches
Eric Biggers [Mon, 19 Oct 2015 00:39:24 +0000 (19:39 -0500)]
bt_matchfinder: use 2-way hash for length 3 matches

5 years agolzx_compress.c: fix min value of LENGTH_CODEWORD_LIMIT
Eric Biggers [Mon, 19 Oct 2015 00:39:24 +0000 (19:39 -0500)]
lzx_compress.c: fix min value of LENGTH_CODEWORD_LIMIT

5 years agolzx_compress.c: chosen_sequences[] length was 1 too short
Eric Biggers [Mon, 19 Oct 2015 00:39:23 +0000 (19:39 -0500)]
lzx_compress.c: chosen_sequences[] length was 1 too short

A block could have all length 2 matches (highly unlikely).

5 years agolzx_compress.c: CAN_BUFFER() was 1 off
Eric Biggers [Mon, 19 Oct 2015 00:39:14 +0000 (19:39 -0500)]
lzx_compress.c: CAN_BUFFER() was 1 off

5 years agowimlib.h: update outdated comment
Eric Biggers [Sun, 4 Oct 2015 21:25:38 +0000 (16:25 -0500)]
wimlib.h: update outdated comment

5 years agoUpdate NEWS
Eric Biggers [Sun, 4 Oct 2015 19:03:51 +0000 (14:03 -0500)]
Update NEWS

5 years agowimlib-imagex: add options to enable unsafe compaction
Eric Biggers [Sun, 4 Oct 2015 18:20:50 +0000 (13:20 -0500)]
wimlib-imagex: add options to enable unsafe compaction

5 years agoAdd support for unsafe in-place compaction of WIM files
Eric Biggers [Sun, 4 Oct 2015 18:20:19 +0000 (13:20 -0500)]
Add support for unsafe in-place compaction of WIM files

This commit adds support for compacting WIM files by passing the flag
WIMLIB_WRITE_FLAG_UNSAFE_COMPACT to wimlib_overwrite().

5 years agoWrite raw-copy resources before other resources
Eric Biggers [Sun, 4 Oct 2015 18:23:42 +0000 (13:23 -0500)]
Write raw-copy resources before other resources

As another preparation for adding compaction support, always write "raw
copy" resources before other resources.  In the non-compaction case, any
order can be used.

5 years agoUpdates to prepare for in-place compaction support
Eric Biggers [Sun, 4 Oct 2015 18:15:59 +0000 (13:15 -0500)]
Updates to prepare for in-place compaction support

Update some names and comments to clarify they mean overwrites via
append.  No changes in behavior.

5 years agowrite.c: cleanups and bug fixes
Eric Biggers [Sun, 4 Oct 2015 18:08:34 +0000 (13:08 -0500)]
write.c: cleanups and bug fixes

- Sort blobs correctly if a single on-disk WIM has multiple WIMStructs
- Prevent non-solid resources from being incorrectly reused solid WIMs
- Rename num_bytes_to_compress => num_nonraw_bytes
- Make may_*_filter_blobs() functions return bool
- Improved some comments

5 years agox86_cpu_features.c: include "config.h"
Eric Biggers [Sun, 4 Oct 2015 01:53:56 +0000 (20:53 -0500)]
x86_cpu_features.c: include "config.h"

5 years agoMark system compression support non-experimental
Eric Biggers [Sat, 3 Oct 2015 23:47:20 +0000 (18:47 -0500)]
Mark system compression support non-experimental

5 years agoMinor tweaks to recently changed code
Eric Biggers [Sat, 3 Oct 2015 22:27:04 +0000 (17:27 -0500)]
Minor tweaks to recently changed code

5 years agowimlib-imagex: don't do "metadata not found" warning if applying from stdin
Eric Biggers [Sat, 3 Oct 2015 20:46:35 +0000 (15:46 -0500)]
wimlib-imagex: don't do "metadata not found" warning if applying from stdin

5 years agoUpdate NEWS
Eric Biggers [Sat, 3 Oct 2015 17:44:04 +0000 (12:44 -0500)]
Update NEWS

5 years agoAdd WIMLIB_ERR_WIM_IS_INCOMPLETE
Eric Biggers [Sat, 3 Oct 2015 19:56:32 +0000 (14:56 -0500)]
Add WIMLIB_ERR_WIM_IS_INCOMPLETE

Usually WIMLIB_ERR_XML was returned in this situation, but a separate
error code is more appropriate.

5 years agoRemove WIMLIB_ERR_LIBXML_UTF16_HANDLER_NOT_AVAILABLE
Eric Biggers [Sat, 3 Oct 2015 19:34:22 +0000 (14:34 -0500)]
Remove WIMLIB_ERR_LIBXML_UTF16_HANDLER_NOT_AVAILABLE

5 years agoAdd wimlib_get_image_property() and wimlib_set_image_property()
Eric Biggers [Sat, 3 Oct 2015 17:42:35 +0000 (12:42 -0500)]
Add wimlib_get_image_property() and wimlib_set_image_property()

5 years agoxml.c: refactor to use document tree
Eric Biggers [Sat, 3 Oct 2015 16:59:49 +0000 (11:59 -0500)]
xml.c: refactor to use document tree

5 years agoUpdate COMPRESSION RATIO section of README
Eric Biggers [Thu, 24 Sep 2015 06:33:19 +0000 (01:33 -0500)]
Update COMPRESSION RATIO section of README

5 years agobt_matchfinder: add BT_MATCHFINDER_REQUIRED_NBYTES
Eric Biggers [Fri, 25 Sep 2015 03:46:48 +0000 (22:46 -0500)]
bt_matchfinder: add BT_MATCHFINDER_REQUIRED_NBYTES

5 years agolcpit_matchfinder: prefetch multiple steps ahead
Eric Biggers [Mon, 21 Sep 2015 00:04:10 +0000 (19:04 -0500)]
lcpit_matchfinder: prefetch multiple steps ahead

5 years agolzx_compress: update lzx_update_costs() with codeword limits
Eric Biggers [Sun, 20 Sep 2015 21:01:02 +0000 (16:01 -0500)]
lzx_compress: update lzx_update_costs() with codeword limits

5 years agolzx_compress.c: adjust parameters for slightly stronger compression
Eric Biggers [Sat, 19 Sep 2015 21:29:38 +0000 (16:29 -0500)]
lzx_compress.c: adjust parameters for slightly stronger compression

5 years agoxpress_compress.c: adjust parameters for slightly stronger compression
Eric Biggers [Sat, 19 Sep 2015 21:29:33 +0000 (16:29 -0500)]
xpress_compress.c: adjust parameters for slightly stronger compression

5 years agolzms_decompress() optimization
Eric Biggers [Sat, 19 Sep 2015 18:56:18 +0000 (13:56 -0500)]
lzms_decompress() optimization

The four "pending" variables can be replaced with a single
'prev_item_type' variable, with adjusted logic.  The new way is a little
faster.

5 years agolzx_common: rename to lzx_preprocess/lzx_postprocess
Eric Biggers [Sat, 19 Sep 2015 20:06:37 +0000 (15:06 -0500)]
lzx_common: rename to lzx_preprocess/lzx_postprocess

5 years agolzx_common: get rid of unnecessary functions
Eric Biggers [Sat, 19 Sep 2015 19:53:43 +0000 (14:53 -0500)]
lzx_common: get rid of unnecessary functions

5 years agobt_matchfinder: use 4-byte hashing for trees
Eric Biggers [Sat, 19 Sep 2015 18:56:14 +0000 (13:56 -0500)]
bt_matchfinder: use 4-byte hashing for trees

5 years agobt_matchfinder: make callers do max_len check
Eric Biggers [Sat, 19 Sep 2015 18:56:14 +0000 (13:56 -0500)]
bt_matchfinder: make callers do max_len check

5 years agolzx_compress.c: optimize aligned cost consideration and enable by default
Eric Biggers [Sat, 19 Sep 2015 18:56:13 +0000 (13:56 -0500)]
lzx_compress.c: optimize aligned cost consideration and enable by default

5 years agoxpress_compress.c: rename a few variables
Eric Biggers [Sat, 19 Sep 2015 18:56:12 +0000 (13:56 -0500)]
xpress_compress.c: rename a few variables

5 years agolz_hash.h: remove unused code
Eric Biggers [Sat, 19 Sep 2015 18:56:11 +0000 (13:56 -0500)]
lz_hash.h: remove unused code

5 years agoRename 'pos_t' to 'mf_pos_t'
Eric Biggers [Sat, 19 Sep 2015 18:56:10 +0000 (13:56 -0500)]
Rename 'pos_t' to 'mf_pos_t'

5 years agoRemove LZX_ASSERT() (now almost unused)
Eric Biggers [Sat, 19 Sep 2015 18:56:10 +0000 (13:56 -0500)]
Remove LZX_ASSERT() (now almost unused)

5 years agobt_matchfinder optimizations
Eric Biggers [Sat, 19 Sep 2015 18:56:09 +0000 (13:56 -0500)]
bt_matchfinder optimizations

5 years agoAllow hc_matchfinder and bt_matchfinder to be "templated"
Eric Biggers [Sat, 19 Sep 2015 18:56:08 +0000 (13:56 -0500)]
Allow hc_matchfinder and bt_matchfinder to be "templated"

5 years agolzx_compress.c: optimize bit output
Eric Biggers [Sat, 19 Sep 2015 18:56:03 +0000 (13:56 -0500)]
lzx_compress.c: optimize bit output

5 years agolzx_compress.c: optimize output of items
Eric Biggers [Sat, 19 Sep 2015 18:56:02 +0000 (13:56 -0500)]
lzx_compress.c: optimize output of items

5 years agolzx_compress.c: optimization for lzx_compute_precode_items()
Eric Biggers [Sat, 19 Sep 2015 18:56:01 +0000 (13:56 -0500)]
lzx_compress.c: optimization for lzx_compute_precode_items()

5 years agohc_matchfinder optimizations
Eric Biggers [Sat, 19 Sep 2015 18:56:01 +0000 (13:56 -0500)]
hc_matchfinder optimizations

5 years agoGet rid of matchfinder_common.h and manual memsets
Eric Biggers [Sat, 19 Sep 2015 18:55:59 +0000 (13:55 -0500)]
Get rid of matchfinder_common.h and manual memsets

5 years agoSplit prefetch() into prefetchr() and prefetchw()
Eric Biggers [Sat, 19 Sep 2015 18:56:28 +0000 (13:56 -0500)]
Split prefetch() into prefetchr() and prefetchw()

5 years agosystem compression: force bootloader-accessed files to uncompressed if image is not...
Eric Biggers [Fri, 25 Sep 2015 00:57:06 +0000 (19:57 -0500)]
system compression: force bootloader-accessed files to uncompressed if image is not Windows 10

5 years agosystem compression: add several more exclusion patterns
Eric Biggers [Fri, 25 Sep 2015 00:57:01 +0000 (19:57 -0500)]
system compression: add several more exclusion patterns

5 years agoUpdate NEWS
Eric Biggers [Thu, 24 Sep 2015 04:05:50 +0000 (23:05 -0500)]
Update NEWS

5 years agosystem compression: force XPRESS4K on files accessed by Windows bootloader
Eric Biggers [Thu, 24 Sep 2015 03:30:34 +0000 (22:30 -0500)]
system compression: force XPRESS4K on files accessed by Windows bootloader

5 years agoWIMBoot / system compression: try WOFADK in addition to WOF
Eric Biggers [Thu, 24 Sep 2015 02:56:03 +0000 (21:56 -0500)]
WIMBoot / system compression: try WOFADK in addition to WOF

5 years agosystem compression: try to attach WOF if compression fails
Eric Biggers [Thu, 24 Sep 2015 02:54:32 +0000 (21:54 -0500)]
system compression: try to attach WOF if compression fails

5 years agosystem compression: fix for WOFADK on older Windows
Eric Biggers [Thu, 24 Sep 2015 02:01:23 +0000 (21:01 -0500)]
system compression: fix for WOFADK on older Windows

5 years agov1.8.3-BETA
Eric Biggers [Sat, 19 Sep 2015 18:21:18 +0000 (13:21 -0500)]
v1.8.3-BETA

5 years agoAlways specify AT_UNNAMED when opening unnamed stream with libntfs-3g
Eric Biggers [Sat, 19 Sep 2015 16:31:06 +0000 (11:31 -0500)]
Always specify AT_UNNAMED when opening unnamed stream with libntfs-3g

Using another empty string causes problems.

5 years agowimlib-imagex: improve error message
Eric Biggers [Sat, 19 Sep 2015 02:28:09 +0000 (21:28 -0500)]
wimlib-imagex: improve error message

Improved message if the user specifies the non-first part of a split WIM.

5 years agowimlib-imagex: add --ref option to wimdir
Eric Biggers [Wed, 16 Sep 2015 06:15:05 +0000 (01:15 -0500)]
wimlib-imagex: add --ref option to wimdir

5 years agoReplace BUILD_BUG_ON() with STATIC_ASSERT()
Eric Biggers [Sun, 13 Sep 2015 16:36:22 +0000 (11:36 -0500)]
Replace BUILD_BUG_ON() with STATIC_ASSERT()

5 years agoUpdate version-info
Eric Biggers [Thu, 27 Aug 2015 00:01:14 +0000 (19:01 -0500)]
Update version-info

Should have been done for v1.8.2.  Doesn't matter much since the only API
change was the addition of a few flags...

5 years agov1.8.2 v1.8.2
Eric Biggers [Sat, 22 Aug 2015 17:06:15 +0000 (12:06 -0500)]
v1.8.2

5 years agoUpdate NEWS
Eric Biggers [Sat, 22 Aug 2015 17:06:13 +0000 (12:06 -0500)]
Update NEWS

5 years agox86_cpu_features.c: xgetbv fix for old binutils
Eric Biggers [Sat, 22 Aug 2015 16:47:15 +0000 (11:47 -0500)]
x86_cpu_features.c: xgetbv fix for old binutils

5 years agox86_cpu_features.c: cpuid fix for x86_32 PIC with old GCC versions
Eric Biggers [Sat, 22 Aug 2015 16:27:12 +0000 (11:27 -0500)]
x86_cpu_features.c: cpuid fix for x86_32 PIC with old GCC versions

5 years agolzms_common.c: tweak opcode branching in lzms_x86_filter()
Eric Biggers [Sat, 22 Aug 2015 14:08:06 +0000 (09:08 -0500)]
lzms_common.c: tweak opcode branching in lzms_x86_filter()

5 years agoMention wofadk.sys in "compact" documentation
Eric Biggers [Tue, 18 Aug 2015 23:13:25 +0000 (18:13 -0500)]
Mention wofadk.sys in "compact" documentation

5 years agowin32_common.c: don't short-circuit when acquiring privileges
Eric Biggers [Tue, 18 Aug 2015 23:02:39 +0000 (18:02 -0500)]
win32_common.c: don't short-circuit when acquiring privileges

5 years agowin32_common.c: include SeManageVolumePrivilege in apply privileges
Eric Biggers [Tue, 18 Aug 2015 23:00:51 +0000 (18:00 -0500)]
win32_common.c: include SeManageVolumePrivilege in apply privileges

Based on a user report, this may be required for
FSCTL_SET_EXTERNAL_BACKING when using wofadk.sys.

5 years agolzms_common.c: tweak organization of x86 translation logic and improve comments
Eric Biggers [Mon, 17 Aug 2015 02:17:51 +0000 (21:17 -0500)]
lzms_common.c: tweak organization of x86 translation logic and improve comments

5 years agoLZMS: more bit decoding/encoding optimizations
Eric Biggers [Sun, 16 Aug 2015 17:00:48 +0000 (12:00 -0500)]
LZMS: more bit decoding/encoding optimizations

5 years agoUse 'restrict' on pointer arguments to all compress() and decompress() functions
Eric Biggers [Sun, 16 Aug 2015 19:09:09 +0000 (14:09 -0500)]
Use 'restrict' on pointer arguments to all compress() and decompress() functions

5 years agontfs-3g_capture.c: workaround for duplicate streams
Eric Biggers [Fri, 14 Aug 2015 03:53:11 +0000 (22:53 -0500)]
ntfs-3g_capture.c: workaround for duplicate streams

5 years agoUpdate references to specific Windows versions
Eric Biggers [Sat, 8 Aug 2015 20:05:59 +0000 (15:05 -0500)]
Update references to specific Windows versions

- Say "Vista" and later instead of listing specific versions
- Prefer "ISO" to "DVD"