wimlib
6 years agowimlib-imagex: Allow specifying LZMS compression
Eric Biggers [Tue, 24 Dec 2013 01:30:56 +0000 (19:30 -0600)]
wimlib-imagex: Allow specifying LZMS compression

6 years agoDo not wait full streams for WIMLIB_PROGRESS_MSG_WRITE_STREAMS
Eric Biggers [Tue, 24 Dec 2013 00:33:25 +0000 (18:33 -0600)]
Do not wait full streams for WIMLIB_PROGRESS_MSG_WRITE_STREAMS

6 years agoread_stream_list(): Fix calculation of next stream
Eric Biggers [Tue, 24 Dec 2013 00:11:41 +0000 (18:11 -0600)]
read_stream_list(): Fix calculation of next stream

6 years agowimoptimize: Add --pack-streams option
Eric Biggers [Tue, 24 Dec 2013 00:09:02 +0000 (18:09 -0600)]
wimoptimize:  Add --pack-streams option

6 years agoAdd new files for chunk compression
Eric Biggers [Mon, 23 Dec 2013 20:33:28 +0000 (14:33 -0600)]
Add new files for chunk compression

6 years agoread_compressed_wim_resource(): Fix reading chunk table
Eric Biggers [Mon, 23 Dec 2013 20:07:25 +0000 (14:07 -0600)]
read_compressed_wim_resource(): Fix reading chunk table

6 years agoCleanup
Eric Biggers [Mon, 23 Dec 2013 19:31:42 +0000 (13:31 -0600)]
Cleanup

6 years agoRewrite of write_stream_list(), and writing packed resources
Eric Biggers [Mon, 23 Dec 2013 08:14:37 +0000 (02:14 -0600)]
Rewrite of write_stream_list(), and writing packed resources

6 years agolzms-decompress.c: Fix comments
Eric Biggers [Sat, 21 Dec 2013 00:51:52 +0000 (18:51 -0600)]
lzms-decompress.c:  Fix comments

6 years agocreate_temporary_file(): Fix use-after-free
Eric Biggers [Sat, 21 Dec 2013 00:31:35 +0000 (18:31 -0600)]
create_temporary_file(): Fix use-after-free

6 years agoread_lookup_table(): Cleanup
Eric Biggers [Sat, 21 Dec 2013 00:21:30 +0000 (18:21 -0600)]
read_lookup_table(): Cleanup

6 years agoFix can_raw_copy()
Eric Biggers [Fri, 20 Dec 2013 23:32:41 +0000 (17:32 -0600)]
Fix can_raw_copy()

6 years agoFix RAW_CHUNKS reads
Eric Biggers [Fri, 20 Dec 2013 23:13:42 +0000 (17:13 -0600)]
Fix RAW_CHUNKS reads

6 years agoinit_output_bitstream(): Set bytes_remaining correctly
Eric Biggers [Fri, 20 Dec 2013 23:06:31 +0000 (17:06 -0600)]
init_output_bitstream(): Set bytes_remaining correctly

6 years agoCleanup and add more comments
Eric Biggers [Fri, 20 Dec 2013 22:59:15 +0000 (16:59 -0600)]
Cleanup and add more comments

6 years agoUse read_stream_list() for extraction
Eric Biggers [Fri, 20 Dec 2013 20:21:03 +0000 (14:21 -0600)]
Use read_stream_list() for extraction

6 years agoAdd read_stream_list()
Eric Biggers [Fri, 20 Dec 2013 07:26:04 +0000 (01:26 -0600)]
Add read_stream_list()

6 years agoAdd independent LZMS decompressor
Eric Biggers [Thu, 19 Dec 2013 16:24:38 +0000 (10:24 -0600)]
Add independent LZMS decompressor

6 years agoAdd kind-of-working LZMS decompression using cabinet.dll API
Eric Biggers [Sat, 14 Dec 2013 21:34:34 +0000 (15:34 -0600)]
Add kind-of-working LZMS decompression using cabinet.dll API

