wimlib
7 years agoImplement user-specified staging directory
Eric Biggers [Thu, 22 Nov 2012 18:53:43 +0000 (12:53 -0600)]
Implement user-specified staging directory

7 years agotests fixes
Eric Biggers [Thu, 22 Nov 2012 06:31:19 +0000 (00:31 -0600)]
tests fixes

7 years agoUse pthread condition variables instead of semaphores
Eric Biggers [Thu, 22 Nov 2012 06:28:24 +0000 (00:28 -0600)]
Use pthread condition variables instead of semaphores

(Unnamed semaphores are not implemented on Mac OS X...)

7 years agoTest suite without coreutils
Eric Biggers [Thu, 22 Nov 2012 06:03:01 +0000 (00:03 -0600)]
Test suite without coreutils

7 years agoFix conflict with LIST_HEAD in BSD
Eric Biggers [Thu, 22 Nov 2012 05:30:32 +0000 (23:30 -0600)]
Fix conflict with LIST_HEAD in BSD

7 years ago__always_inline => ALWAYS_INLINE
Eric Biggers [Thu, 22 Nov 2012 05:24:26 +0000 (23:24 -0600)]
__always_inline => ALWAYS_INLINE

7 years agoOnly access struct stat.mtim if available
Eric Biggers [Thu, 22 Nov 2012 05:22:21 +0000 (23:22 -0600)]
Only access struct stat.mtim if available

7 years agoInclude sys/time.h in timestamp.h
Eric Biggers [Thu, 22 Nov 2012 05:10:16 +0000 (23:10 -0600)]
Include sys/time.h in timestamp.h

7 years agoUpdate NEWS
Eric Biggers [Thu, 22 Nov 2012 04:48:56 +0000 (22:48 -0600)]
Update NEWS

7 years agoAcquire advisory lock when doing a read-write mount
Eric Biggers [Thu, 22 Nov 2012 04:42:59 +0000 (22:42 -0600)]
Acquire advisory lock when doing a read-write mount

7 years agoImplement advisory locking for WIM overwrites
Eric Biggers [Thu, 22 Nov 2012 04:25:04 +0000 (22:25 -0600)]
Implement advisory locking for WIM overwrites

7 years agoDefine version macros in wimlib.h
Eric Biggers [Thu, 22 Nov 2012 03:29:06 +0000 (21:29 -0600)]
Define version macros in wimlib.h

7 years agoHeader and ifdef fixes
Eric Biggers [Thu, 22 Nov 2012 02:29:35 +0000 (20:29 -0600)]
Header and ifdef fixes

7 years agoMove VERBOSE flags to progress callbacks
Eric Biggers [Thu, 22 Nov 2012 02:17:09 +0000 (20:17 -0600)]
Move VERBOSE flags to progress callbacks

7 years agoUpdate wimlib.h documentation
Eric Biggers [Thu, 22 Nov 2012 00:54:36 +0000 (18:54 -0600)]
Update wimlib.h documentation

Also reserve new parameters for wimlib_unmount_image() and wimlib_mount_image()

7 years agoLots of changes
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.

7 years agoPrint some progress info in symlink/hardlink extraction mode
Eric Biggers [Tue, 20 Nov 2012 17:26:30 +0000 (11:26 -0600)]
Print some progress info in symlink/hardlink extraction mode

7 years agoFix sequential extraction, and include progress info
Eric Biggers [Tue, 20 Nov 2012 17:12:05 +0000 (11:12 -0600)]
Fix sequential extraction, and include progress info

7 years agoImplement sequential extract
Eric Biggers [Tue, 20 Nov 2012 08:29:27 +0000 (02:29 -0600)]
Implement sequential extract

Read the WIM sequentially when applying an image.

Currently only implemented for normal extraction mode, and each image is
considered separately in the case of multi-image extractions.

7 years agoImplement soft delete
Eric Biggers [Tue, 20 Nov 2012 07:15:36 +0000 (01:15 -0600)]
Implement soft delete

