wimlib
3 years agotests: test capturing+applying file with negative UNIX timestamp
Eric Biggers [Wed, 19 Apr 2017 06:58:03 +0000 (23:58 -0700)]
tests: test capturing+applying file with negative UNIX timestamp

... and start comparing mtime in tree-cmp, and fix cases where return
codes in scripts were being ignored by use of '&&'.

3 years agowlfuzz: compare timestamps
Eric Biggers [Wed, 19 Apr 2017 06:58:03 +0000 (23:58 -0700)]
wlfuzz: compare timestamps

3 years agoImproved year 2038 safety
Eric Biggers [Wed, 19 Apr 2017 06:58:03 +0000 (23:58 -0700)]
Improved year 2038 safety

Make wimlib on 32-bit Windows year 2038 safe by doing the following:

- Build both the library and program with 64-bit time_t, being careful
  to avoid changing the timespec struct exposed in the API.
- Update wimlib's API to include an extended seconds field in
  wimlib_dir_entry for each timestamp, and set it when tv_sec is 32-bit.
- When needing the current time, call GetSystemTimeAsFileTime() instead
  of MinGW's gettimeofday().

This also has the advantage that due to switching to the 64-bit time_t
functions, 32-bit wimlib-imagex.exe now prints timestamps prior to year
1970 correctly.

Unfortunately, despite the API improvement, we cannot at this time make
wimlib fully Y2038-safe on 32-bit UNIX, due to lack of OS support.

3 years agotimestamp.c: correctly convert negative UNIX timestamps
Eric Biggers [Wed, 19 Apr 2017 06:58:03 +0000 (23:58 -0700)]
timestamp.c: correctly convert negative UNIX timestamps

3 years agontfs-3g_apply.c: note bugs fixed in NTFS-3G version 2017.3.23
Eric Biggers [Sat, 8 Apr 2017 17:48:04 +0000 (10:48 -0700)]
ntfs-3g_apply.c: note bugs fixed in NTFS-3G version 2017.3.23

3 years agoavl_tree.h: avoid bad function pointer cast
Eric Biggers [Sun, 29 Jan 2017 05:18:21 +0000 (21:18 -0800)]
avl_tree.h: avoid bad function pointer cast

Casting the type of the 'cmp' function, while under normal circumstances
compiled correctly, was not technically correct and was not compatible
with some control flow integrity (CFI) implementations.

3 years agoAdd tools/clang-build-with-cfi
Eric Biggers [Sat, 28 Jan 2017 23:14:23 +0000 (15:14 -0800)]
Add tools/clang-build-with-cfi

3 years agov1.11.0 v1.11.0
Eric Biggers [Wed, 18 Jan 2017 05:24:53 +0000 (21:24 -0800)]
v1.11.0

3 years agoexamples/compressfile.c: add back colon that got deleted
Eric Biggers [Wed, 18 Jan 2017 04:32:54 +0000 (20:32 -0800)]
examples/compressfile.c: add back colon that got deleted

3 years agotagged_items.c: statically verify size of tagged item header
Eric Biggers [Wed, 18 Jan 2017 04:32:54 +0000 (20:32 -0800)]
tagged_items.c: statically verify size of tagged item header

3 years agoxattr.h: statically verify size of xattr header
Eric Biggers [Wed, 18 Jan 2017 04:32:54 +0000 (20:32 -0800)]
xattr.h: statically verify size of xattr header

3 years agolzx_compress: optimize storing information in lzx_sequence
Eric Biggers [Sun, 15 Jan 2017 21:34:36 +0000 (13:34 -0800)]
lzx_compress: optimize storing information in lzx_sequence

Pack the literal run length and match length ourselves instead of using
bitfields, and store the actual match length instead of the adjusted
match length.  Also make matchlen=0 represent end-of-block, and store
the full main symbol, not just the match header.

3 years agoDon't generate GUID in wimlib_create_new_wim()
Eric Biggers [Sun, 15 Jan 2017 01:00:13 +0000 (17:00 -0800)]
Don't generate GUID in wimlib_create_new_wim()

It's not necessary to generate a GUID in wimlib_create_new_wim() because
one is generated later by wimlib_write(), and nothing seems to assume
that a WIMStruct not yet backed by a file has a valid GUID.  This saves
a call to get_random_bytes().  Also remove some unnecessary
initializations to 0.