6 years agoTweak reading of concat runs
Eric Biggers [Sat, 14 Dec 2013 21:34:10 +0000 (15:34 -0600)]
Tweak reading of concat runs

6 years agoWin32: compile
Eric Biggers [Sat, 14 Dec 2013 18:34:08 +0000 (12:34 -0600)]
Win32: compile

6 years agoextract_streams_from_pipe(): Fix
Eric Biggers [Sat, 14 Dec 2013 17:20:50 +0000 (11:20 -0600)]
extract_streams_from_pipe(): Fix

6 years agoupdate; add lzms_decompress() stub
Eric Biggers [Sat, 14 Dec 2013 17:18:32 +0000 (11:18 -0600)]
update; add lzms_decompress() stub

6 years agoRead concat runs
Eric Biggers [Sat, 14 Dec 2013 07:41:05 +0000 (01:41 -0600)]
Read concat runs

6 years agoSplit wim_resource_spec from wim_lookup_table_entry
Eric Biggers [Sat, 14 Dec 2013 05:06:07 +0000 (23:06 -0600)]
Split wim_resource_spec from wim_lookup_table_entry

6 years agolzx_prepare_block_fast(): Increase max_offset
Eric Biggers [Fri, 13 Dec 2013 20:02:37 +0000 (14:02 -0600)]
lzx_prepare_block_fast(): Increase max_offset

6 years agoLZX decompress: Fix comment & docs
Eric Biggers [Fri, 13 Dec 2013 19:46:17 +0000 (13:46 -0600)]
LZX decompress: Fix comment & docs

6 years agoUse STACK_MAX
Eric Biggers [Fri, 13 Dec 2013 19:27:41 +0000 (13:27 -0600)]
Use STACK_MAX

6 years agowim.c: Cleanup
Eric Biggers [Fri, 13 Dec 2013 18:45:59 +0000 (12:45 -0600)]
wim.c: Cleanup

6 years agoverify_swm_set(): Check chunk size
Eric Biggers [Fri, 13 Dec 2013 18:43:37 +0000 (12:43 -0600)]
verify_swm_set(): Check chunk size

6 years agowrite_stream_list(): Cleanup
Eric Biggers [Fri, 13 Dec 2013 18:18:24 +0000 (12:18 -0600)]
write_stream_list(): Cleanup

6 years agoFix reading > 16 bits from bitstream
Eric Biggers [Fri, 13 Dec 2013 17:15:19 +0000 (11:15 -0600)]
Fix reading > 16 bits from bitstream

6 years agobitstream_put_bits(): Mask high-order bits
Eric Biggers [Fri, 13 Dec 2013 16:29:35 +0000 (10:29 -0600)]
bitstream_put_bits(): Mask high-order bits

6 years agocmp_nodes_by_freq(): Correctly handle large frequencies
Eric Biggers [Fri, 13 Dec 2013 16:20:43 +0000 (10:20 -0600)]
cmp_nodes_by_freq(): Correctly handle large frequencies

6 years agowim_recalculate_refcnts(): Check for error
Eric Biggers [Fri, 13 Dec 2013 16:11:28 +0000 (10:11 -0600)]
wim_recalculate_refcnts(): Check for error

6 years agofile_io.c: Cleanup
Eric Biggers [Fri, 13 Dec 2013 16:07:43 +0000 (10:07 -0600)]
file_io.c: Cleanup

6 years agoresource.c: Fix check for invalid chunk size
Eric Biggers [Fri, 13 Dec 2013 15:59:43 +0000 (09:59 -0600)]
resource.c:  Fix check for invalid chunk size

6 years agoresource.c: Fix reading pipable resources
Eric Biggers [Fri, 13 Dec 2013 09:27:48 +0000 (03:27 -0600)]
resource.c:  Fix reading pipable resources

6 years agopaths.c: Cleanup
Eric Biggers [Fri, 13 Dec 2013 09:20:20 +0000 (03:20 -0600)]
paths.c:  Cleanup