7 years agoDocument data corruption possibilities/impossibilities
Eric Biggers [Tue, 20 Nov 2012 06:36:48 +0000 (00:36 -0600)]
Document data corruption possibilities/impossibilities

7 years agoimagex-optimize: --recompress
Eric Biggers [Tue, 20 Nov 2012 05:56:12 +0000 (23:56 -0600)]
imagex-optimize: --recompress

Implemented with a new flag WIMLIB_WRITE_FLAG_RECOMPRESS

7 years agoUpdate NEWS and add imagex-optimize
Eric Biggers [Tue, 20 Nov 2012 05:33:21 +0000 (23:33 -0600)]
Update NEWS and add imagex-optimize

7 years agoRewrite integrity calculation and checks
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.

7 years agoRework WIM writing code
Eric Biggers [Mon, 19 Nov 2012 21:26:59 +0000 (15:26 -0600)]
Rework WIM writing code

(Incomplete)

7 years agoSet WIM_RESHDR_FLAG_METADATA on XML data
Eric Biggers [Mon, 19 Nov 2012 04:36:20 +0000 (22:36 -0600)]
Set WIM_RESHDR_FLAG_METADATA on XML data

7 years agowimlib_set_boot_idx(): Update boot metadata immediately
Eric Biggers [Mon, 19 Nov 2012 04:27:50 +0000 (22:27 -0600)]
wimlib_set_boot_idx(): Update boot metadata immediately

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.

7 years agowimlib_write(): Add WIMLIB_WRITE_FLAG_FSYNC
Eric Biggers [Mon, 19 Nov 2012 03:24:52 +0000 (21:24 -0600)]
wimlib_write(): Add WIMLIB_WRITE_FLAG_FSYNC

Use WIMLIB_WRITE_FLAG_FSYNC to request that fsync() is called on the file
descriptor for the WIM being written, before closing it.

Done by default when wimlib_write() is called through wimlib_overwrite().

7 years agobegin_read(): Try fopen() before realpath()
Eric Biggers [Mon, 19 Nov 2012 02:48:06 +0000 (20:48 -0600)]
begin_read(): Try fopen() before realpath()

7 years agoStart using soname for libwim
Eric Biggers [Mon, 19 Nov 2012 02:27:11 +0000 (20:27 -0600)]
Start using soname for libwim

7 years agoUpdate Arch Linux PKGBUILD to v1.1.0
Eric Biggers [Mon, 19 Nov 2012 00:03:21 +0000 (18:03 -0600)]
Update Arch Linux PKGBUILD to v1.1.0

7 years agowimlib.h doc fix
Eric Biggers [Mon, 19 Nov 2012 00:01:37 +0000 (18:01 -0600)]
wimlib.h doc fix

7 years agousage_all(): Print leading whitespace v1.1.0
Eric Biggers [Sun, 18 Nov 2012 23:58:13 +0000 (17:58 -0600)]
usage_all(): Print leading whitespace

7 years agomain_writer_thread_proc(): Minor cleanup
Eric Biggers [Sun, 18 Nov 2012 23:53:17 +0000 (17:53 -0600)]
main_writer_thread_proc(): Minor cleanup

7 years agoUpdate README
Eric Biggers [Sun, 18 Nov 2012 23:42:08 +0000 (17:42 -0600)]
Update README

7 years agoCalculate SHA1 md of NTFS reparse points correctly
Eric Biggers [Sun, 18 Nov 2012 23:26:58 +0000 (17:26 -0600)]
Calculate SHA1 md of NTFS reparse points correctly

7 years agoSet FILE_ATTRIBUTE_DIRECTORY for directory symlinks
Eric Biggers [Sun, 18 Nov 2012 23:13:27 +0000 (17:13 -0600)]
Set FILE_ATTRIBUTE_DIRECTORY for directory symlinks

7 years agomake_symlink_reparse_data_buf(): Don't include null terminator
Eric Biggers [Sun, 18 Nov 2012 22:25:12 +0000 (16:25 -0600)]
make_symlink_reparse_data_buf(): Don't include null terminator

