History.md in minitar-0.9 vs History.md in minitar-0.12

- old
+ new

@@ -1,170 +1,201 @@ +# History + +## 0.12 / 2024-08-DD + +- Properly handle very long GNU filenames, resolving [#46][]. +- Handle very long GNU filenames that are 512 or more bytes, resolving [#45][]. + Originally implemented in [#47][] by Vijay, but accidentally closed. + +## 0.11 / 2022-12-31 + +- symlink support is complete. Merged as PR [#42][], rebased and built on top of + PR [#12][] by fetep. + +- kymmt90 fixed a documentation error on Minitar.pack in PR [#43][]. + +- This version is a soft-deprecation of all versions before Ruby 2.7, as they + will no longer be tested in CI. + +## 0.10 / 2022-03-26 + +- nevesenin fixed an issue with long filename handling. Merged as PR [#40][]. + ## 0.9 / 2019-09-04 -* jtappa added the ability to skip fsync with a new option to Minitar.unpack - and Minitar::Input#extract_entry. Provide `:fsync => false` as the last - parameter to enable. Merged from a modified version of PR [#37][]. +- jtappa added the ability to skip fsync with a new option to Minitar.unpack + and Minitar::Input#extract_entry. Provide `:fsync => false` as the last + parameter to enable. Merged from a modified version of PR [#37][]. ## 0.8 / 2019-01-05 -* inkstak resolved an issue introduced in the fix for [#31][] by allowing - spaces to be considered valid characters in strict octal handling. Octal - conversion ignores leading spaces. Merged from a slightly modified version - of PR [#35][]. +- inkstak resolved an issue introduced in the fix for [#31][] by allowing + spaces to be considered valid characters in strict octal handling. Octal + conversion ignores leading spaces. Merged from a slightly modified version + of PR [#35][]. -* dearblue contributed PR [#32][] providing an explicit call to #bytesize for - strings that include multibyte characters. The PR has been modified to be - compatible with older versions of Ruby and extend tests. +- dearblue contributed PR [#32][] providing an explicit call to #bytesize for + strings that include multibyte characters. The PR has been modified to be + compatible with older versions of Ruby and extend tests. -* Akinori MUSHA (knu) contributed PR [#36][] that treats certain badly - encoded regular files (with names ending in `/`) as if they were - directories on decode. +- Akinori MUSHA (knu) contributed PR [#36][] that treats certain badly + encoded regular files (with names ending in `/`) as if they were + directories on decode. ## 0.7 / 2018-02-19 -* Fixed issue [#28][] with a modified version of PR [#29][] covering the - security policy and position for Minitar. Thanks so much to ooooooo\_q for - the report and an initial patch. Additional information was added as - [#30][]. +- Fixed issue [#28][] with a modified version of PR [#29][] covering the + security policy and position for Minitar. Thanks so much to ooooooo_q for + the report and an initial patch. Additional information was added as + [#30][]. -* dearblue contributed PR [#33][] providing a fix for Minitar::Reader when - the IO-like object does not have a `#pos` method. +- dearblue contributed PR [#33][] providing a fix for Minitar::Reader when + the IO-like object does not have a `#pos` method. -* Kevin McDermott contributed PR [#34][] so that an InvalidTarStream is - raised if the tar header is not valid, preventing incorrect streaming of - files from a non-tarfile. This is a minor breaking change, so the version - has been bumped accordingly. +- Kevin McDermott contributed PR [#34][] so that an InvalidTarStream is + raised if the tar header is not valid, preventing incorrect streaming of + files from a non-tarfile. This is a minor breaking change, so the version + has been bumped accordingly. -* Kazuyoshi Kato contributed PR [#26][] providing support for the GNU tar - long filename extension. +- Kazuyoshi Kato contributed PR [#26][] providing support for the GNU tar + long filename extension. -* Addressed a potential DOS with negative size fields in tar headers - ([#31][]). This has been handled in two ways: the size field in a tar - header is interpreted as a strict octal value and the Minitar reader will - raise an InvalidTarStream if the size ends up being negative anyway. +- Addressed a potential DOS with negative size fields in tar headers + ([#31][]). This has been handled in two ways: the size field in a tar + header is interpreted as a strict octal value and the Minitar reader will + raise an InvalidTarStream if the size ends up being negative anyway. ## 0.6.1 / 2017-02-07 -* Fixed issue [#24][] where streams were being improperly closed immediately - on open unless there was a block provided. +- Fixed issue [#24][] where streams were being improperly closed immediately + on open unless there was a block provided. -* Hopefully fixes issue [#23][] by releasing archive-tar-minitar after - minitar-cli is available. +- Hopefully fixes issue [#23][] by releasing archive-tar-minitar after + minitar-cli is available. ## 0.6 / 2017-02-07 -* Breaking Changes: +- Breaking Changes: - * Extracted `bin/minitar` into a new gem, `minitar-cli`. No, I am *not* - going to bump the major version for this. As far as I can tell, few - people use the command-line utility anyway. (Installing - `archive-tar-minitar` will install both `minitar` and `minitar-cli`, at - least until version 1.0.) + - Extracted `bin/minitar` into a new gem, `minitar-cli`. No, I am _not_ + going to bump the major version for this. As far as I can tell, few + people use the command-line utility anyway. (Installing + `archive-tar-minitar` will install both `minitar` and `minitar-cli`, at + least until version 1.0.) - * Minitar extraction before 0.6 traverses directories if the tarball - includes a relative directory reference, as reported in [#16][] by - @ecneladis. This has been disallowed entirely and will throw a - SecureRelativePathError when found. Additionally, if the final - destination of an entry is an already-existing symbolic link, the - existing symbolic link will be removed and the file will be written - correctly (on platforms that support symblic links). + - Minitar extraction before 0.6 traverses directories if the tarball + includes a relative directory reference, as reported in [#16][] by + @ecneladis. This has been disallowed entirely and will throw a + SecureRelativePathError when found. Additionally, if the final + destination of an entry is an already-existing symbolic link, the + existing symbolic link will be removed and the file will be written + correctly (on platforms that support symblic links). -* Enhancements: +- Enhancements: - * Licence change. After speaking with Mauricio Fernández, we have changed - the licensing of this library to Ruby and Simplified BSD and have - dropped the GNU GPL license. This takes effect from the 0.6 release. - * Printing a deprecation warning for including Archive::Tar to put - Minitar in the top-level namespace. - * Printing a deprecation warning for including Archive::Tar::Minitar into - a class (Minitar will be a class for version 1.0). - * Moved Archive::Tar::PosixHeader to Archive::Tar::Minitar::PosixHeader - with a deprecation warning. Do not depend on - Archive::Tar::Minitar::PosixHeader, as it will be moving to - ::Minitar::PosixHeader in a future release. - * Added an alias, ::Minitar, for Archive::Tar::Minitar, opted in with - `require 'minitar'`. In future releases, this alias will be enabled by - default, and the Archive::Tar namespace will be removed entirely for - version 1.0. - * Modified the handling of `mtime` in PosixHeader to do an integer - conversion (#to_i) so that a Time object can be used instead of the - integer value of the time object. - * Writer::RestrictedStream was renamed to Writer::WriteOnlyStream for - clarity. No alias or deprecation warning was provided for this as it is - an internal implementation detail. - * Writer::BoundedStream was renamed to Writer::BoundedWriteStream for - clarity. A deprecation warning is provided on first use because a - BoundedWriteStream may raise a BoundedWriteStream::FileOverflow - exception. - * Writer::BoundedWriteStream::FileOverflow has been renamed to - Writer::WriteBoundaryOverflow and inherits from StandardError instead - of RuntimeError. Note that for Ruby 2.0 or higher, an error will be - raised when specifying Writer::BoundedWriteStream::FileOverflow because - Writer::BoundedWriteStream has been declared a private constant. - * Modified Writer#add_file_simple to accept the data for a - file in `opts[:data]`. When `opts[:data]` is provided, a stream block - must not be provided. Improved the documentation for this method. - * Modified Writer#add_file to accept `opts[:data]` and transparently call - Writer#add_file_simple in this case. - * Methods that require blocks are no longer required, so the - Archive::Tar::Minitar::BlockRequired exception has been removed with a - warning (this may not work on Ruby 1.8). - * Dramatically reduced the number of strings created when creating a - POSIX tarball header. - * Added a helper, Input.each_entry that iterates over each entry in an - opened entry object. + - Licence change. After speaking with Mauricio Fernández, we have changed + the licensing of this library to Ruby and Simplified BSD and have + dropped the GNU GPL license. This takes effect from the 0.6 release. + - Printing a deprecation warning for including Archive::Tar to put + Minitar in the top-level namespace. + - Printing a deprecation warning for including Archive::Tar::Minitar into + a class (Minitar will be a class for version 1.0). + - Moved Archive::Tar::PosixHeader to Archive::Tar::Minitar::PosixHeader + with a deprecation warning. Do not depend on + Archive::Tar::Minitar::PosixHeader, as it will be moving to + ::Minitar::PosixHeader in a future release. + - Added an alias, ::Minitar, for Archive::Tar::Minitar, opted in with + `require 'minitar'`. In future releases, this alias will be enabled by + default, and the Archive::Tar namespace will be removed entirely for + version 1.0. + - Modified the handling of `mtime` in PosixHeader to do an integer + conversion (#to_i) so that a Time object can be used instead of the + integer value of the time object. + - Writer::RestrictedStream was renamed to Writer::WriteOnlyStream for + clarity. No alias or deprecation warning was provided for this as it is + an internal implementation detail. + - Writer::BoundedStream was renamed to Writer::BoundedWriteStream for + clarity. A deprecation warning is provided on first use because a + BoundedWriteStream may raise a BoundedWriteStream::FileOverflow + exception. + - Writer::BoundedWriteStream::FileOverflow has been renamed to + Writer::WriteBoundaryOverflow and inherits from StandardError instead + of RuntimeError. Note that for Ruby 2.0 or higher, an error will be + raised when specifying Writer::BoundedWriteStream::FileOverflow because + Writer::BoundedWriteStream has been declared a private constant. + - Modified Writer#add_file_simple to accept the data for a + file in `opts[:data]`. When `opts[:data]` is provided, a stream block + must not be provided. Improved the documentation for this method. + - Modified Writer#add_file to accept `opts[:data]` and transparently call + Writer#add_file_simple in this case. + - Methods that require blocks are no longer required, so the + Archive::Tar::Minitar::BlockRequired exception has been removed with a + warning (this may not work on Ruby 1.8). + - Dramatically reduced the number of strings created when creating a + POSIX tarball header. + - Added a helper, Input.each_entry that iterates over each entry in an + opened entry object. -* Bugs: +- Bugs: - * Fix [#2][] to handle IO streams that are not seekable, such as pipes, - STDIN, or STDOUT. - * Fix [#3][] to make the test timezone resilient. - * Fix [#4][] for supporting the reading of tar files with filenames in - the GNU long filename extension format. Ported from @atoulme’s fork, - originally provided by Curtis Sampson. - * Fix [#6][] by making it raise the correct error for a long filename - with no path components. - * Fix [#13][] provided by @fetep fixes an off-by-one error on filename - splitting. - * Fix [#14][] provided by @kzys should fix Windows detection issues. - * Fix [#16][] as specified above. - * Fix an issue where Minitar.pack would not include Unix hidden files - when creating a tarball. + - Fix [#2][] to handle IO streams that are not seekable, such as pipes, + STDIN, or STDOUT. + - Fix [#3][] to make the test timezone resilient. + - Fix [#4][] for supporting the reading of tar files with filenames in + the GNU long filename extension format. Ported from @atoulme’s fork, + originally provided by Curtis Sampson. + - Fix [#6][] by making it raise the correct error for a long filename + with no path components. + - Fix [#13][] provided by @fetep fixes an off-by-one error on filename + splitting. + - Fix [#14][] provided by @kzys should fix Windows detection issues. + - Fix [#16][] as specified above. + - Fix an issue where Minitar.pack would not include Unix hidden files + when creating a tarball. -* Development: +- Development: - * Modernized minitar tooling around Hoe. - * Added travis and coveralls. + - Modernized minitar tooling around Hoe. + - Added travis and coveralls. ## 0.5.2 / 2008-02-26 -* Bugs: - * Fixed a Ruby 1.9 compatibility error. +- Bugs: + - Fixed a Ruby 1.9 compatibility error. ## 0.5.1 / 2004-09-27 -* Bugs: - * Fixed a variable name error. +- Bugs: + - Fixed a variable name error. ## 0.5.0 -* Initial release. Does files and directories. Command does create, extract, +- Initial release. Does files and directories. Command does create, extract, and list. [#2]: https://github.com/halostatue/minitar/issues/2 [#3]: https://github.com/halostatue/minitar/issues/3 [#4]: https://github.com/halostatue/minitar/issues/4 [#6]: https://github.com/halostatue/minitar/issues/6 +[#12]: https://github.com/halostatue/minitar/pull/12 [#13]: https://github.com/halostatue/minitar/issues/13 [#14]: https://github.com/halostatue/minitar/issues/14 [#16]: https://github.com/halostatue/minitar/issues/16 [#23]: https://github.com/halostatue/minitar/issues/23 [#24]: https://github.com/halostatue/minitar/issues/24 -[#26]: https://github.com/halostatue/minitar/issues/26 +[#26]: https://github.com/halostatue/minitar/issues/27 [#28]: https://github.com/halostatue/minitar/issues/28 -[#29]: https://github.com/halostatue/minitar/issues/29 +[#29]: https://github.com/halostatue/minitar/pull/29 [#30]: https://github.com/halostatue/minitar/issues/30 -[#32]: https://github.com/halostatue/minitar/issues/32 -[#33]: https://github.com/halostatue/minitar/issues/33 -[#35]: https://github.com/halostatue/minitar/issues/35 -[#36]: https://github.com/halostatue/minitar/issues/36 -[#37]: https://github.com/halostatue/minitar/issues/37 +[#31]: https://github.com/halostatue/minitar/issues/31 +[#32]: https://github.com/halostatue/minitar/pull/32 +[#33]: https://github.com/halostatue/minitar/pull/33 +[#34]: https://github.com/halostatue/minitar/pull/34 +[#35]: https://github.com/halostatue/minitar/pull/35 +[#36]: https://github.com/halostatue/minitar/pull/36 +[#37]: https://github.com/halostatue/minitar/pull/37 +[#40]: https://github.com/halostatue/minitar/pull/40 +[#42]: https://github.com/halostatue/minitar/pull/42 +[#43]: https://github.com/halostatue/minitar/pull/43 +[#45]: https://github.com/halostatue/minitar/issues/45 +[#46]: https://github.com/halostatue/minitar/issues/46 +[#47]: https://github.com/halostatue/minitar/pull/47