6 years agoresource.c: Cleanup and refactor
Eric Biggers [Fri, 13 Dec 2013 08:15:27 +0000 (02:15 -0600)]
resource.c:  Cleanup and refactor

6 years agoFix error/warning conditional
Eric Biggers [Thu, 12 Dec 2013 19:59:06 +0000 (13:59 -0600)]
Fix error/warning conditional

6 years agoVariable LZX window sizes
Eric Biggers [Thu, 12 Dec 2013 19:56:37 +0000 (13:56 -0600)]
Variable LZX window sizes

6 years agoVariable chunk size support (currently XPRESS only)
Eric Biggers [Mon, 9 Dec 2013 06:26:22 +0000 (00:26 -0600)]
Variable chunk size support (currently XPRESS only)

6 years agoClean up other compression/decompression code
Eric Biggers [Mon, 9 Dec 2013 03:06:57 +0000 (21:06 -0600)]
Clean up other compression/decompression code

6 years agowimcapture: Document --compress-slow v1.5.3
Eric Biggers [Sun, 8 Dec 2013 09:24:22 +0000 (03:24 -0600)]
wimcapture: Document --compress-slow

6 years agowimoptimize: make --recompress-slow imply --compress=maximum
Eric Biggers [Sun, 8 Dec 2013 09:17:10 +0000 (03:17 -0600)]
wimoptimize: make --recompress-slow imply --compress=maximum

6 years agoMakefile.am: Fix EXTRA_DIST
Eric Biggers [Sun, 8 Dec 2013 09:11:07 +0000 (03:11 -0600)]
Makefile.am:  Fix EXTRA_DIST

6 years agoAllow changing WIM compression type
Eric Biggers [Sun, 8 Dec 2013 09:10:25 +0000 (03:10 -0600)]
Allow changing WIM compression type

6 years agowimoptimize: Add --recompress-slow, imply --recompress
Eric Biggers [Sun, 8 Dec 2013 08:26:55 +0000 (02:26 -0600)]
wimoptimize:  Add --recompress-slow, imply --recompress

6 years agoFix wimoptimize help
Eric Biggers [Sun, 8 Dec 2013 08:19:51 +0000 (02:19 -0600)]
Fix wimoptimize help

6 years agolzx-compress.c: Cleanup
Eric Biggers [Sun, 8 Dec 2013 08:14:55 +0000 (02:14 -0600)]
lzx-compress.c:  Cleanup

6 years agoAdd --compress-slow back to wimoptimize help
Eric Biggers [Sun, 8 Dec 2013 07:05:23 +0000 (01:05 -0600)]
Add --compress-slow back to wimoptimize help

6 years agoRemove unused files from programs/
Eric Biggers [Sun, 8 Dec 2013 06:52:32 +0000 (00:52 -0600)]
Remove unused files from programs/

wimapply.c was redundant with examples/applywim.c and was prone to be
confused with the 'wimapply' alias for 'wimlib-imagex apply'.

install.cmd was just an example script for a specific usage that wasn't
explained anywhere.

6 years agoRemove unused LZX compression code
Eric Biggers [Sun, 8 Dec 2013 06:48:33 +0000 (00:48 -0600)]
Remove unused LZX compression code

6 years agoUpdate clang-scan-build.sh
Eric Biggers [Sun, 8 Dec 2013 06:43:10 +0000 (00:43 -0600)]
Update clang-scan-build.sh

6 years agoUpdate version (v1.5.3)
Eric Biggers [Sun, 8 Dec 2013 06:36:47 +0000 (00:36 -0600)]
Update version (v1.5.3)

6 years agoMerge LZX compressor updates
Eric Biggers [Sun, 8 Dec 2013 06:07:37 +0000 (00:07 -0600)]
Merge LZX compressor updates

- Use a suffix array-based match-finder (construction code borrowed from
  libdivsufsort).  Ideal for this case because compression in WIM chunks
  does not use a sliding window.
- Disable block splitting by default (no efficient and effective
  algorithm is available yet)

