Jan 13, 2013: libarchive 3.1.1 released

Jan 13, 2013: libarchive 3.1.0 released

Dec 07, 2012: Implement functions to manually set the format and filters used.
    
Nov 11, 2012: Add support for __MACOSX directory in Zip archives, which resource
    forks are stored in.

Oct 20, 2012: Add support for writing v7 tar format.

Oct 09, 2012: Add support for grzip compression.

Oct 07, 2012: Introduce b64encode filter.    
Oct 07, 2012: Introduce uuencode filter.

Oct 06, 2012: Add support for lzop.
    
Sep 27, 2012: Implement function used to seek within data blocks.
    (Currently only supported for uncompressed RAR archives).
    
Apr 22, 2012: Add basic archive read and write filter support for lrzip.

Mar 27, 2012: libarchive 3.0.4 released

Feb 05, 2012: libarchive development now hosted at GitHub.
    http://libarchive.github.com/
Feb 05, 2012: libarchive's issue tracker remains at Google Code.
    http://code.google.com/p/libarchive/issues/list
Feb 05, 2012: libarchive's mailing lists remain at Google Groups.

Dec 24, 2011: libarchive 3.0.2 released
Dec 23, 2011: Various fixes merged from FreeBSD
Dec 23, 2011: Symlink support in Zip reader and writer
Dec 23, 2011: Robustness fixes to 7Zip reader

Nov 27, 2011: libarchive 3.0.1b released

Nov 26, 2011: 7Zip reader
Nov 26, 2011: Small fixes to ISO and Zip to improve robustness with corrupted input
Nov 24, 2011: Improve streaming Zip reader's support for uncompressed entries
Nov 20, 2011: New seeking Zip reader supports SFX Zip archives
Nov 20, 2011: Build fixes on Windows

Nov 13, 2011: libarchive 3.0.0a released

Nov 06, 2011: Update shared-library version calculations for libarchive 3.x
Sep 04, 2011: Fix tar -s; follow GNU tar for controlling hardlink/symlink substitutions
Aug 18, 2011: Fix reading ISO images built by NetBSD's mkisofs
Aug 15, 2011: Old archive_read_support_compression_XXX functions are deprecated and
   will disappear in libarchive 4.0.
Jun 26, 2011: RAR reader
Jun 16, 2011: Add tar:compat-2x option to emulate broken libarchive 2.x
   handling of pax UTF-8 headers
Apr 25, 2011: Refactor read_open() into a collection of single-item setters;
   support the old interfaces as wrappers
Apr 12, 2011: Split disk writer into separate POSIX and Windows implementations
Apr 10, 2011: Improvements to character translations on Windows.
Mar 30, 2011: More work to return errors instead of calling abort()
Mar 23, 2011: Add charset option to many writers to control MBCS filenames
Mar 17, 2011: Overhauled support for per-format extension options
Mar 17, 2011: Track character set used for mbcs strings, support
   translating to/from user-specified locale
Mar 09, 2011: Recognize mtree files without requiring a signature
Mar 06, 2011: Use iconv to convert to/from Unicode instead of making bad
   assumptions about the C90 character set translation functions
Feb 17, 2011: Fixes for AIX, TRU64, and other platforms
Dec 22, 2010: CAB reader
Dec 20, 2010: LHA/LZH reader
Jul 03, 2010: minitar example demonstrates archive_read_disk directory traversal
Jun 29, 2010: Many improvements to ISO reader compatibility
Jun 26, 2010: Use larger buffers when copy files into an archive
Jun 18, 2010: Reimplement Mac OS extensions in libarchive
Jun 09, 2010: archive_read_disk now supports traversals
May 28, 2010: XAR writer
May 16, 2010: Fix ^T handling; don't exit on interrupted reads and writes
May 09, 2010: Improved detection of platform-specific crypto support
May 04, 2010: lzip read and write filters
May 01, 2010: New options: tar --gid --gname --uid --uname
Apr 28, 2010: Use Red-black tree for ISO reader/writer to improve performance
Apr 17, 2010: Minimal writer for legacy GNU tar format
Mar 12, 2010: Don't dereference symlinks on Linux when reading ACLs.
Mar 06, 2010: Fix build when an older libarchive is already installed
Feb 28, 2010: Relax handling of state failures; misuse by clients now generally
      results in a sticky ARCHIVE_FATAL rather than a visit to abort()
