Eric Biggers [Wed, 21 Nov 2012 08:34:34 +0000 (02:34 -0600)]
Lots of changes
- Add progress functions
- Rename wimlib_mount() and wimlib_unmount() to wimlib_mount_image() and
wimlib_unmount_image()
- Remove wimlib_add_image_from_ntfs_volume() and
wimlib_apply_image_to_ntfs_volume() in favor of flags to wimlib_add_image()
and wimlib_extract_image()
- Add progress callback functions, and make them work for NTFS apply as well as
normal apply
- Consolidate some of the extraction code into extract_single_image().
- Make serial WIM reading work when applying to NTFS as well as in the normal
extraction mode.
- Update documentation in wimlib.h.
Eric Biggers [Tue, 20 Nov 2012 04:24:30 +0000 (22:24 -0600)]
Rewrite integrity calculation and checks
- Read and write 4096 bytes at a time
- Improve progress messages
- Allow copying some, but possibly not all, entries from the previous integrity
table.
Update the boot metadata resource entry in the WIM header as soon as
wimlib_set_boot_idx() is called. Otherwise, the correct entry is never updated
if wimlib_overwrite_xml_and_header() is called.
Eric Biggers [Tue, 13 Nov 2012 00:29:51 +0000 (18:29 -0600)]
Set `struct fuse_operations' flags
Set some flags in `struct fuse_operations'. Paths are not used by a number of
wimfs functions such as wimfs_read() and wimfs_write(), so flag_nopath can
specified.
Eric Biggers [Tue, 13 Nov 2012 00:03:17 +0000 (18:03 -0600)]
Make different threads use different FILE*'s
read_wim_resource() was actually not thread safe because it expects to use the
FILE * WIMStruct.fp. This commit introduces a table of FILE *'s for each
WIMStruct that are only used if a special flag
WIMLIB_RESOURCE_FLAG_MULTITHREADED is passed to read_wim_resource().
Eric Biggers [Mon, 12 Nov 2012 20:19:27 +0000 (14:19 -0600)]
rebuild_wim(): Fix possible problem with fd closing
Use list_for_each_entry_safe() instead of list_for_each_entry() when closing
staging file descriptors, since a lookup table entry may be deleted when its
last file descriptor is closed.
Eric Biggers [Mon, 5 Nov 2012 20:58:38 +0000 (14:58 -0600)]
test-imagex-ntfs: Use lazy unmount
Apparently, it's possible for 'fusermount -u' to return before a NTFS-3g-based
filesystem has actually unmounted, therefore causing a subsequent mount to the
same location to fail if it happens quickly enough. Using a lazy unmount should
fix this I think...
Eric Biggers [Mon, 29 Oct 2012 03:23:06 +0000 (22:23 -0500)]
Various packaging issues
- Use utime() instead of lutimes() if lutimes() is not available or is not
implemented
- Add a spec file for building without libntfs-3g, and a spec file for building
with neither fuse nor libntfs-3g
- Print some possibly helpful text if mounting a WIM for the first time fails in
the test script
Eric Biggers [Sun, 28 Oct 2012 21:12:43 +0000 (16:12 -0500)]
Message queue name calculation
- Use absolute path for directory name instead of base name. This avoids issues
with multiple directories with the same name, with trailing slashes on the
directory name, and with symbolic links.
- Substitute slashes in the directory path with character 0xff to form a valid
message queue name and avoid possible conflicts with real pathnames.
- Truncate the message queue name if it comes out to more than NAME_MAX bytes.
Eric Biggers [Sun, 28 Oct 2012 05:47:15 +0000 (00:47 -0500)]
Metadata resource compatibility
For compatibility with 7zip, do not write any extra random bytes to the end of
the metadata resources.
This means that without adding some other source of random output, adding
identical images will result in identical metadata resources. This is still
allowed, but for compatibility with ImageX, lookup table entries are duplicated
rather than shared.