6 years agoAdd wimlib_get_xml_data() API
Eric Biggers [Sat, 7 Dec 2013 01:04:19 +0000 (19:04 -0600)]
Add wimlib_get_xml_data() API

6 years agoxml.c: Fix writing <WINDOWS> element
Eric Biggers [Sat, 7 Dec 2013 00:40:57 +0000 (18:40 -0600)]
xml.c:  Fix writing <WINDOWS> element

A positive return value of xmlTextWriterEndElement would be incorrectly
passed up the call chain, causing an unexpected error when writing the
XML data.

6 years agowimlib_mount_image(): Correctly handle unnamed stream in ADS entries
Eric Biggers [Mon, 18 Nov 2013 03:35:13 +0000 (21:35 -0600)]
wimlib_mount_image():  Correctly handle unnamed stream in ADS entries

6 years agoFix wimlib_lzx_compress()
Eric Biggers [Mon, 18 Nov 2013 01:48:39 +0000 (19:48 -0600)]
Fix wimlib_lzx_compress()

6 years agostruct wimlib_lzx_params: Don't use anonymous union v1.5.2
Eric Biggers [Mon, 18 Nov 2013 00:13:34 +0000 (18:13 -0600)]
struct wimlib_lzx_params: Don't use anonymous union

6 years agoUpdate version info and NEWS in preparation for v1.5.2
Eric Biggers [Sun, 17 Nov 2013 23:18:30 +0000 (17:18 -0600)]
Update version info and NEWS in preparation for v1.5.2

6 years agoComment fixes / cleanups
Eric Biggers [Sun, 17 Nov 2013 23:09:02 +0000 (17:09 -0600)]
Comment fixes / cleanups

6 years agoMerge experimental LZX compressor
Eric Biggers [Sun, 17 Nov 2013 22:12:49 +0000 (16:12 -0600)]
Merge experimental LZX compressor

6 years agoImprove rename behavior on Windows
Eric Biggers [Thu, 14 Nov 2013 01:41:11 +0000 (19:41 -0600)]
Improve rename behavior on Windows

Attempt to handle the case where another process has the destination file
open by renaming and deleting the destination file.

6 years agoimagex.c: Fix string literal used in oom path only
Eric Biggers [Thu, 14 Nov 2013 00:09:27 +0000 (18:09 -0600)]
imagex.c:  Fix string literal used in oom path only

6 years agoAdd notes about possible new WIM format and LZMS compression
Eric Biggers [Wed, 13 Nov 2013 08:05:59 +0000 (02:05 -0600)]
Add notes about possible new WIM format and LZMS compression

6 years agoUpdate NEWS
Eric Biggers [Wed, 13 Nov 2013 02:59:30 +0000 (20:59 -0600)]
Update NEWS

6 years agoAdd ADS entry workaround
Eric Biggers [Wed, 13 Nov 2013 02:48:43 +0000 (20:48 -0600)]
Add ADS entry workaround

Some versions of Microsoft's WIM software (the boot driver(s) in WinPE
3.0, for example) contain a bug where they assume the first alternate
data stream (ADS) entry of a dentry with a nonzero ADS count specifies
the unnamed stream, even if it has a name and the unnamed stream is
already specified in the hash field of the dentry itself.

wimlib now works around this behavior by carefully emulating the behavior
of (most versions of) ImageX/WIMGAPI, which move the unnamed stream
reference into the alternate stream entries whenever there are named data
streams, even though there is already a field in the dentry itself for
the unnamed stream reference, which then goes to waste.

6 years agowrite.c: Fix two minor bugs in error paths
Eric Biggers [Sun, 3 Nov 2013 05:01:23 +0000 (00:01 -0500)]
write.c:  Fix two minor bugs in error paths

- Ensure that overwrite_wim_inplace() restores the original header if it
  is unable to complete successfully.
- If overwrite_wim_inplace() fails after having set
  WIM_HDR_FLAG_WRITE_IN_PROGRESS in the physical file's header, attempt
  to clear it.

