Update IO-Compress to CPAN version 2.084
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 17 Jan 2019 18:08:33 +0000 (18:08 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 17 Jan 2019 18:08:33 +0000 (18:08 +0000)
  [DELTA]

  2.084 5 January 2019

      * IO::Uncompress::AnyUncompress.pm
        Added support for IO::Uncompress::Zstd and IO::Uncompress::UnLzip

  2.083 30 December 2018

      * IO::Compress::*
      * IO::Uncompress::*
        The BinModeIn and BinModeOut options in are now no-ops.
        ALL files will be read/written in binmode.

      * IO::Uncompress::Unzip
        Fixed issue with unziping a member from a streamed zip file.
        Issue triggered by a libreoffice document.
        Test added to 105oneshot-zip-only.t
        Thanks to Fabrizio Pivari for the bug report.

      * Added U64::isZero

      * bin/zipdetails
        Added 'Data Stream Alignment' (tag 0xa11e) to extra fields.
        Field sourced from https://support.pkware.com/display/PKZIP/Proposed+ZIP+Format+Specification+Additions

      * Compress::Zlib.pm
        #125140: Tiny POD error in Compress::Zlib

45 files changed:
MANIFEST
Porting/Maintainers.pl
cpan/IO-Compress/Makefile.PL
cpan/IO-Compress/bin/zipdetails
cpan/IO-Compress/lib/Compress/Zlib.pm
cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm
cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm
cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm
cpan/IO-Compress/lib/IO/Compress/Base.pm
cpan/IO-Compress/lib/IO/Compress/Base/Common.pm
cpan/IO-Compress/lib/IO/Compress/Bzip2.pm
cpan/IO-Compress/lib/IO/Compress/Deflate.pm
cpan/IO-Compress/lib/IO/Compress/FAQ.pod
cpan/IO-Compress/lib/IO/Compress/Gzip.pm
cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm
cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm
cpan/IO-Compress/lib/IO/Compress/Zip.pm
cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm
cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm
cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm
cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm
cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm
cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm
cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm
cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm
cpan/IO-Compress/lib/IO/Uncompress/Base.pm
cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm
cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm
cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm
cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm
cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm
cpan/IO-Compress/t/000prereq.t
cpan/IO-Compress/t/004gziphdr.t
cpan/IO-Compress/t/101truncate-bzip2.t
cpan/IO-Compress/t/101truncate-deflate.t
cpan/IO-Compress/t/101truncate-gzip.t
cpan/IO-Compress/t/101truncate-zip.t
cpan/IO-Compress/t/105oneshot-zip-only.t
cpan/IO-Compress/t/compress/CompTestUtils.pm
cpan/IO-Compress/t/compress/generic.pl
cpan/IO-Compress/t/compress/multi.pl
cpan/IO-Compress/t/compress/oneshot.pl
cpan/IO-Compress/t/compress/truncate.pl
cpan/IO-Compress/t/files/meta.xml [new file with mode: 0644]
cpan/IO-Compress/t/files/test.ods [new file with mode: 0644]

index c2e2634..4c68904 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1135,6 +1135,8 @@ cpan/IO-Compress/t/cz-03zlib-v1.t                 IO::Compress
 cpan/IO-Compress/t/cz-06gzsetp.t                       IO::Compress
 cpan/IO-Compress/t/cz-08encoding.t                     IO::Compress
 cpan/IO-Compress/t/cz-14gzopen.t                       IO::Compress
+cpan/IO-Compress/t/files/meta.xml
+cpan/IO-Compress/t/files/test.ods
 cpan/IO-Compress/t/globmapper.t                                IO::Compress
 cpan/IO-Socket-IP/lib/IO/Socket/IP.pm                  IO::Socket::IP
 cpan/IO-Socket-IP/t/00use.t                            IO::Socket::IP tests
index 2d7a1f4..0d9721b 100755 (executable)
@@ -615,7 +615,7 @@ use File::Glob qw(:case);
     },
 
     'IO-Compress' => {
-        'DISTRIBUTION' => 'PMQS/IO-Compress-2.081.tar.gz',
+        'DISTRIBUTION' => 'PMQS/IO-Compress-2.084.tar.gz',
         'FILES'        => q[cpan/IO-Compress],
         'EXCLUDED'     => [
             qr{^examples/},
index 7ecefeb..ca8cce4 100644 (file)
@@ -3,7 +3,7 @@
 use strict ;
 require 5.006 ;
 
-$::VERSION = '2.081' ;
+$::VERSION = '2.084' ;
 
 use lib '.';
 use private::MakeUtil;
index fb5ceab..ac647b3 100644 (file)
@@ -173,13 +173,14 @@ my %Extras = (
       0x7855,  ['Unix Extra type 2', \&decode_Ux],
       0x7875,  ['Unix Extra Type 3', \&decode_ux],
       0x9901,  ['AES Encryption', \&decode_AES],
+      0xa11e,  ['Data Stream Alignment', undef],
       0xA220,  ['Open Packaging Growth Hint', undef ],
       0xCAFE,  ['Java Executable', \&decode_Java_exe],
       0xfb4a,  ['SMS/QDOS', undef],
 
        );
 
-my $VERSION = "1.08" ;
+my $VERSION = "1.09" ;
 
 my $FH;
 
index 36b224f..ce79d7d 100644 (file)
@@ -7,17 +7,17 @@ use Carp ;
 use IO::Handle ;
 use Scalar::Util qw(dualvar);
 
-use IO::Compress::Base::Common 2.081 ;
-use Compress::Raw::Zlib 2.081 ;
-use IO::Compress::Gzip 2.081 ;
-use IO::Uncompress::Gunzip 2.081 ;
+use IO::Compress::Base::Common 2.084 ;
+use Compress::Raw::Zlib 2.084 ;
+use IO::Compress::Gzip 2.084 ;
+use IO::Uncompress::Gunzip 2.084 ;
 
 use strict ;
 use warnings ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -461,7 +461,7 @@ sub inflate
 
 package Compress::Zlib ;
 
-use IO::Compress::Gzip::Constants 2.081 ;
+use IO::Compress::Gzip::Constants 2.084 ;
 
 sub memGzip($)
 {
@@ -1161,7 +1161,7 @@ The default is Z_DEFAULT_STRATEGY.
 When a dictionary is specified I<Compress::Zlib> will automatically
 call C<deflateSetDictionary> directly after calling C<deflateInit>. The
 Adler32 value for the dictionary can be obtained by calling the method
-C<$d->dict_adler()>.
+C<< $d->dict_adler() >>.
 
 The default is no dictionary.
 
@@ -1469,7 +1469,7 @@ of I<Compress::Zlib>.
 
 =head1 SEE ALSO
 
-L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1500,7 +1500,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 1995-2018 Paul Marquess. All rights reserved.
+Copyright (c) 1995-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 7b30c60..623a2c6 100644 (file)
@@ -4,12 +4,12 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 qw(:Status);
+use IO::Compress::Base::Common  2.084 qw(:Status);
 
-use Compress::Raw::Bzip2  2.081 ;
+use Compress::Raw::Bzip2  2.084 ;
 
 our ($VERSION);
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 sub mkCompObject
 {
index 463c0e1..8903287 100644 (file)
@@ -4,13 +4,13 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.081 qw(:Status);
-use Compress::Raw::Zlib  2.081 qw( !crc32 !adler32 ) ;
+use IO::Compress::Base::Common 2.084 qw(:Status);
+use Compress::Raw::Zlib  2.084 qw( !crc32 !adler32 ) ;
                                   
 require Exporter;                                     
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 @ISA = qw(Exporter);
 @EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS;
 %EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS;
index 92bc093..ae23102 100644 (file)
@@ -4,10 +4,10 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 qw(:Status);
+use IO::Compress::Base::Common  2.084 qw(:Status);
 our ($VERSION);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 sub mkCompObject
 {
index 2f00996..1e2a54b 100644 (file)
@@ -6,7 +6,7 @@ require 5.006 ;
 use strict ;
 use warnings;
 
-use IO::Compress::Base::Common 2.081 ;
+use IO::Compress::Base::Common 2.084 ;
 
 use IO::File (); ;
 use Scalar::Util ();
@@ -20,7 +20,7 @@ use Symbol();
 our (@ISA, $VERSION);
 @ISA    = qw(IO::File Exporter);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16.
 
@@ -496,7 +496,7 @@ sub _wr2
             $fh = new IO::File "<$input"
                 or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ;
         }
-        binmode $fh if *$self->{Got}->valueOrDefault('binmodein') ;
+        binmode $fh ;
 
         my $status ;
         my $buff ;
@@ -797,6 +797,7 @@ sub _writeTrailer
     my $trailer = '';
 
     my $status = *$self->{Compress}->close($trailer) ;
+
     return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo})
         if $status == STATUS_ERROR;
 
@@ -805,7 +806,6 @@ sub _writeTrailer
     $trailer .= $self->mkTrailer();
     defined $trailer
       or return 0;
-
     return $self->output($trailer);
 }
 
@@ -1023,7 +1023,7 @@ purpose is to be sub-classed by IO::Compress modules.
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1041,7 +1041,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index bd260d5..5323289 100644 (file)
@@ -11,7 +11,7 @@ use File::GlobMapper;
 require Exporter;
 our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
 @ISA = qw(Exporter);
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 @EXPORT = qw( isaFilehandle isaFilename isaScalar
               whatIsInput whatIsOutput
@@ -977,6 +977,14 @@ sub equal
            $self->[HIGH] == $other->[HIGH] ;
 }
 
+sub isZero
+{
+    my $self = shift;
+
+    return $self->[LOW]  == 0 &&
+           $self->[HIGH] == 0 ;
+}
+
 sub gt
 {
     my $self = shift;
index 94a03f6..1c0d027 100644 (file)
@@ -5,16 +5,16 @@ use warnings;
 use bytes;
 require Exporter ;
 
-use IO::Compress::Base 2.081 ;
+use IO::Compress::Base 2.084 ;
 
-use IO::Compress::Base::Common  2.081 qw();
-use IO::Compress::Adapter::Bzip2 2.081 ;
+use IO::Compress::Base::Common  2.084 qw();
+use IO::Compress::Adapter::Bzip2 2.084 ;
 
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $Bzip2Error = '';
 
 @ISA    = qw(IO::Compress::Base Exporter);
@@ -51,7 +51,7 @@ sub getExtraParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common  2.081 qw(:Parse);
+    use IO::Compress::Base::Common  2.084 qw(:Parse);
     
     return (  
             'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned,  1],
@@ -338,9 +338,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeIn => 0|1 >>
 
-When reading from a file or filehandle, set C<binmode> before reading.
-
-Defaults to 0.
+This option is now a no-op. All files will be read in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -772,7 +770,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -794,7 +792,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 5e5c37c..1ca86c9 100644 (file)
@@ -8,16 +8,16 @@ use bytes;
 
 require Exporter ;
 
-use IO::Compress::RawDeflate 2.081 ();
-use IO::Compress::Adapter::Deflate 2.081 ;
+use IO::Compress::RawDeflate 2.084 ();
+use IO::Compress::Adapter::Deflate 2.084 ;
 
-use IO::Compress::Zlib::Constants 2.081 ;
-use IO::Compress::Base::Common  2.081 qw();
+use IO::Compress::Zlib::Constants 2.084 ;
+use IO::Compress::Base::Common  2.084 qw();
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $DeflateError = '';
 
 @ISA    = qw(IO::Compress::RawDeflate Exporter);
@@ -367,9 +367,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeIn => 0|1 >>
 
-When reading from a file or filehandle, set C<binmode> before reading.
-
-Defaults to 0.
+This option is now a no-op. All files will be read in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -896,7 +894,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -927,7 +925,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index cfd6ca3..1e66507 100644 (file)
@@ -658,7 +658,7 @@ file.
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -676,7 +676,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 5381687..5302011 100644 (file)
@@ -8,12 +8,12 @@ use bytes;
 
 require Exporter ;
 
-use IO::Compress::RawDeflate 2.081 () ; 
-use IO::Compress::Adapter::Deflate 2.081 ;
+use IO::Compress::RawDeflate 2.084 () ; 
+use IO::Compress::Adapter::Deflate 2.084 ;
 
-use IO::Compress::Base::Common  2.081 qw(:Status );
-use IO::Compress::Gzip::Constants 2.081 ;
-use IO::Compress::Zlib::Extra 2.081 ;
+use IO::Compress::Base::Common  2.084 qw(:Status );
+use IO::Compress::Gzip::Constants 2.084 ;
+use IO::Compress::Zlib::Extra 2.084 ;
 
 BEGIN
 {
@@ -25,7 +25,7 @@ BEGIN
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $GzipError = '' ;
 
 @ISA    = qw(IO::Compress::RawDeflate Exporter);
@@ -485,9 +485,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeIn => 0|1 >>
 
-When reading from a file or filehandle, set C<binmode> before reading.
-
-Defaults to 0.
+This option is now a no-op. All files will be read in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -1208,7 +1206,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1239,7 +1237,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 733b1f7..d1bd0c2 100644 (file)
@@ -9,7 +9,7 @@ require Exporter;
 our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names);
 our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 @ISA = qw(Exporter);
 
index 8bbafc0..b2f38ff 100644 (file)
@@ -6,15 +6,15 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base 2.081 ;
-use IO::Compress::Base::Common  2.081 qw(:Status );
-use IO::Compress::Adapter::Deflate 2.081 ;
+use IO::Compress::Base 2.084 ;
+use IO::Compress::Base::Common  2.084 qw(:Status );
+use IO::Compress::Adapter::Deflate 2.084 ;
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $RawDeflateError = '';
 
 @ISA = qw(IO::Compress::Base Exporter);
@@ -116,8 +116,8 @@ sub getExtraParams
     return getZlibParams();
 }
 
-use IO::Compress::Base::Common  2.081 qw(:Parse);
-use Compress::Raw::Zlib  2.081 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+use IO::Compress::Base::Common  2.084 qw(:Parse);
+use Compress::Raw::Zlib  2.084 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
 our %PARAMS = (
             #'method'   => [IO::Compress::Base::Common::Parse_unsigned,  Z_DEFLATED],
             'level'     => [IO::Compress::Base::Common::Parse_signed,    Z_DEFAULT_COMPRESSION],
@@ -423,9 +423,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeIn => 0|1 >>
 
-When reading from a file or filehandle, set C<binmode> before reading.
-
-Defaults to 0.
+This option is now a no-op. All files will be read in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -952,7 +950,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -983,7 +981,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 16ba689..eabeef6 100644 (file)
@@ -4,30 +4,30 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 qw(:Status );
-use IO::Compress::RawDeflate 2.081 ();
-use IO::Compress::Adapter::Deflate 2.081 ;
-use IO::Compress::Adapter::Identity 2.081 ;
-use IO::Compress::Zlib::Extra 2.081 ;
-use IO::Compress::Zip::Constants 2.081 ;
+use IO::Compress::Base::Common  2.084 qw(:Status );
+use IO::Compress::RawDeflate 2.084 ();
+use IO::Compress::Adapter::Deflate 2.084 ;
+use IO::Compress::Adapter::Identity 2.084 ;
+use IO::Compress::Zlib::Extra 2.084 ;
+use IO::Compress::Zip::Constants 2.084 ;
 
 use File::Spec();
 use Config;
 
-use Compress::Raw::Zlib  2.081 (); 
+use Compress::Raw::Zlib  2.084 (); 
 
 BEGIN
 {
     eval { require IO::Compress::Adapter::Bzip2 ; 
-           import  IO::Compress::Adapter::Bzip2 2.081 ; 
+           import  IO::Compress::Adapter::Bzip2 2.084 ; 
            require IO::Compress::Bzip2 ; 
-           import  IO::Compress::Bzip2 2.081 ; 
+           import  IO::Compress::Bzip2 2.084 ; 
          } ;
          
     eval { require IO::Compress::Adapter::Lzma ; 
-           import  IO::Compress::Adapter::Lzma 2.081 ; 
+           import  IO::Compress::Adapter::Lzma 2.084 ; 
            require IO::Compress::Lzma ; 
-           import  IO::Compress::Lzma 2.081 ; 
+           import  IO::Compress::Lzma 2.084 ; 
          } ;
 }
 
@@ -36,7 +36,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $ZipError = '';
 
 @ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -914,7 +914,7 @@ compressed data to files or buffer.
 
 The primary purpose of this module is to provide streaming write access to
 zip files and buffers. It is not a general-purpose file archiver. If that
-is what you want, check out C<Archive::Zip>.
+is what you want, check out C<Archive::Zip> or C<Archive::Zip::SimpleZip>.
 
 At present three compression methods are supported by IO::Compress::Zip,
 namely Store (no compression at all), Deflate, Bzip2 and LZMA.
@@ -1081,9 +1081,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeIn => 0|1 >>
 
-When reading from a file or filehandle, set C<binmode> before reading.
-
-Defaults to 0.
+This option is now a no-op. All files will be read in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -1922,7 +1920,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1953,7 +1951,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 5cb7fc2..d28a6ae 100644 (file)
@@ -7,7 +7,7 @@ require Exporter;
 
 our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 @ISA = qw(Exporter);
 
index eb2aec5..d0d053b 100644 (file)
@@ -9,7 +9,7 @@ require Exporter;
 
 our ($VERSION, @ISA, @EXPORT);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 @ISA = qw(Exporter);
 
index 6b60c49..a88adba 100644 (file)
@@ -8,9 +8,9 @@ use bytes;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
-use IO::Compress::Gzip::Constants 2.081 ;
+use IO::Compress::Gzip::Constants 2.084 ;
 
 sub ExtraFieldError
 {
index f0f24f1..1aa9a8c 100644 (file)
@@ -4,12 +4,12 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.081 qw(:Status);
+use IO::Compress::Base::Common 2.084 qw(:Status);
 
-use Compress::Raw::Bzip2 2.081 ;
+use Compress::Raw::Bzip2 2.084 ;
 
 our ($VERSION, @ISA);
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 sub mkUncompObject
 {
index a122320..5601599 100644 (file)
@@ -4,14 +4,14 @@ use warnings;
 use strict;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 qw(:Status);
+use IO::Compress::Base::Common  2.084 qw(:Status);
 use IO::Compress::Zip::Constants ;
 
 our ($VERSION);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
-use Compress::Raw::Zlib  2.081 ();
+use Compress::Raw::Zlib  2.084 ();
 
 sub mkUncompObject
 {
index d5544fa..f51c64d 100644 (file)
@@ -4,11 +4,11 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 qw(:Status);
-use Compress::Raw::Zlib  2.081 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
+use IO::Compress::Base::Common  2.084 qw(:Status);
+use Compress::Raw::Zlib  2.084 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
 
 our ($VERSION);
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 
 
@@ -62,7 +62,6 @@ sub uncompr
 
     my $status = $inf->inflate($from, $to, $eof);
     $self->{ErrorNo} = $status;
-
     if ($status != Z_OK && $status != Z_STREAM_END && $status != Z_BUF_ERROR)
     {
         $self->{Error} = "Inflation Error: $status";
index 563f2f6..be46488 100644 (file)
@@ -6,22 +6,22 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 ();
+use IO::Compress::Base::Common  2.084 ();
 
-use IO::Uncompress::Adapter::Inflate  2.081 ();
+use IO::Uncompress::Adapter::Inflate  2.084 ();
 
 
-use IO::Uncompress::Base  2.081 ;
-use IO::Uncompress::Gunzip  2.081 ;
-use IO::Uncompress::Inflate  2.081 ;
-use IO::Uncompress::RawInflate  2.081 ;
-use IO::Uncompress::Unzip  2.081 ;
+use IO::Uncompress::Base  2.084 ;
+use IO::Uncompress::Gunzip  2.084 ;
+use IO::Uncompress::Inflate  2.084 ;
+use IO::Uncompress::RawInflate  2.084 ;
+use IO::Uncompress::Unzip  2.084 ;
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $AnyInflateError = '';
 
 @ISA = qw(IO::Uncompress::Base Exporter);
@@ -48,7 +48,7 @@ sub anyinflate
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.081 qw(:Parse);
+    use IO::Compress::Base::Common  2.084 qw(:Parse);
     return ( 'rawinflate' => [Parse_boolean,  0] ) ;
 }
 
@@ -342,10 +342,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -964,7 +961,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -995,7 +992,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index c2d7687..c6dfce5 100644 (file)
@@ -4,16 +4,16 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.081 ();
+use IO::Compress::Base::Common 2.084 ();
 
-use IO::Uncompress::Base 2.081 ;
+use IO::Uncompress::Base 2.084 ;
 
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $AnyUncompressError = '';
 
 @ISA = qw(IO::Uncompress::Base Exporter);
@@ -29,22 +29,27 @@ BEGIN
 {
    local @INC = @INC;
    pop @INC if $INC[-1] eq '.';
-   eval ' use IO::Uncompress::Adapter::Inflate 2.081 ;';
-   eval ' use IO::Uncompress::Adapter::Bunzip2 2.081 ;';
-   eval ' use IO::Uncompress::Adapter::LZO 2.081 ;';
-   eval ' use IO::Uncompress::Adapter::Lzf 2.081 ;';
-   eval ' use IO::Uncompress::Adapter::UnLzma 2.081 ;';
-   eval ' use IO::Uncompress::Adapter::UnXz 2.081 ;';
-
-   eval ' use IO::Uncompress::Bunzip2 2.081 ;';
-   eval ' use IO::Uncompress::UnLzop 2.081 ;';
-   eval ' use IO::Uncompress::Gunzip 2.081 ;';
-   eval ' use IO::Uncompress::Inflate 2.081 ;';
-   eval ' use IO::Uncompress::RawInflate 2.081 ;';
-   eval ' use IO::Uncompress::Unzip 2.081 ;';
-   eval ' use IO::Uncompress::UnLzf 2.081 ;';
-   eval ' use IO::Uncompress::UnLzma 2.081 ;';
-   eval ' use IO::Uncompress::UnXz 2.081 ;';
+   eval ' use IO::Uncompress::Adapter::Inflate 2.084 ;';
+   eval ' use IO::Uncompress::Adapter::Bunzip2 2.084 ;';
+   eval ' use IO::Uncompress::Adapter::LZO 2.084 ;';
+   eval ' use IO::Uncompress::Adapter::Lzf 2.084 ;';
+   eval ' use IO::Uncompress::Adapter::UnLzma 2.084 ;';
+   eval ' use IO::Uncompress::Adapter::UnXz 2.084 ;';
+   eval ' use IO::Uncompress::Adapter::UnZstd 2.083 ;';
+   eval ' use IO::Uncompress::Adapter::UnLzip 2.084 ;';
+
+   eval ' use IO::Uncompress::Bunzip2 2.084 ;';
+   eval ' use IO::Uncompress::UnLzop 2.084 ;';
+   eval ' use IO::Uncompress::Gunzip 2.084 ;';
+   eval ' use IO::Uncompress::Inflate 2.084 ;';
+   eval ' use IO::Uncompress::RawInflate 2.084 ;';
+   eval ' use IO::Uncompress::Unzip 2.084 ;';
+   eval ' use IO::Uncompress::UnLzf 2.084 ;';
+   eval ' use IO::Uncompress::UnLzma 2.084 ;';
+   eval ' use IO::Uncompress::UnXz 2.084 ;';
+   eval ' use IO::Uncompress::UnZstd 2.084 ;';
+   eval ' use IO::Uncompress::UnLzip 2.084 ;';
+
 }
 
 sub new
@@ -191,6 +196,39 @@ sub mkUncomp
          return 1;
      }
 
+     if (defined $IO::Uncompress::UnZstd::VERSION and
+            $magic = $self->ckMagic('UnZstd')) {
+
+        *$self->{Info} = $self->readHeader($magic)
+            or return undef ;
+
+        my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Zstd::mkUncompObject();
+
+        return $self->saveErrorString(undef, $errstr, $errno)
+            if ! defined $obj;
+
+        *$self->{Uncomp} = $obj;
+
+         return 1;
+     }
+
+
+     if (defined $IO::Uncompress::UnLzip::VERSION and
+            $magic = $self->ckMagic('UnLzip')) {
+
+        *$self->{Info} = $self->readHeader($magic)
+            or return undef ;
+
+        my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::UnLzip::mkUncompObject(*$self->{Info}{DictSize});
+
+        return $self->saveErrorString(undef, $errstr, $errno)
+            if ! defined $obj;
+
+        *$self->{Uncomp} = $obj;
+
+         return 1;
+     }
+
      return 0 ;
 }
 
@@ -299,6 +337,8 @@ The formats supported are:
 
 =item lzma
 
+=item lzip
+
 =item xz
 
 =back
@@ -452,10 +492,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -1009,7 +1046,7 @@ Same as doing this
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1027,7 +1064,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index ff9b1ae..06fb04a 100644 (file)
@@ -9,12 +9,12 @@ our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
 @ISA    = qw(IO::File Exporter);
 
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 use constant G_EOF => 0 ;
 use constant G_ERR => -1 ;
 
-use IO::Compress::Base::Common 2.081 ;
+use IO::Compress::Base::Common 2.084 ;
 
 use IO::File ;
 use Symbol;
@@ -695,13 +695,13 @@ sub _singleTarget
             if $x->{Got}->getValue('append') ;
         $x->{fh} = new IO::File "$mode $output" 
             or return retErr($x, "cannot open file '$output': $!") ;
-        binmode $x->{fh} if $x->{Got}->valueOrDefault('binmodeout');
+        binmode $x->{fh} ;
 
     }
 
     elsif ($x->{outType} eq 'handle') {
         $x->{fh} = $output;
-        binmode $x->{fh} if $x->{Got}->valueOrDefault('binmodeout');
+        binmode $x->{fh} ;
         if ($x->{Got}->getValue('append')) {
                 seek($x->{fh}, 0, SEEK_END)
                     or return retErr($x, "Cannot seek to end of output filehandle: $!") ;
@@ -1077,13 +1077,6 @@ sub streamCount
     return scalar @{ *$self->{InfoList} }  ;
 }
 
-#sub read
-#{
-#    my $status = myRead(@_);
-#    return undef if $status < 0;
-#    return $status;
-#}
-
 sub read
 {
     # return codes
@@ -1536,7 +1529,7 @@ purpose is to be sub-classed by IO::Uncompress modules.
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1554,7 +1547,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index ec17c63..7a84bcd 100644 (file)
@@ -4,15 +4,15 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.081 qw(:Status );
+use IO::Compress::Base::Common 2.084 qw(:Status );
 
-use IO::Uncompress::Base 2.081 ;
-use IO::Uncompress::Adapter::Bunzip2 2.081 ;
+use IO::Uncompress::Base 2.084 ;
+use IO::Uncompress::Adapter::Bunzip2 2.084 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $Bunzip2Error = '';
 
 @ISA    = qw(IO::Uncompress::Base Exporter);
@@ -338,10 +338,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -881,7 +878,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -903,7 +900,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 55d4c0a..46dd108 100644 (file)
@@ -9,12 +9,12 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Uncompress::RawInflate 2.081 ;
+use IO::Uncompress::RawInflate 2.084 ;
 
-use Compress::Raw::Zlib 2.081 () ;
-use IO::Compress::Base::Common 2.081 qw(:Status );
-use IO::Compress::Gzip::Constants 2.081 ;
-use IO::Compress::Zlib::Extra 2.081 ;
+use Compress::Raw::Zlib 2.084 () ;
+use IO::Compress::Base::Common 2.084 qw(:Status );
+use IO::Compress::Gzip::Constants 2.084 ;
+use IO::Compress::Zlib::Extra 2.084 ;
 
 require Exporter ;
 
@@ -28,7 +28,7 @@ Exporter::export_ok_tags('all');
 
 $GunzipError = '';
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 
 sub new
 {
@@ -477,10 +477,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -1087,7 +1084,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1118,7 +1115,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 9dcd797..4d89db5 100644 (file)
@@ -5,15 +5,15 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.081 qw(:Status );
-use IO::Compress::Zlib::Constants 2.081 ;
+use IO::Compress::Base::Common  2.084 qw(:Status );
+use IO::Compress::Zlib::Constants 2.084 ;
 
-use IO::Uncompress::RawInflate  2.081 ;
+use IO::Uncompress::RawInflate  2.084 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $InflateError = '';
 
 @ISA    = qw(IO::Uncompress::RawInflate Exporter);
@@ -399,10 +399,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -959,7 +956,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -990,7 +987,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 5cf10b0..63703cd 100644 (file)
@@ -5,16 +5,16 @@ use strict ;
 use warnings;
 use bytes;
 
-use Compress::Raw::Zlib  2.081 ;
-use IO::Compress::Base::Common  2.081 qw(:Status );
+use Compress::Raw::Zlib  2.084 ;
+use IO::Compress::Base::Common  2.084 qw(:Status );
 
-use IO::Uncompress::Base  2.081 ;
-use IO::Uncompress::Adapter::Inflate  2.081 ;
+use IO::Uncompress::Base  2.084 ;
+use IO::Uncompress::Adapter::Inflate  2.084 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $RawInflateError = '';
 
 @ISA    = qw(IO::Uncompress::Base Exporter);
@@ -547,10 +547,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -1087,7 +1084,7 @@ See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1118,7 +1115,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 9b8399e..4e8a0d6 100644 (file)
@@ -9,14 +9,14 @@ use warnings;
 use bytes;
 
 use IO::File;
-use IO::Uncompress::RawInflate  2.081 ;
-use IO::Compress::Base::Common  2.081 qw(:Status );
-use IO::Uncompress::Adapter::Inflate  2.081 ;
-use IO::Uncompress::Adapter::Identity 2.081 ;
-use IO::Compress::Zlib::Extra 2.081 ;
-use IO::Compress::Zip::Constants 2.081 ;
+use IO::Uncompress::RawInflate  2.084 ;
+use IO::Compress::Base::Common  2.084 qw(:Status );
+use IO::Uncompress::Adapter::Inflate  2.084 ;
+use IO::Uncompress::Adapter::Identity 2.084 ;
+use IO::Compress::Zlib::Extra 2.084 ;
+use IO::Compress::Zip::Constants 2.084 ;
 
-use Compress::Raw::Zlib  2.081 () ;
+use Compress::Raw::Zlib  2.084 () ;
 
 BEGIN
 {
@@ -31,7 +31,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
 
-$VERSION = '2.081';
+$VERSION = '2.084';
 $UnzipError = '';
 
 @ISA    = qw(IO::Uncompress::RawInflate Exporter);
@@ -171,25 +171,27 @@ sub readHeader
         # TODO - when Stream is off, use seek
         my $buffer;
         if (*$self->{ZipData}{Streaming}) {
-
             while (1) {
 
                 my $b;
                 my $status = $self->smartRead(\$b, 1024 * 16);
-                return undef
+
+                return $self->saveErrorString(undef, "Truncated file")
                     if $status <= 0 ;
 
-                my $temp_buf;
+                my $temp_buf ;
                 my $out;
+
                 $status = *$self->{Uncomp}->uncompr(\$b, \$temp_buf, 0, $out);
 
                 return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, 
                                                      *$self->{Uncomp}{ErrorNo})
                     if $self->saveStatus($status) == STATUS_ERROR;                
 
+                $self->pushBack($b)  ;
+
                 if ($status == STATUS_ENDSTREAM) {
                     *$self->{Uncomp}->reset();
-                    $self->pushBack($b)  ;
                     last;
                 }
             }
@@ -461,6 +463,7 @@ sub skipEndCentralDirectory
     my $self = shift;
     my $magic = shift ;
 
+
     my $buffer;
     $self->smartReadExact(\$buffer, 22 - 4)
         or return $self->TrailerError("Minimum header size is " . 
@@ -1233,10 +1236,7 @@ This parameter defaults to 0.
 
 =item C<< BinModeOut => 0|1 >>
 
-When writing to a file or filehandle, set C<binmode> before writing to the
-file.
-
-Defaults to 0.
+This option is now a no-op. All files will be written  in binmode.
 
 =item C<< Append => 0|1 >>
 
@@ -1830,7 +1830,7 @@ The script is available from L<https://gist.github.com/eqhmcow/5389877>
 
 =head1 SEE ALSO
 
-L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzip>, L<IO::Uncompress::UnLzip>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Compress::Zstd>, L<IO::Uncompress::UnZstd>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
 
 L<IO::Compress::FAQ|IO::Compress::FAQ>
 
@@ -1861,7 +1861,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2018 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 7167fed..c339546 100644 (file)
@@ -25,7 +25,7 @@ BEGIN
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
 
-    my $VERSION = '2.081';
+    my $VERSION = '2.084';
     my @NAMES = qw(
                        Compress::Raw::Bzip2
                        Compress::Raw::Zlib
index 399fdb7..27a9013 100644 (file)
@@ -854,8 +854,8 @@ EOM
             $status = $gunz->read($uncomp) while $status > 0;
             if ($strict)
             {
-                cmp_ok $status, '<', 0 ;
-                like $GunzipError, "/Trailer Error: trailer truncated. Expected 8 bytes, got $got/";
+                cmp_ok $status, '<', 0, "status 0" ;
+                like $GunzipError, "/Trailer Error: trailer truncated. Expected 8 bytes, got $got/", "got Trailer Error";
             }
             else
             {
index 94d9be2..d533f23 100644 (file)
@@ -21,7 +21,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 4012 + $extra;
+    plan tests => 3308 + $extra;
 
 };
 
index abff664..49f9ae4 100644 (file)
@@ -21,7 +21,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 3056 + $extra;
+    plan tests => 2552 + $extra;
 
 };
 
index 6a787c9..16b2d07 100644 (file)
@@ -22,7 +22,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 3544 + $extra;
+    plan tests => 3040 + $extra;
 
 };
 
index 89603d3..80a0aee 100644 (file)
@@ -22,7 +22,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 9156 + $extra;
+    plan tests => 7732 + $extra;
 
 };
 
index 4fea3d1..94676eb 100644 (file)
@@ -1,7 +1,7 @@
 BEGIN {
     if ($ENV{PERL_CORE}) {
-       chdir 't' if -d 't';
-       @INC = ("../lib", "lib/compress");
+        chdir 't' if -d 't';
+        @INC = ("../lib", "lib/compress");
     }
 }
 
@@ -24,7 +24,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 216 + $extra ;
+    plan tests => 219 + $extra ;
 
     #use_ok('IO::Compress::Zip', qw(zip $ZipError :zip_method)) ;
     use_ok('IO::Compress::Zip', qw(:all)) ;
@@ -246,5 +246,30 @@ for my $stream (0, 1)
     }
 }
 
+{
+    title "Regression: ods streaming issue";
+
+    # The file before meta.xml in test.ods is content.xml. 
+    # Issue was triggered because content.xml was stored 
+    # as streamed and the code to walk the compressed streaming
+    # content assumed that all of the input buffer was consumed
+    # in a single call to "uncompr".
+
+    my $files = "./t/" ;
+    $files = "./" if $ENV{PERL_CORE} ;
+    $files .= "files/";
+
+    my $zipfile = "$files/test.ods" ;
+    my $file = "meta.xml";
+
+    my $got;
+
+    ok unzip($zipfile => \$got, Name => $file), "  unzip $file ok"
+        or diag $UnzipError ;
+
+    my $meta = readFile("$files/$file");
+    is $got, $meta, "  content ok";    
+}
+
 # TODO add more error cases
 
index da238e1..c506632 100644 (file)
@@ -395,6 +395,17 @@ my %TOP = (
                                 Raw      => 0,
                               },
 
+    'IO::Compress::Lzip' => { Inverse  => 'IO::Uncompress::UnLzip',
+                            Error    => 'LzipError',
+                            TopLevel => 'lzip',
+                            Raw      => 0,
+                          },
+    'IO::Uncompress::UnLzip' => { Inverse  => 'IO::Compress::Lzip',
+                                Error    => 'UnLzipError',
+                                TopLevel => 'unlzip',
+                                Raw      => 0,
+                              },
+
     'IO::Compress::PPMd' => { Inverse  => 'IO::Uncompress::UnPPMd',
                               Error    => 'PPMdError',
                               TopLevel => 'ppmd',
@@ -405,6 +416,16 @@ my %TOP = (
                                   TopLevel => 'unppmd',
                                   Raw      => 0,
                                 },
+    'IO::Compress::Zstd' => { Inverse  => 'IO::Uncompress::UnZstd',
+                              Error    => 'ZstdError',
+                              TopLevel => 'zstd',
+                              Raw      => 0,
+                            },
+    'IO::Uncompress::UnZstd' => { Inverse  => 'IO::Compress::Zstd',
+                                  Error    => 'UnZstdError',
+                                  TopLevel => 'unzstd',
+                                  Raw      => 0,
+                                },
 
     'IO::Compress::DummyComp' => { Inverse  => 'IO::Uncompress::DummyUnComp',
                                    Error    => 'DummyCompError',
@@ -494,7 +515,7 @@ sub compressBuffer
 our ($AnyUncompressError);
 BEGIN
 {
-    eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); ';
+    eval ' use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError); ';
 }
 
 sub anyUncompress
@@ -555,7 +576,6 @@ sub anyUncompress
         if $o->error() ;
 
     return $out ;
-
 }
 
 sub getHeaders
@@ -718,7 +738,7 @@ sub getMultiValues
 {
     my $class = shift ;
 
-    return (0,0) if $class =~ /lzf|lzma/i;
+    return (0,0) if $class =~ /lzf|lzma|zstd/i;
     return (1,0);
 }
 
index f6e630c..d9695e8 100644 (file)
@@ -18,7 +18,7 @@ BEGIN
     $extra = 1
         if $st ;
 
-    plan(tests => 794 + $extra) ;
+    plan(tests => 799 + $extra) ;
 }
 
 sub myGZreadFile
@@ -43,7 +43,7 @@ sub myGZreadFile
 sub run
 {
     my $CompressClass   = identify();
-    $UncompressClass = getInverse($CompressClass);
+    $UncompressClass    = getInverse($CompressClass);
     my $Error           = getErrorRef($CompressClass);
     my $UnError         = getErrorRef($UncompressClass);
 
@@ -484,10 +484,13 @@ EOM
             #print "length " . length($x) . " \n";
         }
 
+        SKIP:
         {
             # embed a compressed file in another file
             #================================
 
+            skip "zstd doesn't support trailing data", 11
+                if $CompressClass =~ /zstd/i ;
 
             my $lex = new LexFile my $name ;
 
@@ -525,7 +528,7 @@ EOM
             ok $x->binmode();
             1 while $x->read($uncomp) > 0 ;
 
-            ok $uncomp eq $hello ;
+            is $uncomp, $hello ;
             my $rest ;
             read($fh1, $rest, 5000);
             is $x->trailingData() . $rest, $trailer ;
@@ -533,10 +536,13 @@ EOM
 
         }
 
+        SKIP:
         {
             # embed a compressed file in another buffer
             #================================
 
+            skip "zstd doesn't support trailing data", 6
+                if $CompressClass =~ /zstd/i ;
 
             my $hello = <<EOM ;
 hello world
@@ -1142,7 +1148,8 @@ EOT
             my $b ;
             my $a = new $CompressClass(\$b)  ;
 
-            ok ! $a->error() ;
+            ok ! $a->error() 
+                or die $a->error() ;
             eval { $a->seek(-1, 10) ; };
             like $@, mkErr("^${CompressClass}::seek: unknown value, 10, for whence parameter");
 
@@ -1598,7 +1605,7 @@ EOT
                 $c->close();
 
                 my $comp_len = length $compressed;
-                $compressed .= $appended if $append ;
+                $compressed .= $appended if $append && $CompressClass !~ /zstd/i;
 
                 my $lex = new LexFile my $name ;
                 my $input ;
@@ -1638,7 +1645,7 @@ EOT
                 }
 
                 {
-                    # Check that read return an empty string
+                    # Check that read returns an empty string
                     if ($type eq 'filehandle')
                     {
                         my $fh = new IO::File "<$name" ;
@@ -1651,7 +1658,8 @@ EOT
                     isa_ok $x, $UncompressClass;
 
                     my $buffer;
-                    is $x->read($buffer), 0, "read 0 bytes";
+                    is $x->read($buffer), 0, "read 0 bytes"
+                        or diag "read returned $$UnError";
                     ok defined $buffer, "buffer is defined";
                     is $buffer, "", "buffer is empty string";
 
@@ -1703,6 +1711,37 @@ EOT
             }
         }
     }
+
+    {
+        # Round trip binary data that happens to contain \r\n
+        # via the filesystem
+
+        my $original = join '', map { chr } 0x00 .. 0xff ;
+        $original .= "data1\r\ndata2\r\ndata3\r\n" ;
+        
+   
+        title "$UncompressClass -- round trip test";
+
+        my $string = $original;
+
+        my $lex = new LexFile( my $name, my $compressed) ;
+        my $input ;
+        writeFile ($name, $original);
+
+        my $c = new $CompressClass($compressed);
+        isa_ok $c, $CompressClass;
+        $c->print($string);
+        $c->close();
+
+        my $u = new $UncompressClass $compressed, Transparent => 0
+            or diag "$$UnError" ;
+        isa_ok $u, $UncompressClass;
+        my $buffer;
+        is $u->read($buffer), length($original), "read bytes";
+        is $buffer, $original, "  round tripped ok";
+
+        
+    }    
 }
 
 1;
index c6501f8..4d587fb 100644 (file)
@@ -101,8 +101,6 @@ EOM
                 }
                 ok $x->close, "  Close ok" ;
 
