Version 2.5006 * Fix FreeBSD build errors (RT #116667) * Fix issue with truncated symlink destinations w/GNU extensions (RT #115370) Version 2.5005 * Fix issues with corrupted Perl call stack after handling a certain number of files with hard links enabled Version 2.5004 * Keep member name of hardlinks, not physical path Version 2.5003 * Implement 'preserve_hardlinks' flag in Archive::Tar::Builder->new() to trigger this new behavior * Implement Archive::Tar::Builder::HardlinkCache to keep track of device and inode numbers and the path which was originally seen when producing the tarball; only regular files with a link count greater than 1 are stored and looked up in the cache * In unit tests, change permissions of subdirectories of directories created by File::Temp created with 0000 permissions to 0600 to allow File::Temp to successfully delete them at the end of execution * Add missing POD for posix_extensions flag * Implement support for saving device inode major and minor numbers Version 2.0000 * Change to a versioning scheme more friendly to the mysterious black box known as PAUSE * Don't fail on EACCES when stat()ing file Version 1.9 * Fix a bug in b_find() wherein some error recovery code tried to destroy the same object twice, potentially Version 1.8 [redacted for secret government purposes] Version 1.7 * Fix a variety of unit tests which depended on GNU tar availability as indicated by CPANTS; make provisions for BSD tars as well * Make t/lib-Archive-Tar-Builder_bitfile.t only run when TEST_BIGFILE=1 is specified * Don't produce archives with mismatched file sizes * Implement 'gnu_extensions' flag to make support for arbitrarily long filenames an explicit feature to enable, so as to help end developers avoid producing archives that cannot be extracted by their native tar * Set $! to ENAMETOOLONG when long filenames are detected and the aforementioned 'gnu_extensions' flag is not specified * Set $! to EINVAL when truncated files are detected * Fix an issue in b_error_set() wherein the message actually got clobbered due to a missing 'return' statement * Retool $builder->archive_as() to display error names for archive members, rather than their original filenames, in appropriate circumstances Version 1.6 * Avoid stat() calls on files excluded from archive Version 1.5 * Correct handling of files between 4 GiB & 8 GiB, inclusive Version 1.4 * Do not croak() on a warning Version 1.3 * Remove 2 GB file limit Version 1.2 * Correct handling of member names in LongLink blocks * Correct handling of filenames between 100 and 156 characters Version 1.1 * Correct suffix length calculation for directories, so directory path is set to archive_as value instead of absolutely path. Version 1.0 * Implement a large shared buffer; alleviate the need to copy tar file headers and file contents from one place to another when reading and writing * Allow reading from the filesystem and writing to tar streams in large blocks, thanks to a large shared buffer; no more reading and writing in blocks of 512 bytes at a time, which becomes rather slow for very large files * Remove the need to memcpy() a new file header buffer for each file * Allow the caller to specify a blocking factor in the constructor Archive::Tar::Builder->new(), in multiples of 512 bytes * Introduce a new Archive::Tar::Builder usage pattern; instead of allowing caller to add "members" to the archive, new archive members are written on-the-fly with the archive() and archive_as() methods, which are much friendlier to making tarball streams from arbitrary parts of a filesystem * Add 'flush()' method to Archive::Tar::Builder; allow caller to flush buffers at the end of an archive * Add 'finish()' method to Archive::Tar::Builder; allow caller to flush buffers and die() if any errors are encountered at the end of an archive * Use breadth-first, not depth-first, recursion in src/b_find.c, to prevent loss of items upon extraction * Add a 'follow_symlinks' option to Archive::Tar::Builder->new() * Resolve an issue wherein certain long paths are split incorrectly * Strip any leading slashes from paths generated while archiving * As a bonus, much of the codebase has been simplified due to the unified usage of a large shared buffer Version 0.9 * Resolve issues where files of certain sizes will cause no header value to be written in the size field * Ensure files >=8GB receive a proper base256-encoded size header field value * Implement a "ignore_errors" option which causes Archive::Tar::Builder to not die() at the end of archiving a stream wherein non-fatal errors were encountered Version 0.8 * Implemented an error handling mechanism which allows the presentation of non-fatal warnings to the caller, but also causes Archive::Tar::Builder to exit cleanly in otherwise fatal conditions; simple permissions issues while building an archive will no longer stop the stream * Allow caller to suppress warn()ings when archiving files Version 0.7 * No functional changes; drop unnecessary dependencies from PREREQ_PM in Makefile.PL Version 0.6 * No functional changes; adds build and test support for Perl 5.6 toolchains with the help of a variety of very ugly hacks in various places in unit test t/lib-Archive-Tar-Builder.t Version 0.5 * Feature-for-feature reimplementation in C with a small XS layer * Remove option of "GNU extensions"; GNU extensions are now always available and use is implied * Slightly better adherence to POSIX ustar header format, such as with ustar header magic Version 0.4 * Resolve an issue of build-time modules in mk/ being picked up by CPAN's indexer, resulting in an "UNAUTHORIZED RELEASE" warning, by declaring the PMLIBDIRS value in Makefile.PL to include only 'lib', and using a trick (thanks RURBAN!) to cause the PAUSE indexer to not pick up the package declarations in the files in mk/ Version 0.3 Initial release