6 years agontfs_3g_apply.c: Remove unused variable
Eric Biggers [Fri, 1 Nov 2013 05:28:09 +0000 (00:28 -0500)]
ntfs_3g_apply.c:  Remove unused variable

6 years ago{lzx,xpress}_decode_match(): Fix undefined pointer evalution
Eric Biggers [Fri, 1 Nov 2013 05:19:32 +0000 (00:19 -0500)]
{lzx,xpress}_decode_match():  Fix undefined pointer evalution

According to C99 6.5.6.8, calculating a pointer that points before the
allocated object has undefined behavior.  However, this was done by
lzx_decode_match() and xpress_decode_match() if they received a match
pointing before the end of the window (invalid match offset).  This
commit fixes this check to be fully defined.

This change likely has no visible effect in actual builds, e.g. with gcc.

6 years agonew_wim_struct(): Don't dereference NULL in out-of-memory case
Eric Biggers [Fri, 1 Nov 2013 04:51:47 +0000 (23:51 -0500)]
new_wim_struct():  Don't dereference NULL in out-of-memory case

6 years agolzx-decompress.c: Fix alignment bug
Eric Biggers [Sat, 12 Oct 2013 00:11:41 +0000 (19:11 -0500)]
lzx-decompress.c:  Fix alignment bug

The pretree decode table was not declared to be 16 byte aligned, as
expected by make_huffman_decode_table().

This bug had no effect if the compiler aligned this table on a 16 byte
boundary anyway, but if not it caused a segmentation fault on x86 platforms
where the SSE2 instructions were available, since in that case stores
requiring 16 byte alignment are used to fill in table entries.

6 years agoarchlinux/PKGBUILD: Fix pkgdesc
Eric Biggers [Fri, 11 Oct 2013 19:46:01 +0000 (14:46 -0500)]
archlinux/PKGBUILD:  Fix pkgdesc

6 years agomkwinpeimg: Quote $0 v1.5.1
Eric Biggers [Fri, 11 Oct 2013 16:06:49 +0000 (11:06 -0500)]
mkwinpeimg:  Quote $0

6 years agowimcapture: Allow specifying `--delta-from' multiple times
Eric Biggers [Fri, 11 Oct 2013 15:38:45 +0000 (10:38 -0500)]
wimcapture:  Allow specifying `--delta-from' multiple times

6 years agoimagex.c: Rename `struct refglob_set' => `struct string_set'
Eric Biggers [Fri, 11 Oct 2013 14:49:20 +0000 (09:49 -0500)]
imagex.c:  Rename `struct refglob_set' => `struct string_set'

6 years agoUpdate version number to 1.5.1
Eric Biggers [Fri, 11 Oct 2013 14:38:50 +0000 (09:38 -0500)]
Update version number to 1.5.1

6 years agoUpdate NEWS
Eric Biggers [Mon, 7 Oct 2013 07:00:54 +0000 (02:00 -0500)]
Update NEWS

6 years agoImplement workaround for NTFS-3g bug when handling empty DACLs
Eric Biggers [Mon, 7 Oct 2013 06:55:07 +0000 (01:55 -0500)]
Implement workaround for NTFS-3g bug when handling empty DACLs

6 years agoNEWS: Clarify bugfix
Eric Biggers [Fri, 20 Sep 2013 17:16:46 +0000 (12:16 -0500)]
NEWS:  Clarify bugfix

6 years agodo_extract_warnings(): Adjust wording of warning
Eric Biggers [Tue, 17 Sep 2013 00:54:14 +0000 (19:54 -0500)]
do_extract_warnings():  Adjust wording of warning

6 years agoimagex-capture.1.in: Fix brackets in --update-of docs
Eric Biggers [Mon, 16 Sep 2013 04:08:06 +0000 (23:08 -0500)]
imagex-capture.1.in:  Fix brackets in --update-of docs

6 years agoimagex_capture_or_append(): Correctly use template_wim
Eric Biggers [Mon, 16 Sep 2013 04:06:10 +0000 (23:06 -0500)]
imagex_capture_or_append():  Correctly use template_wim