3 years agolzx_compress: fix corruption with long literal run
Eric Biggers [Sat, 14 Jan 2017 08:56:39 +0000 (00:56 -0800)]
lzx_compress: fix corruption with long literal run

The last round of updates to the LZX compressor made it start being able
to use larger blocks, up to ~100KB.  Unfortunately it was overlooked
that this allows literal runs > 65535 bytes while in one place the
length of a literal run was still being stored in a u16.  Therefore, on
incompressible input data this could be wrapped around, causing
incorrect compression.  Fix this by enlarging the variable.

3 years agowimappend: support --delta-from option
Eric Biggers [Fri, 13 Jan 2017 04:04:18 +0000 (20:04 -0800)]
wimappend: support --delta-from option

--delta-from was previously only supported by wimcapture.  But it is
trivial to make wimappend support it too, and it could be useful.

3 years agohc_matchfinder: use well-defined initialization of best_matchptr
Eric Biggers [Sun, 8 Jan 2017 06:34:32 +0000 (22:34 -0800)]
hc_matchfinder: use well-defined initialization of best_matchptr

The initial value of best_matchptr is not truly used, but since we do
always compute 'in_next - best_matchptr', assign an initial value which
avoids undefined behavior.

3 years agounix_apply.c: use #ifdef HAVE_XATTR_SUPPORT, not #if HAVE_XATTR_SUPPORT
Eric Biggers [Sun, 8 Jan 2017 00:05:21 +0000 (16:05 -0800)]
unix_apply.c: use #ifdef HAVE_XATTR_SUPPORT, not #if HAVE_XATTR_SUPPORT

3 years agoextract.c: recommend --unix-data mode when appropriate
Eric Biggers [Sat, 7 Jan 2017 23:08:09 +0000 (15:08 -0800)]
extract.c: recommend --unix-data mode when appropriate

3 years agotagged_items: rename inode_set_tagged_data() to inode_set_tagged_item()
Eric Biggers [Sat, 7 Jan 2017 22:35:07 +0000 (14:35 -0800)]
tagged_items: rename inode_set_tagged_data() to inode_set_tagged_item()

(for consistency with inode_get_tagged_item())

3 years agowimdir: make documention correctly reflect that IMAGE is optional
Eric Biggers [Sat, 7 Jan 2017 22:35:06 +0000 (14:35 -0800)]
wimdir: make documention correctly reflect that IMAGE is optional

3 years agowimmount.1: mention long forms
Eric Biggers [Sat, 7 Jan 2017 22:35:06 +0000 (14:35 -0800)]
wimmount.1: mention long forms

3 years agowimlib-imagex: fix recommendation to read PDF documentation
Eric Biggers [Sat, 7 Jan 2017 22:35:06 +0000 (14:35 -0800)]
wimlib-imagex: fix recommendation to read PDF documentation