Feb 25, 2010: ISO writer
Feb 21, 2010: Split many man pages into smaller chunks.
Feb 21, 2010: Performance: Cheat on block sizes when reading archives from disk.
Feb 21, 2010: Use int64_t instead of off_t, dev_t, ino_t, uid_t, and gid_t
Feb 20, 2010: Document new ACL functions.
Feb 19, 2010: Support multiple write filters
Feb 07, 2010: Remove some legacy libarchive 1.x APIs
Feb 04, 2010: Read afio headers
Feb 02, 2010: Archive sparse files compatibly with GNU tar
Feb 01, 2010: Integrate Apple extensions for Mac OS extended attributes into bsdtar
Jan 31, 2010: Support cpio -V

Feb 04, 2010: libarchive 2.8.0 released
Jan 17, 2010: Fix error handling for 'echo nonexistent | cpio -o'
Jan 17, 2010: Don't use futimes() on Cygwin

Jan 02, 2010: libarchive 2.7.902a released (test release for 2.8)
Jan 02, 2010: Fix tar/test/test_windows on MinGW
Jan 02, 2010: Fix memory leaks in libarchive tests
Jan 01, 2010: Fix memory leak when filter startup fails

Dec 27, 2009: libarchive 2.7.901a released (test release for 2.8)

Aug 04, 2009: libarchive 2.7.1 released
Jul 20, 2009: Suppress bogus warning about unxz
Jul 19, 2009: Support Cygwin 1.7
Jun 11, 2009: Support lzma/xz files compressed with larger buffer sizes.
May 24, 2009: Handle gzip files signed with OpenBSD "gzsig" program.
May 07, 2009: Avoid false failures when reading from pipe.

Apr 16, 2009: libarchive 2.7.0 released

Apr 10, 2009: libarchive 2.6.992a released
Apr 09, 2009: Fix SIGPIPE issue building with MSVC.
Apr 09, 2009: Fix several minor memory leaks in libarchive and libarchive_test

Apr 08, 2009: libarchive 2.6.991a released
Apr 07, 2009: Additional tests added to bsdcpio_test

Apr 01, 2009: libarchive 2.6.990a released
Apr 01, 2009: Use command-line gunzip, bunzip2, unxz, unlzma for
	decompression if the library is built without suitable
	libraries.  The setup functions return ARCHIVE_WARN
	in this case so clients can adapt if necessary.
Apr 01, 2009: Use getpw*_r and getgr*_r functions for thread-safety.
Mar 24, 2009: Add archive_read_next_header2(), which is up to 25%
	more efficient for some clients; from Brian Harring.
Mar 22, 2009: PDF versions of manpages are now included in the distribution.
Mar, 2009: Major work to improve Cygwin build by Charles Wilson.
Feb/Mar, 2009: Major work on cmake build support, mostly by Michihiro NAKAJIMA.
Feb/Mar, 2009: Major work on Visual Studio support by Michihiro NAKAJIMA.
	All tests now pass.
Feb 25, 2009: Fix Debian Bug #516577
Feb 21, 2009: Yacc is no longer needed to build; date parser rewritten in C.
Jan/Feb, 2009: Mtree work by Michihiro.
Feb, 2009: Joliet support by Andreas Henriksson.
Jan/Feb, 2009: New options framework by Michihiro.
Feb, 2009: High-res timestamps on Tru64, AIX, and GNU Hurd, by Björn Jacke.
Jan 18, 2009: Extended attributes work on FreeBSD and Linux now	with pax format.
Jan 07, 2009: New archive_read_disk_entry_from_file() knows about ACLs,
	extended attributes, etc so that bsdtar and bsdcpio don't require
	such system-specific knowledge.