-                #hexDump($compressed) ;
-
                 foreach my $unc ($UncompressClass, 'IO::Uncompress::AnyUncompress') {
                     title "  Testing $CompressClass with $unc and $i streams, from $fb";
                     $cc = $output ;
index 43d9c02..790d1b2 100644 (file)
@@ -16,12 +16,24 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 1002 + $extra ;
+    plan tests => 1007 + $extra ;
 
     use_ok('IO::Uncompress::AnyUncompress', qw(anyuncompress $AnyUncompressError)) ;
 
 }
 
+my $OriginalContent1 = <<EOM ;
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut tempus odio id
+ dolor. Camelus perlus.  Larrius in lumen numen.  Dolor en quiquum filia
+ est.  Quintus cenum parat.
+EOM
+
+my $OriginalContent2 = <<EOM ;
+LOREM ipsum dolor sit amet, consectetuer adipiscing elit. Ut tempus odio id
+ dolor. Camelus perlus.  Larrius in lumen numen.  Dolor en quiquum filia
+ est.  Quintus cenum PARAT.
+EOM
+
 sub run
 {
 
@@ -286,9 +298,8 @@ sub run
             my $already = '';
             $already = 'abcde' if $append ;
 
-            for my $buffer ( undef, '', "abcde" )
+            for my $buffer ( undef, '', $OriginalContent1 )
             {
-
                 my $disp_content = defined $buffer ? $buffer : '<undef>' ;
 
                 my $keep = $buffer;
@@ -306,7 +317,6 @@ sub run
                     $got = undef if ! defined $buffer && $got eq '' ;
                     ok ! $$Error, "  no error [$$Error]" ;
                     is $got, $buffer, "  Uncompressed matches original";
-
                 }
 
                 {
@@ -520,22 +530,22 @@ sub run
 
         my $lex = new LexFile(my $file1, my $file2) ;
 
-        writeFile($file1, "data1");
-        writeFile($file2, "data2");
+        writeFile($file1, $OriginalContent1);
+        writeFile($file2, $OriginalContent2);
         my $of = new IO::File "<$file1" ;
         ok $of, "  Created output filehandle" ;
 
         #my @input = (   undef, "", $file2, \undef, \'', \"abcde", $of) ;
-        #my @expected = ("", "", $file2, "", "", "abcde", "data1");
-        #my @uexpected = ("", "", "data2", "", "", "abcde", "data1");
+        #my @expected = ("", "", $file2, "", "", "abcde", $OriginalContent1);
+        #my @uexpected = ("", "", $OriginalContent2, "", "", "abcde", $OriginalContent1);
         #my @input = (   $file2, \"abcde", $of) ;
-        #my @expected = ( $file2, "abcde", "data1");
-        #my @uexpected = ("data2", "abcde", "data1");
+        #my @expected = ( $file2, "abcde", $OriginalContent1);
+        #my @uexpected = ($OriginalContent2, "abcde", $OriginalContent1);
 
         my @input = (   $file1, $file2) ;
         #my @expected = ( $file1, $file2);
-        my @expected = ("data1", "data2");
-        my @uexpected = ("data1", "data2");
+        my @expected = ($OriginalContent1, $OriginalContent2);
+        my @uexpected = ($OriginalContent1, $OriginalContent2);
 
         my @keep = @input ;
 
@@ -618,7 +628,7 @@ sub run
             {
                 title "Truncated file";
                 skip '', 7
-                    if $CompressClass =~ /lzop|lzf|lzma/i ;
+                    if $CompressClass =~ /lzop|lzf|lzma|zstd|lzip/i ;
 
                 my @in ;
                 push @in, "abcde" x 10;
@@ -644,6 +654,33 @@ sub run
         }
     }
 
+    foreach my $bit ($CompressClass)
+    {
+
+        my $Error = getErrorRef($bit);
+        my $Func = getTopFuncRef($bit);
+        my $TopType = getTopFuncName($bit);
+
+        my $TopTypeInverse = getInverse($bit);
+        my $FuncInverse = getTopFuncRef($TopTypeInverse);
+        my $ErrorInverse = getErrorRef($TopTypeInverse);
+
+        title 'Round trip binary data that happens to include \r\n' ;
+
+        my $lex = new LexFile(my $file1, my $file2, my $file3) ;
+
+        my $original = join '', map { chr } 0x00 .. 0xff ;
+        $original .= "data1\r\ndata2\r\ndata3\r\n" ;
+
+        writeFile($file1, $original);
+        is readFile($file1), $original;
+
+        ok &$Func($file1 => $file2), '  Compressed ok' ;
+        ok &$FuncInverse($file2 => $file3), '  Uncompressed ok' ;
+        is readFile($file3), $original, "  round tripped ok";
+    }
+
     foreach my $bit ($UncompressClass,
                     #'IO::Uncompress::AnyUncompress',
                     )
@@ -660,10 +697,14 @@ sub run
         my $keep = $data ;
         my $extra = "after the main event";
 
+        SKIP:
         foreach my $fb ( qw( filehandle buffer ) )
         {
             title "Trailingdata with $TopType, from $fb";
 
+            skip "zstd doesn't support trailing data", 9
+                if $CompressClass =~ /zstd/i ;
+
             my $lex = new LexFile my $name ;
             my $input ;
 
@@ -1008,8 +1049,8 @@ sub run
         my $Func = getTopFuncRef($bit);
         my $TopType = getTopFuncName($bit);
 
-        my $buffer = "abcde" ;
-        my $buffer2 = "ABCDE" ;
+        my $buffer = $OriginalContent1;
+        my $buffer2 = $OriginalContent2; 
         my $keep_orig = $buffer;
 
         my $comp = compressBuffer($UncompressClass, $buffer) ;
@@ -1327,8 +1368,8 @@ sub run
 
         my $lex = new LexFile(my $file1, my $file2) ;
 
-        writeFile($file1, compressBuffer($UncompressClass,"data1"));
-        writeFile($file2, compressBuffer($UncompressClass,"data2"));
+        writeFile($file1, compressBuffer($UncompressClass, $OriginalContent1));
+        writeFile($file2, compressBuffer($UncompressClass, $OriginalContent2));
 
         my $of = new IO::File "<$file1" ;
         ok $of, "  Created output filehandle" ;
@@ -1336,7 +1377,7 @@ sub run
         #my @input    = ($file2, \$undef, \$null, \$comp, $of) ;
         #my @expected = ('data2', '',      '',    'abcde', 'data1');
         my @input    = ($file1, $file2);
-        my @expected = ('data1', 'data2');
+        my @expected = ($OriginalContent1, $OriginalContent2);
 
         my @keep = @input ;
 
@@ -1622,6 +1663,8 @@ sub run
         ok &$UncompFunc($fh_in2 => $fh_out2), '  UnCompressed ok' ;
         is $output, $input, "round trip ok" ;
     }
+
+  
 }
 
 # TODO add more error cases