7 years agoinclude WIMStruct->fp_tab only if WITH_FUSE
Eric Biggers [Sun, 18 Nov 2012 21:04:19 +0000 (15:04 -0600)]
include WIMStruct->fp_tab only if WITH_FUSE

7 years agoPTHREAD_LDADD
Eric Biggers [Sun, 18 Nov 2012 20:53:53 +0000 (14:53 -0600)]
PTHREAD_LDADD

7 years agoVarious portability fixes
Eric Biggers [Sun, 18 Nov 2012 20:44:46 +0000 (14:44 -0600)]
Various portability fixes

7 years agoConsolidate `struct lookup_table_entry'
Eric Biggers [Sun, 18 Nov 2012 19:01:58 +0000 (13:01 -0600)]
Consolidate `struct lookup_table_entry'

7 years ago--disable-multithreaded-compression option
Eric Biggers [Sun, 18 Nov 2012 18:46:29 +0000 (12:46 -0600)]
--disable-multithreaded-compression option

7 years agoUpdate version number and NEWS
Eric Biggers [Sun, 18 Nov 2012 18:24:26 +0000 (12:24 -0600)]
Update version number and NEWS

(will be a few more updates before a release though.)

7 years ago--threads option and stream writing progress
Eric Biggers [Sun, 18 Nov 2012 18:18:46 +0000 (12:18 -0600)]
--threads option and stream writing progress

7 years agomain_writer_thread_proc(): Add more comments
Eric Biggers [Sun, 18 Nov 2012 08:13:10 +0000 (02:13 -0600)]
main_writer_thread_proc(): Add more comments

7 years agoImplement multi-threaded compression
Eric Biggers [Sun, 18 Nov 2012 07:44:27 +0000 (01:44 -0600)]
Implement multi-threaded compression