Jan 03, 2009: Read filter system extensively refactored.  In particular,
	read filter pipelines are now built out automatically and individual
	filters should be much easier to implement.  Documentation on the
	Googlecode Wiki explains how to implement new filters.
Dec 28, 2008: Many Windows/Visual Studio fixes from Michihiro NAKAJIMA.

Dec 28, 2008: Main libarchive development moved from FreeBSD Perforce
	server to Google Code.  This should make it easier for more
	people to participate in libarchive development.

Dec 28, 2008: libarchive 2.6.0 released
Dec 25, 2008: libarchive 2.5.905a released
Dec 10, 2008: libarchive 2.5.904a released
Dec 04, 2008: libarchive 2.5.903a released
Nov 09, 2008: libarchive 2.5.902a released
Nov 08, 2008: libarchive 2.5.901a released
Nov 08, 2008: Start of pre-release testing for libarchive 2.6

Nov 07, 2008: Read filter refactor: The decompression routines just
	consume and produce arbitrarily-sized blocks.  The reblocking
	from read_support_compression_none() has been pulled into the
	read core.  Also, the decompression bid now makes multiple
	passes and stacks read filters.
Oct 21, 2008: bsdcpio: New command-line parser.
Oct 19, 2008: Internal read_ahead change: short reads are now an error
Oct 06, 2008: bsdtar: option parser no longer uses getopt_long(),
	gives consistent option parsing on all platforms.
