Version 0.9.19 * When reading a directory, do not process detached inodes Version 0.9.18 * Fix spurious tar file header emitted for unreadable files. * Add 'ignore_inaccessible' option to tar() method. * Add ReducedPrivileges filesystem. * Add 'recursion_mode' option to find() method. * Fix handling of 'detached' inodes in Real directories. * Fix handling of inodes named '0' * Make alias() copy symlinks instead of the symlink targets. Version 0.9.17 * Revert _write_file() refactor until further investigation is complete Version 0.9.16 * Finally get around to adding this lovely Changes file * Refactor tar _write_file() method Refactor Filesys::POSIX::Userland::Tar->_write_file() method to ensure the amount of data written for a file is indeed the amount committed to in the archive member's header; if a file is shorter than indicated, then sufficient padding is provided to compensate; and if a file grows longer than promised, then the file output is truncated, and a warning is emitted indicating as such. Version 0.9.15 * Rename t/lib-Filesys-POSIX-Userland-Tar_race2.t to t/tar-race.t * Update MANIFEST to add t/tar-race.t * Update MANIFEST to add missing t/mount.t * Remove useless shebang from t/false-filename.t * Don't use Exporter in lib/Filesys/POSIX.pm * Replace mkdtemp() with File::Temp::tempdir() Fix OpenBSD CPANTS errors by replacing mkdtemp() with File::Temp::tempdir() * Replace qw// with qw() * Fix CPANTS test failures Modify Filesys::POSIX::Userland::Tar's $fs->tar() method option 'ignore_missing' to test $! for ENOENT rather than checking $@, which can get localized to something other than what we used to expect Modify Filesys::POSIX::Userland::Tar's $fs->tar() to use a blocking factor of 20 * 512 bytes; pad end of stream to prevent failure untarring on BSD tar Modify t/rename.t to be slightly less anal about expected output from tar, to accommodate for slight differences in formatted output between GNU tar and BSD tar Modify t/tar-missing.t to use Test::Filesys::POSIX::Error function throws_errno_ok() Modify Test::Filesys::POSIX::Error to use Try::Tiny, rather than plain block eval(), which causes issues with Perl <=5.12 Modify Test::Filesys::POSIX::Error to build a default number=>name cache populated with number=>number, in case of an incompatible Errno module * Implement pax header support for tar implementation Teach the tar implementation how to deal with long filenames and symlinks by using pax extended headers. Add unit tests to ensure the header length computation is correct. * Remove $fs->import_module() mechanism Modules previously declared as mixins in the Filesys::POSIX namespace can declare themselves in their own namespace, but can selectively export their methods into Filesys::POSIX; this has the side effect of making POD for mixin modules render correctly on Meta::CPAN Extension modules can be loaded by simply using 'use Some::Module'; their benefits can be used by any Filesys::POSIX object immediately thereafter * Refactor to use Errno for error reporting Implement Filesys::POSIX::Error with throw() function to simplify throwing of errors by number; sets $! to a specified value, and throws a stringified $! with Carp::confess() Implement Test::Filesys::POSIX::Error with throws_errno_ok() to simplify refactor of unit tests to enforce new interface contract Change a few errors thrown to an errno.h value which better matches the behavior of a real Unix environment Update POD to reflect exceptions thrown by their errno.h macro name Update copyright on all files to 2014 * Update Makefile.PL Add GitHub info to Makefile.PL Update authorship to reflect PAUSE account email address Update copyright in Makefile.PL Add .perltidyrc to repository, MANIFEST * Replace README with README.md * Update synopsis of Filesys::POSIX::Real Update synopsis, usage and exceptions indicated in the POD for the module Filesys::POSIX::Real to accurately reflect current usage * Replace failing t/tar-race.t with t/tar-missing.t Rather than fork()ing a subprocess to perform the archiving, archive to a file handle opened for /dev/null Use map() to bring a file in from the real filesystem into a fake one, and remove the referred file from $fs immediately prior to tar() to ensure desired condition is triggered deterministically Version 0.9.14 * Avoid archiving nonregular files and sockets Implement $inode->sock() convenience function to quickly ascertain whether an inode references a socket Make Filesys::POSIX::Userland::Tar->tar() avoid attempting to archive sockets at all Avoid opening files for archival if they are non-regular files, or are regular files of zero byte size Localize usage of $@ * Mass perltidy * Corrected error handling for later versions of Carp Carp changes resulted in the $! variable being lost, so it error details would not be reported; this caused test failures on some systems. Fixed by copying the $! variable before passing it to confess using stringification, i.e. "$!". Version 0.9.13 * Add correct handling of real filesystem renames The rename method in Filesys::POSIX was a generic manipulation of the data structure without considering any additional change that might need to be made on the backend storage (in particular, Filesys::POSIX::Real::Directory). This caused the object to be aware that new member had been added, but to also remain conscious of the old member, which still had a presence on disk and therefore was visible through Filesys::POSIX::Real::Directory. This change moves some of the generic rename handling logic from Filesys::POSIX::rename into Filesys::POSIX::Directory::rename_member and adds a Real-specific rename_member method to the Filesys::POSIX::Real::Directory class, allowing it to handle its own special case (use the actual rename function). * Further conversion to Filesys::POSIX::Bits::System Replaced an existing (and incomplete) bit conversion function with the one provided by Filesys::POSIX::Bits::System to reduce code duplication. Version 0.9.12 * Improve EOF detection when reading files for inclusion in tar Version 0.9.11 * Avoid creating archives with mismatched file sizes