6 years agoxml.c: Define more architecture constants
Eric Biggers [Sun, 15 Sep 2013 20:50:28 +0000 (15:50 -0500)]
xml.c:  Define more architecture constants

6 years agobegin_read(): Fix comment
Eric Biggers [Sun, 15 Sep 2013 19:38:18 +0000 (14:38 -0500)]
begin_read():  Fix comment

6 years agoread_wim_lookup_table(): Ignore metadata entries with refcnt == 0
Eric Biggers [Fri, 13 Sep 2013 15:07:44 +0000 (10:07 -0500)]
read_wim_lookup_table():  Ignore metadata entries with refcnt == 0

If the WIM lookup table lists metadata resources with no references, ignore
them.  This unexpected case appears in WIMs appearing in WAIK v2.1.

6 years agodentry_extract_skeleton(): Fix bug with DOS name reordering
Eric Biggers [Mon, 2 Sep 2013 14:03:55 +0000 (09:03 -0500)]
dentry_extract_skeleton():  Fix bug with DOS name reordering

When choosing a different dentry for an inode being extracted, the code didn't
check if it was actually in the tree being extracted.

This bug could cause an infinite loop in extraction backends that required DOS
name reordering and also allowed extracting only a subset of an image---
currently, just the Windows backend.

6 years agowin32_get_security_descriptor(): Use errno
Eric Biggers [Mon, 2 Sep 2013 14:03:50 +0000 (09:03 -0500)]
win32_get_security_descriptor():  Use errno

6 years agoUpdate release scripts v1.5.0
Eric Biggers [Sun, 1 Sep 2013 21:32:12 +0000 (16:32 -0500)]
Update release scripts

6 years agowimlib.h: Group declarations into modules
Eric Biggers [Sun, 1 Sep 2013 20:56:57 +0000 (15:56 -0500)]
wimlib.h:  Group declarations into modules

6 years agowimlib_iterate_dir_tree(): Define behavior when resources missing
Eric Biggers [Sun, 1 Sep 2013 16:12:59 +0000 (11:12 -0500)]
wimlib_iterate_dir_tree():  Define behavior when resources missing

6 years agoReplace WIMLIB_OPEN_FLAG_SPLIT_OK with WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT
Eric Biggers [Sun, 1 Sep 2013 06:23:44 +0000 (01:23 -0500)]
Replace WIMLIB_OPEN_FLAG_SPLIT_OK with WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT

Having to specify a special flag to open split WIM parts is no longer very
useful, since error codes will be automatically be issued when needed metadata
or file resources are not found, and this flag wouldn't affect delta WIMs which
resemble split WIMs anyway, and clients could just check themselves whether a
WIM is split.  Therefore, make the default be like WIMLIB_OPEN_FLAG_SPLIT_OK,
but for completeness offer a flag WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT to get
behavior like the old default.

Also updated the documentation in wimlib.h.

6 years agowimlib.h: Move `enum wimlib_update_op' to global scope
Eric Biggers [Sun, 1 Sep 2013 03:00:44 +0000 (22:00 -0500)]
wimlib.h:  Move `enum wimlib_update_op' to global scope

6 years agofinish_write(): Add a few more comments
Eric Biggers [Sun, 1 Sep 2013 01:57:23 +0000 (20:57 -0500)]
finish_write():  Add a few more comments

6 years agowrite_integrity_table(): Fix documented return values
Eric Biggers [Sun, 1 Sep 2013 01:47:03 +0000 (20:47 -0500)]
write_integrity_table():  Fix documented return values

6 years agofinish_write(): Fix comment
Eric Biggers [Sun, 1 Sep 2013 01:41:28 +0000 (20:41 -0500)]
finish_write():  Fix comment

6 years agowrite_pipable_wim(): Fix/improve comment
Eric Biggers [Sun, 1 Sep 2013 01:35:56 +0000 (20:35 -0500)]
write_pipable_wim():  Fix/improve comment