Sep 19, 2008: Jaakko Heinonen: shar utility built on libarchive
Sep 17, 2008: Pedro Giffuni: birthtime support
Sep 17, 2008: Miklos Vajna: lzma reader and test.  Note:  I still have
	some concerns about the auto-detection (LZMA file format
	doesn't support auto-detection well), so this is not yet
	enabled under archive_read_support_compression_all().  For
	now, you must call archive_read_support_compression_lzma() if
	you want LZMA read support.
Sep 11, 2008: Ivailo Petrov: Many fixes to Windows build, new solution files
Jul 26, 2008: archive_entry now tracks which values have not been set.
	This helps zip extraction (file size is often "unknown") and
	time restores (tar usually doesn't know atime).
Jul 26, 2008: Joerg Sonnenberger: Performance improvements to shar writer
Jul 25, 2008: Joerg Sonnenberger: mtree write support

Jul 02, 2008: libarchive 2.5.5 released

Jul 02, 2008: libarchive 2.5.5b released
Jul 01, 2008: bsdcpio is being used by enough people, we can call it 1.0.0 now
Jun 20, 2008: bsdcpio: If a -l link fails with EXDEV, copy the file instead
Jun 19, 2008: bsdcpio: additional long options for better GNU cpio compat
Jun 15, 2008: Many small portability and bugfixes since 2.5.4b.

May 25, 2008: libarchive 2.5.4b released
May 21, 2008: Joerg Sonnenberger: fix bsdtar hardlink handling for newc format

May 21, 2008: More progress on Windows building.  Thanks to "Scott"
        for the Windows makefiles, thanks to Kees Zeelenberg for
        code contributions.

May 21, 2008: Fix a number of non-exploitable integer and buffer overflows,
        thanks to David Remahl at Apple for pointing these out.

May 21, 2008: Colin Percival: SIGINFO or SIGUSR1 to bsdtar prints progress info

May 16, 2008: bsdtar's test harness no longer depends on file ordering.
        This was causing spurious test failures on a lot of systems.
        Thanks to Bernhard R. Link for the diagnosis.

May 14, 2008: Joerg Sonnenberger: -s substitution support for bsdtar

May 13, 2008: Joerg Sonnenberger: Many mtree improvements

May 11, 2008: Joerg Sonnenberger: fix hardlink extraction when
	hardlinks have different permissions from original file

April 30, 2008: Primary libarchive work has been moved into the FreeBSD
	project's Perforce repository: 	http://perforce.freebsd.org/
	The libarchive project can be browsed at
        //depot/user/kientzle/libarchive-portable
        Direct link: http://preview.tinyurl.com/46mdgr

May 04, 2008: libarchive 2.5.3b released
	* libarchive: Several fixes to link resolver to address bsdcpio crashes
	* bsdcpio: -p hardlink handling fixes
	* tar/pax: Ensure ustar dirnames end in '/'; be more careful about
	  measuring filenames when deciding what pathname fields to use
	* libarchive: Mark which entry strings are set; be accurate about
	  distinguishing empty strings ("") from unset ones (NULL)
	* tar: Don't crash reading entries with empty filenames
	* libarchive_test, bsdtar_test, bsdcpio_test:  Better detaults:
	  run all tests, delete temp dirs, summarize repeated failures
	* -no-undefined to libtool for Cygwin
	* libarchive_test: Skip large file tests on systems with 32-bit off_t
	* iso9660: Don't bother trying to find the body of an empty file;
	  this works around strange behavior from some ISO9660 writers
	* tar: allow -r -T to be used together
	* tar: allow --format with -r or -u
	* libarchive: Don't build archive.h

May 04, 2008: Simplified building: archive.h is no longer constructed
	This may require additional #if conditionals on some platforms.

Mar 30, 2008: libarchive 2.5.1b released

Mar 15, 2008: libarchive 2.5.0b released
Mar 15, 2008: bsdcpio now seems to correctly write hardlinks into newc,
	ustar, and old cpio archives.  Just a little more testing before
	bsdcpio 1.0 becomes a reality.
Mar 15, 2008: I think the new linkify() interface is finally handling
	all known hardlink strategies.
Mar 15, 2008: Mtree read fixes from Joerg Sonnenberger.
Mar 15, 2008: Many new bsdtar and bsdcpio options from Joerg Sonnenberger.
Mar 15, 2008: test harnesses no longer require uudecode; they
	now have built-in decoding logic that decodes the reference
	files as they are needed.

Mar 14, 2008: libarchive 2.4.14 released; identical to 2.4.13 except for
	a point fix for gname/uname mixup in pax format that was introduced
	with the UTF-8 fixes.

Feb 26, 2008: libarchive 2.4.13 released
Feb 25, 2008: Handle path, linkname, gname, or uname that can't be converted
	to/from UTF-8.  Implement "hdrcharset" attribute from SUS-2008.
Feb 25, 2008: Fix name clash on NetBSD.
Feb 18, 2008: Fix writing empty 'ar' archives, per Kai Wang
Feb 18, 2008: [bsdtar] Permit appending on block devices.
Feb 09, 2008: New "linkify" resolver to help with newc hardlink writing;
	bsdcpio still needs to be converted to use this.
Feb 02, 2008: Windows compatibility fixes from Ivailo Petrov, Kees Zeelenberg
Jan 30, 2008: Ignore hardlink size for non-POSIX tar archives.

Jan 22, 2008: libarchive 2.4.12 released
Jan 22, 2008: Fix bad padding when writing symlinks to newc cpio archives.
Jan 22, 2008: Verify bsdcpio_test by getting it to work against GNU cpio 2.9.
	bsdcpio_test complains about missing options (-y and -z), format
	of informational messages (--version, --help), and a minor formatting
	issue in odc format output.  After this update, bsdcpio_test uncovered
	several more cosmetic issues in bsdcpio, all now fixed.
Jan 22, 2008: Experimental support for self-extracting Zip archives.
Jan 22, 2008: Extend hardlink restore strategy to work correctly with
	hardlinks extracted from newc cpio files.  (Which store the body
	only with the last occurrence of a link.)

Dec 30, 2007: libarchive 2.4.11 released
Dec 30, 2007: Fixed a compile error in bsdcpio on some systems.

Dec 29, 2007: libarchive 2.4.10 released
Dec 29, 2007: bsdcpio 0.9.0 is ready for wider use.
Dec 29, 2007: Completed initial test harness for bsdcpio.

Dec 22, 2007: libarchive 2.4.9 released
Dec 22, 2007: Implement the remaining options for bsdcpio:  -a, -q, -L, -f,
	pattern selection for -i and -it.

Dec 13, 2007: libarchive 2.4.8 released
Dec 13, 2007: gzip and bzip2 compression now handle zero-byte writes correctly,
	Thanks to Damien Golding for bringing this to my attention.

Dec 12, 2007: libarchive 2.4.7 released

Dec 10, 2007: libarchive 2.4.6 released
Dec 09, 2007: tar/test/test_copy.c verifies "tar -c | tar -x" copy pipeline
Dec 07, 2007: Fix a couple of minor memory leaks.

Dec 04, 2007: libarchive 2.4.5 released
Dec 04, 2007: Fix cpio/test/test_write_odc by setting the umask first.

Dec 03, 2007: libarchive 2.4.4 released
Dec 03, 2007: New configure options --disable-xattr and --disable-acl,
	thanks to Samuli Suominen.

Dec 03, 2007: libarchive 2.4.3 released
Dec 03, 2007: Thanks to Lapo Luchini for sending me a ZIP file that
	libarchive couldn't handle.  Fixed a bug in handling of
	"length at end" flags in ZIP files.
Dec 03, 2007: Fixed bsdcpio -help, bsdtar -help tests.
Dec 02, 2007: First cut at real bsdtar test harness.

Dec 02, 2007: libarchive 2.4.2 released

Dec 02, 2007: libarchive 2.4.1 released
Dec 02, 2007: Minor fixes, rough cut of mdoc-to-man conversion for
	man pages.

Oct 30, 2007: libarchive 2.4.0 released
Oct 30, 2007: Minor compile fix thanks to Joerg Schilling.
Oct 30, 2007: Only run the format auction once at the beginning of the
	archive.  This is simpler and supports better error recovery.
Oct 29, 2007: Test support for very large entries in tar archives:
	libarchive_test now exercises entries from 2GB up to 1TB.

Oct 27, 2007: libarchive 2.3.5 released
Oct 27, 2007: Correct some unnecessary internal data copying in the
	"compression none" reader and writer; this reduces user time
	by up to 2/3 in some tests.  (Thanks to Jan Psota for
	publishing his performance test results to GNU tar's bug-tar
	mailing list; those results pointed me towards this problem.)
Oct 27, 2007: Fix for skipping archive entries that are exactly
	a multiple of 4G on 32-bit platforms.
Oct 25, 2007: Fix for reading very large (>8G) tar archives; this was
	broken when I put in support for new GNU tar sparse formats.
Oct 20, 2007: Initial work on new pattern-matching code for cpio; I
	hope this eventually replaces the code currently in bsdtar.

Oct 08, 2007: libarchive 2.3.4 released
Oct 05, 2007: Continuing work on bsdcpio test suite.
Oct 05, 2007: New cpio.5 manpage, updates to "History" of bsdcpio.1 and
	bsdtar.1 manpages.
Oct 05, 2007: Fix zip reader to immediately return EOF if you try
	to read body of non-regular file.  In particular, this fixes
	bsdtar extraction of zip archives.

Sep 30, 2007: libarchive 2.3.3 released
Sep 26, 2007: Rework Makefile.am so that the enable/disable options
	actually do the right things.
Sep 26, 2007: cpio-odc and cpio-newc archives no longer write bodies
	for non-regular files.
Sep 26, 2007: Test harness for bsdcpio is in place, needs more tests written.
	This is much nicer than the ragtag collection of test scripts
	that bsdtar has.

Sep 20, 2007: libarchive 2.3.2 released
Sep 20, 2007: libarchive 2.3.1 broke bsdtar because the archive_write_data()
	fix was implemented incorrectly.

Sep 16, 2007: libarchive 2.3.1 released
Sep 16, 2007: Many fixes to bsdcpio 0.3:  handle hardlinks with -p, recognize
	block size on writing, fix a couple of segfaults.
Sep 16, 2007: Fixed return value from archive_write_data() when used
	with archive_write_disk() to match the documentation and other
	instances of this same function.
Sep 15, 2007: Add archive_entry_link_resolver, archive_entry_strmode

Sep 11, 2007: libarchive 2.2.8 released
Sep 09, 2007: bsdcpio 0.2 supports most (not yet all) of the old POSIX spec.

Sep 01, 2007: libarchive 2.2.7 released
Aug 31, 2007: Support for reading mtree files, including an mtree.5 manpage
	(A little experimental still.)
Aug 18, 2007: Read gtar 1.17 --posix --sparse entries.
Aug 13, 2007: Refined suid/sgid restore handling; it is no longer
	an error if suid/sgid bits are dropped when you request
	perm restore but don't request owner restore.
Aug 06, 2007: Use --enable-bsdcpio if you want to try bsdcpio

Aug 05, 2007: libarchive 2.2.6 released
Aug 05, 2007: New configure option --disable-bsdtar, thanks to Joerg
	Sonnenberger.
Aug 05, 2007: Several bug fixes from FreeBSD CVS repo.

Jul 13, 2007: libarchive 2.2.5 released

Jul 12, 2007: libarchive 2.2.4 released
Jul 12, 2007: Thanks to Colin Percival's help in diagnosing and
	fixing several critical security bugs.  Details available at
	http://security.freebsd.org/advisories/FreeBSD-SA-07:05.libarchive.asc

May 26, 2007: libarchive 2.2.3 released
May 26, 2007: Fix memory leaks in ZIP reader and shar writer, add some
	missing system headers to archive_entry.h, dead code cleanup
	from Colin Percival, more tests for gzip/bzip2, fix an
	EOF anomaly in bzip2 decompression.

May 12, 2007: libarchive 2.2.2 released
May 12, 2007: Fix archive_write_disk permission restore by cloning
	entry passed into write_header so that permission info is
	still available at finish_entry time.  (archive_read_extract()
	worked okay because it held onto the passed-in entry, but
	direct consumers of archive_write_disk would break).  This
	required fixing archive_entry_clone(), which now works and has
	a reasonably complete test case.
May 10, 2007: Skeletal cpio implementation.

May 06, 2007: libarchive 2.2.1 released
May 06, 2007: Flesh out a lot more of test_entry.c so as to catch
	problems such as the device node breakage before releasing <sigh>.
May 05, 2007: Fix a bad bug introduced in 2.1.9 that broke device
	node entries in tar archives.
May 03, 2007: Move 'struct stat' out of archive_entry core as well.
	This removes some portability headaches and fixes a bunch
	of corner cases that arise when manipulating archives on
	dissimilar systems.

Apr 30, 2007: libarchive 2.1.10 released
Apr 31, 2007: Minor code cleanup.

Apr 24, 2007: libarchive 2.1.9 released
Apr 24, 2007: Fix some recently-introduced problems with libraries
	(Just let automake handle it and it all works much better.)
	Finish isolating major()/minor()/makedev() in archive_entry.c.

Apr 23, 2007: libarchive 2.1.8 released
Apr 23, 2007: Minor fixes found from building on MacOS X

Apr 22, 2007: libarchive 2.1.7 released
Apr 22, 2007: Eliminated all uses of 'struct stat' from the
	format readers/writers.  This should improve portability;
	'struct stat' is now only used in archive_entry and in
	code that actually touches the disk.

Apr 17, 2007: libarchive 2.1.6 released
	Libarchive now compiles and passes all tests on Interix.

Apr 16, 2007: libarchive 2.1.5 released

Apr 15, 2007: libarchive 2.1b2 released
Apr 15, 2007: New libarchive_internals.3 documentation of internal APIs.
	Not complete, but should prove helpful.
Apr 15, 2007: Experimental "read_compress_program" and "write_compress_program"
	for using libarchive with external compression.  Not yet
	well tested, and likely has portability issues.  Feedback
	appreciated.

Apr 14, 2007: libarchive 2.0.31 released
Apr 14, 2007: More fixes for Interix, more 'ar' work

Apr 14, 2007: libarchive 2.0.30 released
Apr 13, 2007: libarchive now enforces trailing '/' on dirs
	written to tar archives

Apr 11, 2007: libarchive 2.0.29 released
Apr 11, 2007: Make it easier to statically configure for different platforms.
Apr 11, 2007: Updated config.guess, config.sub, libtool

Apr 06, 2007: libarchive 2.0.28 released
Apr 06, 2007: 'ar' format read/write support thanks to Kai Wang.

Apr 01, 2007: libarchive 2.0.27 released
Mar 31, 2007: Several minor fixes from Colin Percival and Joerg Sonnenberger.

Mar 12, 2007: libarchive 2.0.25 released
Mar 12, 2007: Fix broken --unlink flag.

Mar 11, 2007: libarchive 2.0.24 released
Mar 10, 2007: Correct an ACL blunder that causes any ACL with an entry
    that refers to a non-existent user or group to not be restored correctly.
    The fix both makes the parser more tolerant (so that archives created
    with the buggy ACLs can be read now) and corrects the ACL formatter.
Mar 10, 2007: More work on test portability to Linux.

Mar 10, 2007: libarchive 2.0.22 released
Mar 10, 2007: Header cleanups; added linux/fs.h, removed
    some unnecessary headers, added #include guards in bsdtar.
    If you see any obvious compile failures from this, let me know.
Mar 10, 2007: Work on bsdtar test scripts: not yet robust enough
    to enable as part of "make check", but getting better.
Mar 10, 2007: libarchive now returns ARCHIVE_FAILED when
    a header write fails in a way that only affects this item.
    Less bad than ARCHIVE_FATAL, but worse than ARCHIVE_WARN.

Mar 07, 2007: libarchive 2.0.21 released
Mar 07, 2007: Add some ACL tests (only for the system-independent
    portion of the ACL support for now).
Mar 07, 2007: tar's ability to read ACLs off disk got
    turned off for FreeBSD; re-enable it.  (ACL restores and
    libarchive support for storing/reading ACLs from pax
    archives was unaffected.)

Mar 02, 2007: libarchive 2.0.20 released
Mar 2, 2007:  It's not perfect, but it's pretty good.
    Libarchive 2.0 is officially out of beta.

Feb 28, 2007: libarchive 2.0b17 released
Feb 27, 2007: Make the GID restore checks more robust by checking
    whether the current user has too few or too many privileges.

Feb 26, 2007: libarchive 2.0b15 released
Feb 26, 2007: Don't lose symlinks when extracting from ISOs.
    Thanks to Diego "Flameeyes" Pettenò for telling me about the
    broken testcase on Gentoo that (finally!) led me to the cause
    of this long-standing bug.

Feb 26, 2007: libarchive 2.0b14 released
Feb 26, 2007: Fix a broken test on platforms that lack lchmod().

Feb 25, 2007: libarchive 2.0b13 released
Feb 25, 2007: Empty archives were being written as empty files,
    without a proper end-of-archive marker.  Fixed.

Feb 23, 2007: libarchive 2.0b12 released
Feb 22, 2007: Basic security checks added: _EXTRACT_SECURE_NODOTDOT
    and _EXTRACT_SECURE_SYMLINK.  These checks used to be in bsdtar,
    but they belong down in libarchive where they can be used by
    other tools and where they can be better optimized.

Feb 11, 2007: libarchive 2.0b11 released
Feb 10, 2007: Fixed a bunch of errors in libarchive's handling
    of EXTRACT_PERM and EXTRACT_OWNER, especially relating
    to SUID and SGID bits.

Jan 31, 2007: libarchive 2.0b9 released
Jan 31, 2007: Added read support for "empty" archives as a
    distinct archive format.  Bsdtar uses this to handle, e.g.,
    "touch foo.tar; tar -rf foo.tar"

Jan 22, 2007: libarchive 2.0b6 released
Jan 22, 2007: archive_write_disk API is now in place.  It provides
    a finer-grained interface than archive_read_extract.  In particular,
    you can use it to create objects on disk without having an archive
    around (just feed it archive_entry objects describing what you
    want to create), you can override the uname/gname-to-uid/gid lookups
    (minitar uses this to avoid getpwXXX() and getgrXXX() bloat).

Jan 09, 2007: libarchive 2.0a3 released
Jan 9, 2007: archive_extract is now much better; it handles the
    most common cases with a minimal number of system calls.
    Some features still need a lot of testing, especially corner
    cases involving objects that already exist on disk.   I expect
    the next round of API overhaul will simplify building test cases.
Jan 9, 2007: a number of fixes thanks to Colin Percival, especially
    corrections to the skip() framework and handling of large files.
Jan 9, 2007: Fixes for large ISOs.  The code should correctly handle
    very large ISOs with entries up to 4G.   Thanks to Robert Sciuk
    for pointing out these issues.

Sep 05, 2006: libarchive 1.3.1 released
Sep 5, 2006: Bump version to 1.3 for new I/O wrappers.
Sep 4, 2006: New memory and FILE read/write wrappers.
Sep 4, 2006: libarchive test harness is now minimally functional;
    it's located a few minor bugs in error-handling logic

Aug 17, 2006: libarchive 1.2.54 released
Aug 17, 2006: Outline ABI changes for libarchive 2.0; these
   are protected behind #ifdef's until I think I've found everything
   that needs to change.
Aug 17, 2006: Fix error-handling in archive_read/write_close()
   They weren't returning any errors before.
Aug 17, 2006: Fix recursive-add logic to not trigger if it's not set
   Fixes a bug adding files when writing archive to pipe or when
   using archive_write_open() directly.
Jul 2006: New "skip" handling improves performance extracting
   single files from large uncompressed archives.

Mar 21, 2006: 1.2.52 released
Mar 21, 2006: Fix -p on platforms that don't have platform-specific
   extended attribute code.
Mar 20, 2006: Add NEWS file; fill in some older history from other
   files.  I'll try to keep this file up-to-date from now on.

OLDER NEWS SUMMARIES

Mar 19, 2006: libarchive 1.2.51 released
Mar 18, 2006: Many fixes to extended attribute support, including a redesign
   of the storage format to simplify debugging.
Mar 12, 2006: Remove 'tp' support; it was a fun idea, but not worth
   spending much time on.
Mar 11, 2006: Incorporated Jaakko Heinonen's still-experimental support
   for extended attributes (Currently Linux-only.).
Mar 11, 2006: Reorganized distribution package: There is now one tar.gz
   file that builds both libarchive and bsdtar.
Feb 13, 2006: Minor bug fixes: correctly read cpio device entries, write
   Pax attribute entry names.
Nov 7, 2005: Experimental 'tp' format support in libarchive.  Feedback
   appreciated; this is not enabled by archive_read_support_format_all()
   yet as I'm not quite content with the format detection heuristics.
Nov 7, 2005: Some more portability improvements thanks to Darin Broady,
   minor bugfixes.
Oct 12, 2005: Use GNU libtool to build shared libraries on many systems.
Aug 9, 2005: Correctly detect that MacOS X does not have POSIX ACLs.
Apr 17, 2005: Kees Zeelenberg has ported libarchive and bsdtar to Windows:
   http://gnuwin32.sourceforge.net/
Apr 11, 2005: Extended Zip/Zip64 support thanks to Dan Nelson.  -L/-h
   fix from Jaakko Heinonen.
Mar 12, 2005: archive_read_extract can now handle very long
   pathnames (I've tested with pathnames up to 1MB).
Mar 12, 2005: Marcus Geiger has written an article about libarchive
   http://xsnil.antbear.org/2005/02/05/archive-mit-libarchive-verarbeiten/
   including examples of using it from Objective-C.  His MoinX
   http://moinx.antbear.org/ desktop Wiki uses
   libarchive for archiving and restoring Wiki pages.
Jan 22, 2005: Preliminary ZIP extraction support,
    new directory-walking code for bsdtar.
Jan 16, 2005: ISO9660 extraction code added; manpage corrections.
May 22, 2004: Many gtar-compatible long options have been added; almost
    all FreeBSD ports extract correctly with bsdtar.
May 18, 2004: bsdtar can read Solaris, HP-UX, Unixware, star, gtar,
    and pdtar archives.