index 0bf269a..24fe176 100644 (file)
@@ -114,7 +114,7 @@ sub run
                 #ok $gz->eof() ;
             }
 
-            # Test curruption directly after the header
+            # Test corruption directly after the header
             # In this case the uncompression object will have been created,
             # so need to check that subsequent reads from the object fail
             if ($header_size > 0)
@@ -227,13 +227,15 @@ sub run
                     }
                     ok $gz->error() ;
                     cmp_ok $gz->errorNo(), '<', 0 ;
-                    ok $gz->eof() ;
+                    # ok $gz->eof() 
+                    #     or die "EOF";
                     $gz->close();
                 }
             }
             
-            # RawDeflate does not have a trailer
+            # RawDeflate and Zstandard do not have a trailer
             next if $CompressClass eq 'IO::Compress::RawDeflate' ;
+            next if $CompressClass eq 'IO::Compress::Zstd' ;
 
             title "Compressed Trailer Truncation";
             foreach my $i (length($compressed) - $trailer_size .. length($compressed) -1 )
diff --git a/cpan/IO-Compress/t/files/meta.xml b/cpan/IO-Compress/t/files/meta.xml
new file mode 100644 (file)
index 0000000..437352d
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" office:version="1.2"><office:meta><meta:creation-date>2018-12-25T11:36:11.437260543</meta:creation-date><dc:date>2018-12-25T11:36:55.657945697</dc:date><meta:editing-duration>PT54S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="1" meta:cell-count="3" meta:object-count="0"/><meta:generator>LibreOffice/6.0.7.3$Linux_X86_64 LibreOffice_project/00m0$Build-3</meta:generator></office:meta></office:document-meta>
\ No newline at end of file
diff --git a/cpan/IO-Compress/t/files/test.ods b/cpan/IO-Compress/t/files/test.ods
new file mode 100644 (file)
index 0000000..ecb2a5d
Binary files /dev/null and b/cpan/IO-Compress/t/files/test.ods differ