7 years agoSet `struct fuse_operations' flags
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.

7 years agoHeader fix: Add time.h
Eric Biggers [Tue, 13 Nov 2012 00:09:15 +0000 (18:09 -0600)]
Header fix:  Add time.h

NTFS-3g headers seem to require time.h to be included first.

7 years agoMake different threads use different FILE*'s
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().

7 years agowimlib_mount(): Disallow mounting newly added image
Eric Biggers [Mon, 12 Nov 2012 22:56:51 +0000 (16:56 -0600)]
wimlib_mount(): Disallow mounting newly added image

7 years agoimagex_mount_rw_or_ro(): Free additional_swms when done
Eric Biggers [Mon, 12 Nov 2012 20:51:29 +0000 (14:51 -0600)]
imagex_mount_rw_or_ro():  Free additional_swms when done

7 years agowimlib_mount(): Refuse to mount split wim read-write
Eric Biggers [Mon, 12 Nov 2012 20:36:09 +0000 (14:36 -0600)]
wimlib_mount():  Refuse to mount split wim read-write

7 years agomake_staging_dir(): Fix comment
Eric Biggers [Mon, 12 Nov 2012 20:27:34 +0000 (14:27 -0600)]
make_staging_dir(): Fix comment

7 years agorebuild_wim(): Fix possible problem with fd closing
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.

7 years agoIndentation
Eric Biggers [Mon, 12 Nov 2012 20:05:53 +0000 (14:05 -0600)]
Indentation

7 years agoutil.h: Remove cas(), cas_bool() (not used yet)
Eric Biggers [Mon, 12 Nov 2012 19:47:38 +0000 (13:47 -0600)]
util.h: Remove cas(), cas_bool() (not used yet)

7 years agoUse FUSE multi-threaded mode for read-only mounts
Eric Biggers [Mon, 12 Nov 2012 18:42:31 +0000 (12:42 -0600)]
Use FUSE multi-threaded mode for read-only mounts

7 years agoFix rbtree comparison function
Eric Biggers [Mon, 12 Nov 2012 18:04:25 +0000 (12:04 -0600)]
Fix rbtree comparison function

7 years agotest-imagex-*: Set $srcdir correctly
Eric Biggers [Mon, 12 Nov 2012 17:20:00 +0000 (11:20 -0600)]
test-imagex-*:  Set $srcdir correctly

7 years agoUpdate TODO
Eric Biggers [Mon, 12 Nov 2012 06:01:10 +0000 (00:01 -0600)]
Update TODO

7 years agofor_dentry_in_tree(): Remove some gotos
Eric Biggers [Mon, 12 Nov 2012 06:00:48 +0000 (00:00 -0600)]
for_dentry_in_tree(): Remove some gotos

7 years agoNon-recursive for_dentry_in_tree()
Eric Biggers [Mon, 12 Nov 2012 05:41:23 +0000 (23:41 -0600)]
Non-recursive for_dentry_in_tree()

7 years agoRemove link_dentry()
Eric Biggers [Mon, 12 Nov 2012 01:44:26 +0000 (19:44 -0600)]
Remove link_dentry()

Replaced with dentry_add_child().

7 years agoimagex.c: Minor usability improvements
Eric Biggers [Mon, 12 Nov 2012 00:58:26 +0000 (18:58 -0600)]
imagex.c: Minor usability improvements

7 years agoMake wimfs files executable by default
Eric Biggers [Mon, 12 Nov 2012 00:23:22 +0000 (18:23 -0600)]
Make wimfs files executable by default

Also allow chmod(), as long as it doesn't actually change anything.

7 years agoinode_put_fd(): Fix incorrect assertion
Eric Biggers [Mon, 12 Nov 2012 00:10:44 +0000 (18:10 -0600)]
inode_put_fd(): Fix incorrect assertion

7 years agorbtree.c: Delete augmented rbtree functions
Eric Biggers [Sun, 11 Nov 2012 23:57:48 +0000 (17:57 -0600)]
rbtree.c:  Delete augmented rbtree functions

7 years agostruct dentry optimization and stack-based rbtree traversal
Eric Biggers [Sun, 11 Nov 2012 22:47:57 +0000 (16:47 -0600)]
struct dentry optimization and stack-based rbtree traversal

7 years agoStore dentry children in red-black trees
Eric Biggers [Sun, 11 Nov 2012 20:57:09 +0000 (14:57 -0600)]
Store dentry children in red-black trees

Store the children of each dentry in a red-black tree (keyed by the dentry name)
to make dentry lookups faster.

7 years agoAdd rbtree files
Eric Biggers [Sun, 11 Nov 2012 19:04:22 +0000 (13:04 -0600)]
Add rbtree files

7 years agolist.h: Remove unneeded functions
Eric Biggers [Sun, 11 Nov 2012 18:52:10 +0000 (12:52 -0600)]
list.h:  Remove unneeded functions

Only keep the functions from list.h that are actually used by the library.

7 years agotest-imagex-ntfs: Use lazy unmount
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...

7 years agoimagex.c: Remove unused swap() macro
Eric Biggers [Tue, 30 Oct 2012 01:21:56 +0000 (20:21 -0500)]
imagex.c: Remove unused swap() macro

7 years agoFix date in ChangeLog
Eric Biggers [Tue, 30 Oct 2012 01:18:47 +0000 (20:18 -0500)]
Fix date in ChangeLog

7 years agoFix links in wimlib.h generated docs
Eric Biggers [Tue, 30 Oct 2012 00:44:15 +0000 (19:44 -0500)]
Fix links in wimlib.h generated docs

7 years agoFix man page reference in README
Eric Biggers [Tue, 30 Oct 2012 00:41:31 +0000 (19:41 -0500)]
Fix man page reference in README

7 years agoUpdate archlinux/PKGBUILD
Eric Biggers [Tue, 30 Oct 2012 00:41:19 +0000 (19:41 -0500)]
Update archlinux/PKGBUILD

7 years agoVersion 1.0.4 v1.0.4
Eric Biggers [Tue, 30 Oct 2012 00:23:08 +0000 (19:23 -0500)]
Version 1.0.4

7 years agoCheck for ntfs_xattr_system_setxattr() instead of ntfs_mount()
Eric Biggers [Tue, 30 Oct 2012 00:17:26 +0000 (19:17 -0500)]
Check for ntfs_xattr_system_setxattr() instead of ntfs_mount()

7 years agoReorganize README and add OpenSSL info
Eric Biggers [Mon, 29 Oct 2012 16:38:13 +0000 (16:38 +0000)]
Reorganize README and add OpenSSL info

7 years agoDebian package updates
Eric Biggers [Mon, 29 Oct 2012 05:11:15 +0000 (05:11 +0000)]
Debian package updates

7 years agoEXTRA_DIST rpm, archlinux
Eric Biggers [Mon, 29 Oct 2012 03:33:20 +0000 (22:33 -0500)]
EXTRA_DIST rpm, archlinux

7 years agoSeptember => October
Eric Biggers [Mon, 29 Oct 2012 03:27:14 +0000 (22:27 -0500)]
September => October

7 years agoVarious packaging issues
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

7 years ago$srcdir fix
Eric Biggers [Mon, 29 Oct 2012 01:37:50 +0000 (20:37 -0500)]
$srcdir fix

7 years agoFix tests (again)
Eric Biggers [Mon, 29 Oct 2012 01:32:54 +0000 (20:32 -0500)]
Fix tests (again)

7 years agoimagex.c: Free additional_swms when done with it
Eric Biggers [Mon, 29 Oct 2012 00:13:00 +0000 (19:13 -0500)]
imagex.c: Free additional_swms when done with it

7 years agoSkip mount tests when --without-fuse
Eric Biggers [Mon, 29 Oct 2012 00:04:49 +0000 (19:04 -0500)]
Skip mount tests when --without-fuse

7 years agotree-cmp without xattr
Eric Biggers [Mon, 29 Oct 2012 00:01:24 +0000 (19:01 -0500)]
tree-cmp without xattr

7 years agoRun NTFS tests when --without-ntfs-3g
Eric Biggers [Sun, 28 Oct 2012 22:53:19 +0000 (17:53 -0500)]
Run NTFS tests when --without-ntfs-3g

7 years agoMessage queue name calculation
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.

7 years agoDocument wimlib_mount() as "thread-safe"
Eric Biggers [Sun, 28 Oct 2012 20:36:50 +0000 (15:36 -0500)]
Document wimlib_mount() as "thread-safe"

7 years agoAdd multi-mount program
Eric Biggers [Sun, 28 Oct 2012 20:22:15 +0000 (15:22 -0500)]
Add multi-mount program

7 years agomount.c tweaks
Eric Biggers [Sun, 28 Oct 2012 20:06:34 +0000 (15:06 -0500)]
mount.c tweaks

7 years agoFixes to get rid of various compiler warnings
Eric Biggers [Sun, 28 Oct 2012 19:46:25 +0000 (14:46 -0500)]
Fixes to get rid of various compiler warnings

7 years agowimfs_destroy(), wimlib_unmount()
Eric Biggers [Sun, 28 Oct 2012 19:20:54 +0000 (14:20 -0500)]
wimfs_destroy(), wimlib_unmount()

7 years agoGet rid of static variables in mount.c
Eric Biggers [Sun, 28 Oct 2012 18:58:36 +0000 (13:58 -0500)]
Get rid of static variables in mount.c

Introduce `struct wimfs_context' that is passed as FUSE private data and
retrieved through fuse_get_context().

7 years agoCleanup wimlib_mount() preparations
Eric Biggers [Sun, 28 Oct 2012 17:24:47 +0000 (12:24 -0500)]
Cleanup wimlib_mount() preparations

7 years agowrite_xml_data() cleanup
Eric Biggers [Sun, 28 Oct 2012 06:46:00 +0000 (01:46 -0500)]
write_xml_data() cleanup