Recommend wimFOO.pdf instead of wimlib-imagex-FOO.pdf.  (Also `man
wimFOO` instead of `man wimlib-imagex-FOO'.)

3 years agov1.11.0-BETA5
Eric Biggers [Mon, 2 Jan 2017 00:19:25 +0000 (18:19 -0600)]
v1.11.0-BETA5

3 years agowlfuzz: sometimes generate security.capability xattrs
Eric Biggers [Sun, 1 Jan 2017 23:44:19 +0000 (17:44 -0600)]
wlfuzz: sometimes generate security.capability xattrs

3 years agounix_apply.c: fix applying security xattrs
Eric Biggers [Sun, 1 Jan 2017 23:44:19 +0000 (17:44 -0600)]
unix_apply.c: fix applying security xattrs

3 years agoDocumentation updates, mainly to the man pages
Eric Biggers [Sun, 1 Jan 2017 23:44:18 +0000 (17:44 -0600)]
Documentation updates, mainly to the man pages

- Use short command names like wimFOO instead of wimlib-imagex FOO
- Lots of other small improvements

3 years agov1.11.0-BETA4
Eric Biggers [Wed, 28 Dec 2016 04:36:28 +0000 (22:36 -0600)]
v1.11.0-BETA4

3 years agowlfuzz: generate and compare extended attributes
Eric Biggers [Tue, 27 Dec 2016 23:24:56 +0000 (17:24 -0600)]
wlfuzz: generate and compare extended attributes

3 years agowlfuzz: generate and compare standard UNIX file permissions and special files
Eric Biggers [Tue, 27 Dec 2016 23:24:56 +0000 (17:24 -0600)]
wlfuzz: generate and compare standard UNIX file permissions and special files

3 years agowlfuzz: generate and compare symlinks
Eric Biggers [Tue, 27 Dec 2016 23:24:56 +0000 (17:24 -0600)]
wlfuzz: generate and compare symlinks

3 years agowlfuzz: generate and compare object IDs
Eric Biggers [Tue, 27 Dec 2016 23:24:56 +0000 (17:24 -0600)]
wlfuzz: generate and compare object IDs

3 years agowlfuzz: don't generate hard linked reparse points
Eric Biggers [Tue, 27 Dec 2016 23:24:56 +0000 (17:24 -0600)]
wlfuzz: don't generate hard linked reparse points

3 years agowlfuzz: don't generate . and .. filenames
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
wlfuzz: don't generate . and .. filenames

3 years agowlfuzz: compare generated image after just writing it out
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
wlfuzz: compare generated image after just writing it out

3 years agoDocument xattr support
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
Document xattr support

3 years agounix_apply.c: support applying extended attributes
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
unix_apply.c: support applying extended attributes

3 years agounix_capture.c: support capturing extended attributes
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
unix_capture.c: support capturing extended attributes

3 years agoAdd new error codes for xattr extraction errors
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
Add new error codes for xattr extraction errors

3 years agoAdd basic infrastructure for storing xattr items
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
Add basic infrastructure for storing xattr items

Define a new tagged metadata item to hold a list of names and values of
Linux-style extended attributes, and prepare for supporting
capture/apply of extended attributes.

I considered making the xattrs a stream instead, referenced from the
tagged item which would just hold a hash.  This would have allowed
xattrs to be deduplicated between files.  However, I ultimately decided
against this because WIMGAPI and older versions of wimlib would discard
the streams on optimize/export, and extraction would be much more
complicated because xattr streams could come up for extraction before
other streams --- which would be especially problematic for symlinks.

3 years agotagged_items updates
Eric Biggers [Tue, 27 Dec 2016 23:24:55 +0000 (17:24 -0600)]
tagged_items updates

- Expose tagged_item functions in new header tagged_items.h
- Make object_id functions inline functions in object_id.h
- Make inode_get_tagged_item() return stored length, not aligned length
- Add a new function inode_set_tagged_data() which removes existing
  items before setting the new one, and use it for inode_set_object_id()
- Make inode_add_tagged_item() append item rather than prepend
- Keep items 8-byte aligned in memory

3 years ago.gitignore: ignore files generated by running tests
Eric Biggers [Tue, 27 Dec 2016 03:18:39 +0000 (21:18 -0600)]
.gitignore: ignore files generated by running tests

3 years agoImprove random number generation
Eric Biggers [Tue, 27 Dec 2016 02:27:29 +0000 (20:27 -0600)]
Improve random number generation

wimlib used rand() to generate random numbers, e.g. for GUIDs.  This was
neither cryptographically secure nor thread-safe.  Use getrandom(),
/dev/urandom, or RtlGenRandom() instead.

3 years agoConstify some data
Eric Biggers [Sun, 18 Dec 2016 09:19:26 +0000 (01:19 -0800)]
Constify some data

3 years agojoin.c: clean up verify_swm_set()
Eric Biggers [Sat, 17 Dec 2016 03:47:44 +0000 (19:47 -0800)]
join.c: clean up verify_swm_set()

UBSAN complained when the parts_to_swms array had 0 length.  Clean this
up by sorting the parts first, making the verification simpler.  Also
don't bother checking compression_type and chunk_size anymore; checking
guid should be sufficient, and it doesn't really matter if the
compression formats are different since now everything will be written
out correctly anyway.

3 years agoutil.c: check for calloc multiplication overflow
Eric Biggers [Sat, 17 Dec 2016 03:47:44 +0000 (19:47 -0800)]
util.c: check for calloc multiplication overflow

3 years agolcpit_matchfinder.c: update link to libdivsufsort
Eric Biggers [Sat, 17 Dec 2016 03:47:44 +0000 (19:47 -0800)]
lcpit_matchfinder.c: update link to libdivsufsort

3 years agowlfuzz: don't generate reserved short names with extension
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
wlfuzz: don't generate reserved short names with extension

3 years agowlfuzz: updates for sparse files
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
wlfuzz: updates for sparse files

3 years agowin32-test-imagex-capture_and_apply: sparse file tests
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
win32-test-imagex-capture_and_apply: sparse file tests

3 years agoExtract sparse files as sparse
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
Extract sparse files as sparse

When extracting a stream belonging to an inode with
FILE_ATTRIBUTE_SPARSE_FILE set, before writing any data, mark the
extracted stream as sparse if needed and skip preallocating space.
Then, skip writing zero regions.  This makes it so that sparse files are
still sparse after extraction.

3 years agounix_apply.c: preallocate space for regular files
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
unix_apply.c: preallocate space for regular files

3 years agounix_capture.c: mark regular files as sparse when appropriate
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
unix_capture.c: mark regular files as sparse when appropriate

3 years agoresource: pass blob and offset to consume_chunk
Eric Biggers [Thu, 15 Dec 2016 04:49:55 +0000 (20:49 -0800)]
resource: pass blob and offset to consume_chunk

This makes it so that users don't need to keep track of the current blob
and offset themselves.

3 years agoImproved handling of Data Deduplication reparse points
Eric Biggers [Sat, 3 Dec 2016 06:48:23 +0000 (22:48 -0800)]
Improved handling of Data Deduplication reparse points

3 years agov1.11.0-BETA1
Eric Biggers [Mon, 28 Nov 2016 03:38:50 +0000 (19:38 -0800)]
v1.11.0-BETA1

3 years agoexamples: C++ and Windows compatibility
Eric Biggers [Mon, 28 Nov 2016 03:19:41 +0000 (19:19 -0800)]
examples: C++ and Windows compatibility

3 years agoInclude import library and header in Windows releases
Eric Biggers [Sun, 27 Nov 2016 23:37:21 +0000 (15:37 -0800)]
Include import library and header in Windows releases

3 years agowimlib.h: define bool for old MSVC versions
Eric Biggers [Sun, 27 Nov 2016 23:24:38 +0000 (15:24 -0800)]
wimlib.h: define bool for old MSVC versions

It's also unnecessary to define bool in C++ mode.

3 years agowimlib.h: include <stdint.h> instead of <inttypes.h>
Eric Biggers [Sun, 27 Nov 2016 23:24:37 +0000 (15:24 -0800)]
wimlib.h: include <stdint.h> instead of <inttypes.h>

We only need stdint.h, and old (VS pre-2013) MSVC versions don't have
inttypes.h.

3 years agowimlib.h: test _WIN32 instead of __WIN32__
Eric Biggers [Sun, 27 Nov 2016 23:24:37 +0000 (15:24 -0800)]
wimlib.h: test _WIN32 instead of __WIN32__

MSVC defines _WIN32 but not __WIN32__.  MinGW defines both.

3 years agowimlib.h: define timespec for MSVC compatibility
Eric Biggers [Sun, 27 Nov 2016 23:24:36 +0000 (15:24 -0800)]
wimlib.h: define timespec for MSVC compatibility

3 years agowlfuzz: note Windows restrictions on short names
Eric Biggers [Sun, 27 Nov 2016 23:24:36 +0000 (15:24 -0800)]
wlfuzz: note Windows restrictions on short names

3 years agowlfuzz: allow short name associated with long name ending with dot or space
Eric Biggers [Sun, 27 Nov 2016 23:24:35 +0000 (15:24 -0800)]
wlfuzz: allow short name associated with long name ending with dot or space

3 years agontfs-3g_apply.c: add message about another known libntfs-3g bug
Eric Biggers [Sun, 27 Nov 2016 23:24:34 +0000 (15:24 -0800)]
ntfs-3g_apply.c: add message about another known libntfs-3g bug

3 years agoREADME.WINDOWS: document building with release script
Eric Biggers [Thu, 17 Nov 2016 07:03:04 +0000 (23:03 -0800)]
README.WINDOWS: document building with release script

3 years agointegrity.c: add casts when converting endianness in-place
Eric Biggers [Thu, 17 Nov 2016 05:32:13 +0000 (21:32 -0800)]
integrity.c: add casts when converting endianness in-place

This fixes some 'sparse' warnings.  No change in behavior.

3 years agoregistry.c: be explicit with le16 => bool conversion
Eric Biggers [Thu, 17 Nov 2016 05:32:12 +0000 (21:32 -0800)]
registry.c: be explicit with le16 => bool conversion

This fixes some 'sparse' warnings.  No change in behavior.

3 years agocompiler.h: define STATIC_ASSERT() to no-op when checking with sparse
Eric Biggers [Thu, 17 Nov 2016 05:32:11 +0000 (21:32 -0800)]
compiler.h: define STATIC_ASSERT() to no-op when checking with sparse

The expression used in STATIC_ASSERT() was not compatible with 'sparse'.

3 years agoextract.c: don't use ifdef within macro argument
Eric Biggers [Thu, 17 Nov 2016 05:32:10 +0000 (21:32 -0800)]
extract.c: don't use ifdef within macro argument

This was nonstandard and 'sparse' complained about it.

3 years agoAdd script to run 'sparse' static analyzer
Eric Biggers [Thu, 17 Nov 2016 05:32:10 +0000 (21:32 -0800)]
Add script to run 'sparse' static analyzer

3 years agoMakefile.am: include nasm_lt.sh in release tarball
Eric Biggers [Tue, 15 Nov 2016 01:45:11 +0000 (17:45 -0800)]
Makefile.am: include nasm_lt.sh in release tarball

Configuring with --enable-ssse3-sha1 did not work from a release tarball
because build-aux/nasm_lt.sh was missing.  Add it.

4 years agomkwinpeimg: use case insensitive mode when updating boot.wim
Eric Biggers [Sat, 8 Oct 2016 02:59:14 +0000 (19:59 -0700)]
mkwinpeimg: use case insensitive mode when updating boot.wim

It was reported that some Windows PE images have a system directory
called "windows" rather than "Windows".  Use case insensitive mode to
ensure added files go to the right place.

4 years agoutil.c: for aligned_malloc, store original pointer directly
Eric Biggers [Thu, 15 Sep 2016 03:46:10 +0000 (20:46 -0700)]
util.c: for aligned_malloc, store original pointer directly

4 years agowim.c: langinfo.h no longer needs to be included
Eric Biggers [Thu, 15 Sep 2016 03:32:11 +0000 (20:32 -0700)]
wim.c: langinfo.h no longer needs to be included

4 years agov1.10.0 v1.10.0
Eric Biggers [Sat, 20 Aug 2016 03:13:27 +0000 (20:13 -0700)]
v1.10.0

4 years agoregistry: avoid negating INT32_MIN
Eric Biggers [Fri, 19 Aug 2016 07:25:44 +0000 (00:25 -0700)]
registry: avoid negating INT32_MIN

4 years agowimexport: allow exporting to archive directly on block device
Eric Biggers [Tue, 16 Aug 2016 06:55:52 +0000 (23:55 -0700)]
wimexport: allow exporting to archive directly on block device

4 years agowimapply.1: fix documentation for valid Windows filenames
Eric Biggers [Tue, 16 Aug 2016 06:55:51 +0000 (23:55 -0700)]
wimapply.1: fix documentation for valid Windows filenames

* "must end with space or period" is not a restriction for NT APIs
* control characters are forbidden

4 years agowin32_apply.c: detect case-sensitive filename support
Eric Biggers [Tue, 16 Aug 2016 06:55:50 +0000 (23:55 -0700)]
win32_apply.c: detect case-sensitive filename support

4 years agontfs-3g_apply.c: open $Secure
Eric Biggers [Fri, 29 Jul 2016 21:43:57 +0000 (14:43 -0700)]
ntfs-3g_apply.c: open $Secure

4 years agontfs-3g_capture.c: update $Secure handling
Eric Biggers [Wed, 27 Jul 2016 16:30:01 +0000 (09:30 -0700)]
ntfs-3g_capture.c: update $Secure handling

4 years agolibattr is no longer needed
Eric Biggers [Wed, 27 Jul 2016 00:10:05 +0000 (17:10 -0700)]
libattr is no longer needed

wimlib only uses the extended attributes interface on Linux, where it
appears it is now safe to assume the functions are present in libc (see:
http://lists.nongnu.org/archive/html/acl-devel/2012-04/msg00001.html).

Note: the setfattr program from the "attr" package is still required to
run the NTFS-3G test script.

4 years agoSync AVL tree code from project
Eric Biggers [Tue, 26 Jul 2016 16:16:43 +0000 (09:16 -0700)]
Sync AVL tree code from project

4 years agoavl_tree: remove now-unused support for "unlinked" marker
Eric Biggers [Tue, 26 Jul 2016 02:57:20 +0000 (19:57 -0700)]
avl_tree: remove now-unused support for "unlinked" marker

4 years agoUnify case-sensitive and case-insensitive filename indices
Eric Biggers [Tue, 26 Jul 2016 02:14:42 +0000 (19:14 -0700)]
Unify case-sensitive and case-insensitive filename indices

4 years agoavl_tree: add avl_tree_prev_in_order()
Eric Biggers [Tue, 26 Jul 2016 02:14:21 +0000 (19:14 -0700)]
avl_tree: add avl_tree_prev_in_order()

4 years agoAdd program to report NTFS volume fragmentation
Eric Biggers [Mon, 25 Jul 2016 02:01:09 +0000 (19:01 -0700)]
Add program to report NTFS volume fragmentation

4 years agontfs-3g_apply.c: note version in which ntfs_attr_pwrite() was fixed
Eric Biggers [Mon, 25 Jul 2016 00:22:09 +0000 (17:22 -0700)]
ntfs-3g_apply.c: note version in which ntfs_attr_pwrite() was fixed

4 years agolzx_compress: make lzx_cost_for_probability() more robust
Eric Biggers [Sun, 24 Jul 2016 21:13:17 +0000 (14:13 -0700)]
lzx_compress: make lzx_cost_for_probability() more robust

4 years agolzms_common.c: support x32 ABI in find_next_opcode_sse4_2()
Eric Biggers [Tue, 19 Jul 2016 16:00:17 +0000 (09:00 -0700)]
lzms_common.c: support x32 ABI in find_next_opcode_sse4_2()

4 years agoavl_tree: replace 'AVL_INLINE' with 'forceinline'
Eric Biggers [Tue, 19 Jul 2016 16:00:17 +0000 (09:00 -0700)]
avl_tree: replace 'AVL_INLINE' with 'forceinline'

4 years agoREADME.WINDOWS: describe 64-bit build by default
Eric Biggers [Tue, 19 Jul 2016 16:00:16 +0000 (09:00 -0700)]
README.WINDOWS: describe 64-bit build by default

4 years agoREADME.WINDOWS: update build instructions for v1.10.0
Eric Biggers [Tue, 19 Jul 2016 16:00:15 +0000 (09:00 -0700)]
README.WINDOWS: update build instructions for v1.10.0

4 years agoconfigure.ac: Do not check for <sys/param.h>
Eric Biggers [Sat, 9 Jul 2016 17:13:23 +0000 (12:13 -0500)]
configure.ac: Do not check for <sys/param.h>

This header is conditionally included by <ntfs-3g/endians.h>.  It defines
too much stuff on certain platforms, e.g. an ALIGN() macro on FreeBSD,
and it appears redundant with other methods of determining the
endianness.

4 years agontfs-3g_capture.c: include <ntfs-3g/compat.h> to get ENODATA definition
Eric Biggers [Sat, 9 Jul 2016 17:12:14 +0000 (12:12 -0500)]
ntfs-3g_capture.c: include <ntfs-3g/compat.h> to get ENODATA definition

Some platforms, e.g. FreeBSD, do not define ENODATA.  On such platforms,
libntfs-3g uses ENOENT instead, and <ntfs-3g/compat.h> defines ENODATA as
ENOENT.

4 years agoUpdate NEWS
Eric Biggers [Sat, 9 Jul 2016 15:01:27 +0000 (10:01 -0500)]
Update NEWS

4 years agoStop force-inlining everything marked 'inline'
Eric Biggers [Sat, 9 Jul 2016 15:01:26 +0000 (10:01 -0500)]
Stop force-inlining everything marked 'inline'

Instead, replace 'inline' with 'forceinline' in selected places.

4 years agobitops: rename bit scan functions
Eric Biggers [Sat, 9 Jul 2016 15:01:25 +0000 (10:01 -0500)]
bitops: rename bit scan functions

Our bit scan functions use 0-based indices and do not allow zero inputs.
Rename them to 'bsr' and 'bsf' to match the x86 instructions and avoid
confusion with another common convention for 'fls' and 'ffs'.

4 years agoxpress_decompress: tweak comment about end-of-block symbol
Eric Biggers [Sat, 9 Jul 2016 15:01:24 +0000 (10:01 -0500)]
xpress_decompress: tweak comment about end-of-block symbol

4 years agodecompress_common: move temp space for building decode table to heap
Eric Biggers [Sat, 9 Jul 2016 15:01:23 +0000 (10:01 -0500)]
decompress_common: move temp space for building decode table to heap