5-1-2012 Eric Biggers * WIMLIB version 0.6.3 Now using git (git://git.code.sf.net/p/wimlib/code) Project page at http://sourceforge.net/projects/wimlib Library documentation at http://wimlib.sourceforge.net Will not put stuff in this ChangeLog anymore. 4-22-2012 Eric Biggers * WIMLIB version 0.6.2 * extract_resource_to_staging_dir(): Fixed infinite loop and a couple other issues * util.c: Added full_write() function to handle the case where write() succeeds but returns a short count (which is supposed to be allowed.) * read_xml_data(): Move call to xmlCleanupParser() to end, so that libxml releases all allocated memory after writing the XML data. * sha1.c, sha1.h: Functions local to sha1.c now declared static in sha1.c instead of extern in sha1.h. Also adjusted indentation. * sha1.c, sha1.h, configure.ac, src/Makefile.am: Allow using SHA1 functions from libcrypto, part of OpenSSL. Enabled by default if detected. Note: The OpenSSL code is a little faster. * sha1-ssse3.asm, sha1.c, configure.ac, src/Makefile.am: Allow using SSSE3-accelerated SHA1 block update code from Intel. Give --enable-ssse3-sha1 to configure to enable this. This is currently even faster than the OpenSSL code but doesn't work on all CPUs. * create_staging_file(): Return -1 and set errno when out of memory. * dentry_to_stbuf(): Fill in st_blocks field. * Various files: Minor fixes in comments. 4-16-2012 Eric Biggers * WIMLIB version 0.6.1 * write_xml_data(): Write byte order mark (0xfffe) before XML data. Microsoft's imagex.exe cannot open a WIM without this marker, even though Windows PE can boot from it. Perhaps Microsoft's WIM driver doesn't check the XML data, but imagex.exe does. * finish_write(), wimlib_add_image(), wimlib_set_boot_idx(): Make the boot metadata entry in the WIM header point to the metadata for the bootable image (if there is one) rather than the first image. * calculate_dentry_statistics(): Do not count the root directory as a directory for the purposes of the XML element. * write_metadata_resource(): Calculate SHA1 message digest of uncompressed metadata resource to use as the hash value. * wimlib_internal.h, wimlib.h, various other files: Some documentation and coding style fixes 4-14-2012 Eric Biggers * WIMLIB version 0.6.0 * Many files: Most functions now return an 'int' error code instead of a boolean. * Many files: xmalloc() and xstrdup() have been gotten rid of, so that the library can cleanly return an error code if memory is exhausted. In addition, wimlib can use a custom malloc() and free() by passing them to wimlib_set_memory_allocator(). * Many files: Some functions now take an int `flags' parameter as a bitwise OR of flags defined in wimlib.h, rather than one or more boolean parameters. * Many files: Removed code dealing with security data and streams- wimlib didn't actually anything with them anyway, and there are no plans to support them. * Many files: Moved some stuff from wimlib_internal.h to dentry.h, lookup_table.h, and xml.h * wim.c, wimlib.h: New wimlib_has_integrity_table() function in public API. * xml.c, wim.c: Stricter checking to make sure every image has a name. * wim.c, dentry.c: Fixed some memory leaks. * extract.c: Fixed symlinks for extracting images. * wimlib.h: Fixed and updated the documentation. 4-8-2012 Eric Biggers * WIMLIB version 0.5.0 * doc/Makefile.am, doc/Doxyfile, wimlib.h: There is now documentation for wimlib's API. Every public function in wimlib.h is documented with a Doxygen comment. The documentation is not yet built or installed automatically. Build it manually by running `doxygen' in the `doc' directory. * xpress-comp.c: Fixed "error" in XPRESS compression (M$'s software expects magic symbol at end of compressed data). * lz.c: Improved the performance of the LZX and XPRESS compressors, and the size of the compressed output, by using a hash table to help find matches, and by doing lazy evaluation of matches to find better matches, like in zlib. See lz.c. * configure.ac, mount.c: It is now possible to pass `--without-fuse' to the configuration script to build wimlib without libfuse, making the wimlib_mount() and wimlib_unmount() functions unavailable. * various files: More functions now return failure if passed invalid parameters rather than aborting with an assertion failure. * wim.c: A few functions such as wimlib_begin_read() are now internal rather than part of the public API, in order to simplify the public API slightly. * configure.ac, m4/iconv.m4: The configure script now checks for the presence of the iconv() function rather than assuming it is available in libc. * configure.ac: Compression verification added to the configure script and enabled by default (at least for now). Use `--disable-verify-compression' to disable this. * README: Added "PORTABILITY" section. * resource.c: Removed unused get_wim_resource() and extract_full_resource_to_fd() functions. * mount.c: Testing with glibc 2.15 on x86 produced a weird error where mq_getattr() returned a Function Not Implemented error. To make mounting still have a chance at working, the code now sets the message queue size to 8192 if mq_getattr() doesn't work. 3-31-2012 Eric Biggers * WIMLIB version 0.4.8 * xpress-comp.c, xpress-decomp.c, xpress.h: Support for XPRESS compression and decompression * mkwinpeimg: Renamed `mkwinpeiso' to `mkwinpeimg', and made it support making a bootable disk image or plain WIM file as well as a bootable ISO. * lzx-decomp.c, lzx-comp.c, huffman.c, decomp.c, comp.c, comp.h, decomp.h: Factored some code out of lzx-decomp.c and lzx-comp.c into huffman.c, decomp.c, comp.c, comp.h and decomp.h. * mount.c: Increased timeout on imagex unmount to 600 seconds (need a better solution for this!!) * doc/imagex-*.1: Updated the documentation in various places 3-29-2012 Eric Biggers * WIMLIB version 0.4.7 * mount.c: Fixed bug that prevented read-write mounts from successfully committing after existing files in the WIM were modified * mount.c: Increased timeout on imagex unmount to 30 seconds 3-29-2012 Eric Biggers * WIMLIB version 0.4.6 * lzx-decomp.c: Fixed bug made LZX decompression not work on 32 bit systems 3-25-2012 Eric Biggers versions 0.4 through 0.4.5 Rewrote the library. - wimlib now uses GNU autoconf and builds a real shared library. - Removed the `wiminfo', `wimxmlinfo', `updatewim', and `wimextract' programs in favor of the `imagex' program - Support for multi-image WIMs - Support for the XML data using libxml2 - Support for integrity table - Included SHA1 code from GNU coreutils - Much more error checking. - Library is more reusable - Lookup table is now a hash table rather than a sorted array. - Got rid of the wide to ascii and ascii to wide functions; really what we want is functions that convert UTF-8 to UTF-16, and vice versa. This was fairly easy to do using the POSIX-specified iconv() function. - Rewrote lzx.c and moved it to lzx-decomp.c - Added lzx-comp.c for LZX compression 12-31-2012 Carl Thijssen version 0.2 Wrote the original library.