IO::Compress::* 2.011
Paul Marquess [Sat, 17 May 2008 12:16:13 +0000 (13:16 +0100)]
From: "Paul Marquess" <Paul.Marquess@ntlworld.com>
Message-ID: <CF9B8F335CB2417FBA78E0F08EAB1F7D@myopwv.com>

p4raw-id: //depot/perl@33846

35 files changed:
MANIFEST
ext/Compress/Raw/Zlib/Changes
ext/Compress/Raw/Zlib/README
ext/Compress/Raw/Zlib/lib/Compress/Raw/Zlib.pm
ext/Compress/Zlib/Changes
ext/Compress/Zlib/Makefile.PL
ext/Compress/Zlib/README
ext/Compress/Zlib/lib/Compress/Zlib.pm
ext/IO_Compress_Base/Changes
ext/IO_Compress_Base/README
ext/IO_Compress_Base/lib/IO/Compress/Base.pm
ext/IO_Compress_Base/lib/IO/Compress/Base/Common.pm
ext/IO_Compress_Base/lib/IO/Uncompress/AnyUncompress.pm
ext/IO_Compress_Base/lib/IO/Uncompress/Base.pm
ext/IO_Compress_Zlib/Changes
ext/IO_Compress_Zlib/Makefile.PL
ext/IO_Compress_Zlib/README
ext/IO_Compress_Zlib/lib/IO/Compress/Adapter/Deflate.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Adapter/Identity.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Deflate.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Gzip.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Gzip/Constants.pm
ext/IO_Compress_Zlib/lib/IO/Compress/RawDeflate.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Zip.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Zip/Constants.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Zlib/Constants.pm
ext/IO_Compress_Zlib/lib/IO/Compress/Zlib/Extra.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/Adapter/Identity.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/Adapter/Inflate.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/AnyInflate.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/Gunzip.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/Inflate.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/RawInflate.pm
ext/IO_Compress_Zlib/lib/IO/Uncompress/Unzip.pm
ext/IO_Compress_Zlib/t/006zip.t [new file with mode: 0644]

index 7a68a13..ad3c353 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -750,6 +750,7 @@ ext/IO_Compress_Zlib/t/002any-transparent.t IO::Compress::Zlib
 ext/IO_Compress_Zlib/t/002any-zip.t    IO::Compress::Zlib
 ext/IO_Compress_Zlib/t/004gziphdr.t    IO::Compress::Zlib
 ext/IO_Compress_Zlib/t/005defhdr.t     IO::Compress::Zlib
+ext/IO_Compress_Zlib/t/006zip.t        IO::Compress::Zlib
 ext/IO_Compress_Zlib/t/010examples.t   IO::Compress::Zlib
 ext/IO_Compress_Zlib/t/020isize.t      IO::Compress::Zlib
 ext/IO_Compress_Zlib/t/050interop-gzip.t       IO::Compress::Zlib
index 7f76041..8a6ffc9 100644 (file)
@@ -1,6 +1,11 @@
 CHANGES
 -------
 
+  2.011 5 May 2008
+
+      * A C++-style comment sneaked in with the last update. Fixed.
+        [core patch #33828]
+
   2.010 5 May 2008
 
       * No Changes
index 240245f..f6f2896 100644 (file)
@@ -1,9 +1,9 @@
 
                              Compress-Raw-Zlib
 
-                             Version 2.010
+                             Version 2.011
 
-                               5th May 2008
+                               17th May 2008
 
        Copyright (c) 2005-2008 Paul Marquess. All rights reserved.
           This program is free software; you can redistribute it
@@ -326,7 +326,7 @@ To help me help you, I need all of the following information:
         If you haven't installed Compress-Raw-Zlib then search Compress::Raw::Zlib.pm
         for a line like this:
 
-          $VERSION = "2.010" ;
+          $VERSION = "2.011" ;
 
      c. The version of zlib you have used.
         If you have successfully installed Compress-Raw-Zlib, this one-liner
index 7e8ff17..77cb86e 100644 (file)
@@ -13,7 +13,7 @@ use warnings ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
index 0917142..60edccb 100644 (file)
@@ -1,6 +1,10 @@
 CHANGES
 -------
 
+  2.011 17 May 2008
+
+      * No Changes
+
   2.010 5 May 2008
 
       * Fixed problem that meant Perl 5.10 could not upgrade this module.
index 270c55c..e79a132 100755 (executable)
@@ -3,7 +3,7 @@
 use strict ;
 require 5.004 ;
 
-$::VERSION = '2.010' ;
+$::VERSION = '2.011' ;
 
 use private::MakeUtil;
 use ExtUtils::MakeMaker 5.16 ;
index 4308b9c..0b550b5 100644 (file)
@@ -1,9 +1,9 @@
 
                              Compress-Zlib
 
-                             Version 2.010
+                             Version 2.011
 
-                               5th May 2008
+                               17th May 2008
 
        Copyright (c) 1995-2008 Paul Marquess. All rights reserved.
           This program is free software; you can redistribute it
@@ -106,7 +106,7 @@ To help me help you, I need all of the following information:
         If you haven't installed Compress-Zlib then search Compress::Zlib.pm
         for a line like this:
 
-          $VERSION = "2.010" ;
+          $VERSION = "2.011" ;
 
  2. If you are having problems building Compress-Zlib, send me a
     complete log of what happened. Start by unpacking the Compress-Zlib
index dc7cb5e..d662afc 100644 (file)
@@ -8,17 +8,17 @@ use Carp ;
 use IO::Handle ;
 use Scalar::Util qw(dualvar);
 
-use IO::Compress::Base::Common 2.010 ;
-use Compress::Raw::Zlib 2.010 ;
-use IO::Compress::Gzip 2.010 ;
-use IO::Uncompress::Gunzip 2.010 ;
+use IO::Compress::Base::Common 2.011 ;
+use Compress::Raw::Zlib 2.011 ;
+use IO::Compress::Gzip 2.011 ;
+use IO::Uncompress::Gunzip 2.011 ;
 
 use strict ;
 use warnings ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -452,7 +452,7 @@ sub inflate
 
 package Compress::Zlib ;
 
-use IO::Compress::Gzip::Constants 2.010 ;
+use IO::Compress::Gzip::Constants 2.011 ;
 
 sub memGzip($)
 {
index 5316c7b..bab7a7e 100644 (file)
@@ -1,6 +1,18 @@
 CHANGES
 -------
 
+  2.011 17 May 2008
+
+      * IO::Compress::Base
+        - Fixed problem that prevented the creation of a zip file that
+          contained more than one compression method.
+
+      * IO::Compress::Base::Common
+        - The private Validator class in this module clashes with another
+          CPAN module. Moved Validator into the IO::Compress::Base::Common
+          namespace.
+          [RT #35954]
+
   2.010 5 May 2008
 
       * Fixed problem that meant Perl 5.10 could not upgrade this module.
index b159fd7..f9d011b 100644 (file)
@@ -1,9 +1,9 @@
 
                              IO-Compress-Base
 
-                             Version 2.010
+                             Version 2.011
 
-                               5th May 2008
+                               17th May 2008
 
        Copyright (c) 2005-2008 Paul Marquess. All rights reserved.
           This program is free software; you can redistribute it
@@ -76,7 +76,7 @@ To help me help you, I need all of the following information:
         If you haven't installed IO-Compress-Base then search IO::Compress::Base.pm
         for a line like this:
 
-          $VERSION = "2.010" ;
+          $VERSION = "2.011" ;
 
  2. If you are having problems building IO-Compress-Base, send me a
     complete log of what happened. Start by unpacking the IO-Compress-Base
index 36939e1..9f05ed8 100644 (file)
@@ -6,7 +6,7 @@ require 5.004 ;
 use strict ;
 use warnings;
 
-use IO::Compress::Base::Common 2.010 ;
+use IO::Compress::Base::Common 2.011 ;
 
 use IO::File ;
 use Scalar::Util qw(blessed readonly);
@@ -20,7 +20,7 @@ use bytes;
 our (@ISA, $VERSION);
 @ISA    = qw(Exporter IO::File);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 #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.
 
@@ -236,7 +236,7 @@ sub _create
     my $status ;
     if (! $merge)
     {
-        *$obj->{Compress} = $obj->mkComp($class, $got)
+        *$obj->{Compress} = $obj->mkComp($got)
             or return undef;
         
         *$obj->{UnCompSize} = new U64 ;
@@ -323,7 +323,7 @@ sub _def
     my $haveOut = @_ ;
     my $output = shift ;
 
-    my $x = new Validator($class, *$obj->{Error}, $name, $input, $output)
+    my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output)
         or return undef ;
 
     push @_, $output if $haveOut && $x->{Hash};
@@ -699,15 +699,13 @@ sub newStream
     $self->ckParams($got)
         or $self->croakError("newStream: $self->{Error}");
 
+    *$self->{Compress} = $self->mkComp($got)
+        or return 0;
+
     *$self->{Header} = $self->mkHeader($got) ;
     $self->output(*$self->{Header} )
         or return 0;
     
-    my $status = $self->reset() ;
-    return $self->saveErrorString(0, *$self->{Compress}{Error}, 
-                                  *$self->{Compress}{ErrorNo})
-        if $status == STATUS_ERROR;
-
     *$self->{UnCompSize}->reset();
     *$self->{CompSize}->reset();
 
@@ -977,3 +975,4 @@ Copyright (c) 2005-2008 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 68e8d6d..a5b0975 100644 (file)
@@ -11,7 +11,7 @@ use File::GlobMapper;
 require Exporter;
 our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
 @ISA = qw(Exporter);
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 @EXPORT = qw( isaFilehandle isaFilename whatIsInput whatIsOutput 
               isaFileGlobString cleanFileGlobString oneTarget
@@ -192,7 +192,7 @@ sub oneTarget
     return $_[0] =~ /^(code|handle|buffer|filename)$/;
 }
 
-sub Validator::new
+sub IO::Compress::Base::Validator::new
 {
     my $class = shift ;
 
@@ -320,7 +320,7 @@ sub Validator::new
     return $obj ;
 }
 
-sub Validator::saveErrorString
+sub IO::Compress::Base::Validator::saveErrorString
 {
     my $self   = shift ;
     ${ $self->{Error} } = shift ;
@@ -328,7 +328,7 @@ sub Validator::saveErrorString
     
 }
 
-sub Validator::croakError
+sub IO::Compress::Base::Validator::croakError
 {
     my $self   = shift ;
     $self->saveErrorString($_[0]);
@@ -337,7 +337,7 @@ sub Validator::croakError
 
 
 
-sub Validator::validateInputFilenames
+sub IO::Compress::Base::Validator::validateInputFilenames
 {
     my $self = shift ;
 
@@ -367,7 +367,7 @@ sub Validator::validateInputFilenames
     return 1 ;
 }
 
-sub Validator::validateInputArray
+sub IO::Compress::Base::Validator::validateInputArray
 {
     my $self = shift ;
 
@@ -398,7 +398,7 @@ sub Validator::validateInputArray
     return 1 ;
 }
 
-#sub Validator::validateHash
+#sub IO::Compress::Base::Validator::validateHash
 #{
 #    my $self = shift ;
 #    my $href = shift ;
index 3b8402c..8888577 100644 (file)
@@ -4,16 +4,16 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.010 qw(createSelfTiedObject);
+use IO::Compress::Base::Common 2.011 qw(createSelfTiedObject);
 
-use IO::Uncompress::Base 2.010 ;
+use IO::Uncompress::Base 2.011 ;
 
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $AnyUncompressError = '';
 
 @ISA = qw( Exporter IO::Uncompress::Base );
@@ -27,18 +27,18 @@ Exporter::export_ok_tags('all');
 
 BEGIN
 {
-   eval ' use IO::Uncompress::Adapter::Inflate 2.010 ;';
-   eval ' use IO::Uncompress::Adapter::Bunzip2 2.010 ;';
-   eval ' use IO::Uncompress::Adapter::LZO 2.010 ;';
-   eval ' use IO::Uncompress::Adapter::Lzf 2.010 ;';
-
-   eval ' use IO::Uncompress::Bunzip2 2.010 ;';
-   eval ' use IO::Uncompress::UnLzop 2.010 ;';
-   eval ' use IO::Uncompress::Gunzip 2.010 ;';
-   eval ' use IO::Uncompress::Inflate 2.010 ;';
-   eval ' use IO::Uncompress::RawInflate 2.010 ;';
-   eval ' use IO::Uncompress::Unzip 2.010 ;';
-   eval ' use IO::Uncompress::UnLzf 2.010 ;';
+   eval ' use IO::Uncompress::Adapter::Inflate 2.011 ;';
+   eval ' use IO::Uncompress::Adapter::Bunzip2 2.011 ;';
+   eval ' use IO::Uncompress::Adapter::LZO 2.011 ;';
+   eval ' use IO::Uncompress::Adapter::Lzf 2.011 ;';
+
+   eval ' use IO::Uncompress::Bunzip2 2.011 ;';
+   eval ' use IO::Uncompress::UnLzop 2.011 ;';
+   eval ' use IO::Uncompress::Gunzip 2.011 ;';
+   eval ' use IO::Uncompress::Inflate 2.011 ;';
+   eval ' use IO::Uncompress::RawInflate 2.011 ;';
+   eval ' use IO::Uncompress::Unzip 2.011 ;';
+   eval ' use IO::Uncompress::UnLzf 2.011 ;';
 }
 
 sub new
@@ -56,7 +56,7 @@ sub anyuncompress
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common 2.010 qw(:Parse);
+    use IO::Compress::Base::Common 2.011 qw(:Parse);
     return ( 'RawInflate' => [1, 1, Parse_boolean,  0] ) ;
 }
 
@@ -75,7 +75,6 @@ sub ckParams
 sub mkUncomp
 {
     my $self = shift ;
-    my $class = shift ;
     my $got = shift ;
 
     my $magic ;
index adb54c6..4493042 100644 (file)
@@ -9,12 +9,12 @@ our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
 @ISA    = qw(Exporter IO::File);
 
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 use constant G_EOF => 0 ;
 use constant G_ERR => -1 ;
 
-use IO::Compress::Base::Common 2.010 ;
+use IO::Compress::Base::Common 2.011 ;
 #use Parse::Parameters ;
 
 use IO::File ;
@@ -468,7 +468,7 @@ sub _create
         return $obj
     }
 
-    my $status = $obj->mkUncomp($class, $got);
+    my $status = $obj->mkUncomp($got);
 
     return undef
         unless defined $status;
@@ -533,7 +533,7 @@ sub _inf
     my $output = shift ;
 
 
-    my $x = new Validator($class, *$obj->{Error}, $name, $input, $output)
+    my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output)
         or return undef ;
     
     push @_, $output if $haveOut && $x->{Hash};
@@ -1451,3 +1451,4 @@ Copyright (c) 2005-2008 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 ba79b78..45cd027 100644 (file)
@@ -1,6 +1,16 @@
 CHANGES
 -------
 
+  2.011 17 May 2008
+
+      * IO::Uncompress::Unzip 
+        - Print an error message if the zip file contains a
+          member compressed with bzip2 and IO::Uncompress::Bunzip2 is 
+          not available.
+        - Could not cope with mixed compression zip files. For example a
+          zip file that contains both STORED and DEFLATED content.
+          [RT #35573]
+
   2.010 5 May 2008
 
       * Fixed problem that meant Perl 5.10 could not upgrade this module.
index a2130aa..deb323e 100644 (file)
@@ -3,7 +3,7 @@
 use strict ;
 require 5.004 ;
 
-$::VERSION = '2.010' ;
+$::VERSION = '2.011' ;
 
 use private::MakeUtil;
 use ExtUtils::MakeMaker 5.16 ;
index 9c403e6..176bcff 100644 (file)
@@ -1,9 +1,9 @@
 
                              IO-Compress-Zlib
 
-                             Version 2.010
+                             Version 2.011
 
-                               5th May 2008
+                               17th May 2008
 
        Copyright (c) 2005-2008 Paul Marquess. All rights reserved.
           This program is free software; you can redistribute it
@@ -93,7 +93,7 @@ To help me help you, I need all of the following information:
         If you haven't installed IO-Compress-Zlib then search IO::Compress::Gzip.pm
         for a line like this:
 
-          $VERSION = "2.010" ;
+          $VERSION = "2.011" ;
 
  2. If you are having problems building IO-Compress-Zlib, send me a
     complete log of what happened. Start by unpacking the IO-Compress-Zlib
index c269d4f..d8f5a5f 100644 (file)
@@ -4,12 +4,12 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(:Status);
+use IO::Compress::Base::Common  2.011 qw(:Status);
 
-use Compress::Raw::Zlib  2.010 qw(Z_OK Z_FINISH MAX_WBITS) ;
+use Compress::Raw::Zlib  2.011 qw(Z_OK Z_FINISH MAX_WBITS) ;
 our ($VERSION);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 sub mkCompObject
 {
index 2eef317..ad7347c 100644 (file)
@@ -4,10 +4,10 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(:Status);
+use IO::Compress::Base::Common  2.011 qw(:Status);
 our ($VERSION);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 sub mkCompObject
 {
index c5d1d02..e702e43 100644 (file)
@@ -6,16 +6,16 @@ use bytes;
 
 require Exporter ;
 
-use IO::Compress::RawDeflate 2.010 ;
+use IO::Compress::RawDeflate 2.011 ;
 
-use Compress::Raw::Zlib  2.010 ;
-use IO::Compress::Zlib::Constants 2.010 ;
-use IO::Compress::Base::Common  2.010 qw(createSelfTiedObject);
+use Compress::Raw::Zlib  2.011 ;
+use IO::Compress::Zlib::Constants 2.011 ;
+use IO::Compress::Base::Common  2.011 qw(createSelfTiedObject);
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $DeflateError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $DeflateError = '';
 
 @ISA    = qw(Exporter IO::Compress::RawDeflate);
index 4bea560..86561c5 100644 (file)
@@ -8,12 +8,12 @@ use warnings;
 use bytes;
 
 
-use IO::Compress::RawDeflate 2.010 ;
+use IO::Compress::RawDeflate 2.011 ;
 
-use Compress::Raw::Zlib  2.010 ;
-use IO::Compress::Base::Common  2.010 qw(:Status :Parse createSelfTiedObject);
-use IO::Compress::Gzip::Constants 2.010 ;
-use IO::Compress::Zlib::Extra 2.010 ;
+use Compress::Raw::Zlib  2.011 ;
+use IO::Compress::Base::Common  2.011 qw(:Status :Parse createSelfTiedObject);
+use IO::Compress::Gzip::Constants 2.011 ;
+use IO::Compress::Zlib::Extra 2.011 ;
 
 BEGIN
 {
@@ -27,7 +27,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GzipError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $GzipError = '' ;
 
 @ISA    = qw(Exporter IO::Compress::RawDeflate);
index 0c0b168..2f59d22 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.010';
+$VERSION = '2.011';
 
 @ISA = qw(Exporter);
 
index e728d53..81245f2 100644 (file)
@@ -7,16 +7,16 @@ use warnings;
 use bytes;
 
 
-use IO::Compress::Base 2.010 ;
-use IO::Compress::Base::Common  2.010 qw(:Status createSelfTiedObject);
-use IO::Compress::Adapter::Deflate  2.010 ;
+use IO::Compress::Base 2.011 ;
+use IO::Compress::Base::Common  2.011 qw(:Status createSelfTiedObject);
+use IO::Compress::Adapter::Deflate  2.011 ;
 
 require Exporter ;
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $RawDeflateError = '';
 
 @ISA = qw(Exporter IO::Compress::Base);
@@ -92,7 +92,6 @@ sub ckParams
 sub mkComp
 {
     my $self = shift ;
-    my $class = shift ;
     my $got = shift ;
 
     my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject(
@@ -143,8 +142,8 @@ sub getZlibParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common  2.010 qw(:Parse);
-    use Compress::Raw::Zlib  2.010 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+    use IO::Compress::Base::Common  2.011 qw(:Parse);
+    use Compress::Raw::Zlib  2.011 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
 
     
     return (
index 752763d..f2ff60e 100644 (file)
@@ -4,21 +4,21 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(:Status createSelfTiedObject);
-use IO::Compress::RawDeflate 2.010 ;
-use IO::Compress::Adapter::Deflate 2.010 ;
-use IO::Compress::Adapter::Identity 2.010 ;
-use IO::Compress::Zlib::Extra 2.010 ;
-use IO::Compress::Zip::Constants 2.010 ;
+use IO::Compress::Base::Common  2.011 qw(:Status createSelfTiedObject);
+use IO::Compress::RawDeflate 2.011 ;
+use IO::Compress::Adapter::Deflate 2.011 ;
+use IO::Compress::Adapter::Identity 2.011 ;
+use IO::Compress::Zlib::Extra 2.011 ;
+use IO::Compress::Zip::Constants 2.011 ;
 
 
-use Compress::Raw::Zlib  2.010 qw(crc32) ;
+use Compress::Raw::Zlib  2.011 qw(crc32) ;
 BEGIN
 {
     eval { require IO::Compress::Adapter::Bzip2 ; 
-           import  IO::Compress::Adapter::Bzip2 2.010 ; 
+           import  IO::Compress::Adapter::Bzip2 2.011 ; 
            require IO::Compress::Bzip2 ; 
-           import  IO::Compress::Bzip2 2.010 ; 
+           import  IO::Compress::Bzip2 2.011 ; 
          } ;
 }
 
@@ -27,7 +27,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $ZipError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $ZipError = '';
 
 @ISA = qw(Exporter IO::Compress::RawDeflate);
@@ -57,7 +57,6 @@ sub zip
 sub mkComp
 {
     my $self = shift ;
-    my $class = shift ;
     my $got = shift ;
 
     my ($obj, $errstr, $errno) ;
@@ -453,8 +452,8 @@ sub getExtraParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common  2.010 qw(:Parse);
-    use Compress::Raw::Zlib  2.010 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+    use IO::Compress::Base::Common  2.011 qw(:Parse);
+    use Compress::Raw::Zlib  2.011 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
 
     my @Bzip2 = ();
     
index b49f6d7..85e9767 100644 (file)
@@ -7,7 +7,7 @@ require Exporter;
 
 our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 @ISA = qw(Exporter);
 
@@ -33,6 +33,7 @@ $VERSION = '2.010';
     ZIP_GP_FLAG_PATCHED_MASK
     ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK
     ZIP_GP_FLAG_LZMA_EOS_PRESENT
+    ZIP_GP_FLAG_LANGUAGE_ENCODING
 
     ZIP_EXTRA_ID_ZIP64
     ZIP_EXTRA_ID_EXT_TIMESTAMP
@@ -83,6 +84,7 @@ use constant ZIP_OS_CODE_DEFAULT               => 3;
 use constant ZIP_EXTRA_ID_ZIP64                => pack "v", 1;
 use constant ZIP_EXTRA_ID_EXT_TIMESTAMP        => "UT";
 use constant ZIP_EXTRA_ID_INFO_ZIP_UNIX2       => "Ux";
+use constant ZIP_EXTRA_ID_JAVA_EXE             => pack "v", 0xCAFE;
 
 use constant ZIP64_MIN_VERSION                 => 45;
 
index 6535fe1..f57f6a2 100644 (file)
@@ -9,7 +9,7 @@ require Exporter;
 
 our ($VERSION, @ISA, @EXPORT);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 @ISA = qw(Exporter);
 
index 0ab3bf5..92109fa 100644 (file)
@@ -8,9 +8,9 @@ use bytes;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
-use IO::Compress::Gzip::Constants 2.010 ;
+use IO::Compress::Gzip::Constants 2.011 ;
 
 sub ExtraFieldError
 {
index 0435825..91e9be2 100644 (file)
@@ -4,13 +4,13 @@ use warnings;
 use strict;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(:Status);
+use IO::Compress::Base::Common  2.011 qw(:Status);
 
 our ($VERSION);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
-use Compress::Raw::Zlib  2.010 ();
+use Compress::Raw::Zlib  2.011 ();
 
 sub mkUncompObject
 {
index e3c6e71..b93b1d8 100644 (file)
@@ -4,11 +4,11 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(:Status);
-use Compress::Raw::Zlib  2.010 qw(Z_OK Z_DATA_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
+use IO::Compress::Base::Common  2.011 qw(:Status);
+use Compress::Raw::Zlib  2.011 qw(Z_OK Z_DATA_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
 
 our ($VERSION);
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 
 
index d1a2477..f604acb 100644 (file)
@@ -6,22 +6,22 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(createSelfTiedObject);
+use IO::Compress::Base::Common  2.011 qw(createSelfTiedObject);
 
-use IO::Uncompress::Adapter::Inflate  2.010 ();
+use IO::Uncompress::Adapter::Inflate  2.011 ();
 
 
-use IO::Uncompress::Base  2.010 ;
-use IO::Uncompress::Gunzip  2.010 ;
-use IO::Uncompress::Inflate  2.010 ;
-use IO::Uncompress::RawInflate  2.010 ;
-use IO::Uncompress::Unzip  2.010 ;
+use IO::Uncompress::Base  2.011 ;
+use IO::Uncompress::Gunzip  2.011 ;
+use IO::Uncompress::Inflate  2.011 ;
+use IO::Uncompress::RawInflate  2.011 ;
+use IO::Uncompress::Unzip  2.011 ;
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $AnyInflateError = '';
 
 @ISA = qw( Exporter IO::Uncompress::Base );
@@ -48,7 +48,7 @@ sub anyinflate
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.010 qw(:Parse);
+    use IO::Compress::Base::Common  2.011 qw(:Parse);
     return ( 'RawInflate' => [1, 1, Parse_boolean,  0] ) ;
 }
 
@@ -67,7 +67,6 @@ sub ckParams
 sub mkUncomp
 {
     my $self = shift ;
-    my $class = shift ;
     my $got = shift ;
 
     my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject();
index e6cce8e..494cc38 100644 (file)
@@ -9,12 +9,12 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Uncompress::RawInflate 2.010 ;
+use IO::Uncompress::RawInflate 2.011 ;
 
-use Compress::Raw::Zlib 2.010 qw( crc32 ) ;
-use IO::Compress::Base::Common 2.010 qw(:Status createSelfTiedObject);
-use IO::Compress::Gzip::Constants 2.010 ;
-use IO::Compress::Zlib::Extra 2.010 ;
+use Compress::Raw::Zlib 2.011 qw( crc32 ) ;
+use IO::Compress::Base::Common 2.011 qw(:Status createSelfTiedObject);
+use IO::Compress::Gzip::Constants 2.011 ;
+use IO::Compress::Zlib::Extra 2.011 ;
 
 require Exporter ;
 
@@ -28,7 +28,7 @@ Exporter::export_ok_tags('all');
 
 $GunzipError = '';
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 
 sub new
 {
@@ -47,7 +47,7 @@ sub gunzip
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.010 qw(:Parse);
+    use IO::Compress::Base::Common  2.011 qw(:Parse);
     return ( 'ParseExtra' => [1, 1, Parse_boolean,  0] ) ;
 }
 
index 52b3ded..1a74bf4 100644 (file)
@@ -5,15 +5,15 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.010 qw(:Status createSelfTiedObject);
-use IO::Compress::Zlib::Constants 2.010 ;
+use IO::Compress::Base::Common  2.011 qw(:Status createSelfTiedObject);
+use IO::Compress::Zlib::Constants 2.011 ;
 
-use IO::Uncompress::RawInflate  2.010 ;
+use IO::Uncompress::RawInflate  2.011 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $InflateError = '';
 
 @ISA    = qw( Exporter IO::Uncompress::RawInflate );
index c251edc..64f85bf 100644 (file)
@@ -5,11 +5,11 @@ use strict ;
 use warnings;
 use bytes;
 
-use Compress::Raw::Zlib  2.010 ;
-use IO::Compress::Base::Common  2.010 qw(:Status createSelfTiedObject);
+use Compress::Raw::Zlib  2.011 ;
+use IO::Compress::Base::Common  2.011 qw(:Status createSelfTiedObject);
 
-use IO::Uncompress::Base  2.010 ;
-use IO::Uncompress::Adapter::Inflate  2.010 ;
+use IO::Uncompress::Base  2.011 ;
+use IO::Uncompress::Adapter::Inflate  2.011 ;
 
 
 
@@ -17,7 +17,7 @@ use IO::Uncompress::Adapter::Inflate  2.010 ;
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $RawInflateError = '';
 
 @ISA    = qw( Exporter IO::Uncompress::Base );
@@ -58,7 +58,6 @@ sub ckParams
 sub mkUncomp
 {
     my $self = shift ;
-    my $class = shift ;
     my $got = shift ;
 
     my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject(
index 2a31f73..c50259f 100644 (file)
@@ -8,13 +8,14 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Uncompress::RawInflate  2.010 ;
-use IO::Compress::Base::Common  2.010 qw(:Status createSelfTiedObject);
-use IO::Uncompress::Adapter::Identity 2.010 ;
-use IO::Compress::Zlib::Extra 2.010 ;
-use IO::Compress::Zip::Constants 2.010 ;
+use IO::Uncompress::RawInflate  2.011 ;
+use IO::Compress::Base::Common  2.011 qw(:Status createSelfTiedObject);
+use IO::Uncompress::Adapter::Inflate  2.011 ;
+use IO::Uncompress::Adapter::Identity 2.011 ;
+use IO::Compress::Zlib::Extra 2.011 ;
+use IO::Compress::Zip::Constants 2.011 ;
 
-use Compress::Raw::Zlib  2.010 qw(crc32) ;
+use Compress::Raw::Zlib  2.011 qw(crc32) ;
 
 BEGIN
 {
@@ -27,7 +28,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
 
-$VERSION = '2.010';
+$VERSION = '2.011';
 $UnzipError = '';
 
 @ISA    = qw(Exporter IO::Uncompress::RawInflate);
@@ -60,7 +61,7 @@ sub unzip
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.010 qw(:Parse);
+    use IO::Compress::Base::Common  2.011 qw(:Parse);
 
     
     return (
@@ -84,6 +85,20 @@ sub ckParams
     return 1;
 }
 
+sub mkUncomp
+{
+    my $self = shift ;
+    my $got = shift ;
+
+     my $magic = $self->ckMagic()
+        or return 0;
+
+    *$self->{Info} = $self->readHeader($magic)
+        or return undef ;
+
+    return 1;
+
+}
 
 sub ckMagic
 {
@@ -585,19 +600,22 @@ sub _readZipHeader($)
     if ($compressedMethod == ZIP_CM_DEFLATE)
     {
         *$self->{Type} = 'zip-deflate';
+        my $obj = IO::Uncompress::Adapter::Inflate::mkUncompObject(1,0,0);
+
+        *$self->{Uncomp} = $obj;
+        *$self->{ZipData}{CRC32} = crc32(undef);
     }
     elsif ($compressedMethod == ZIP_CM_BZIP2)
     {
-    #if (! defined $IO::Uncompress::Adapter::Bunzip2::VERSION)
+        return $self->HeaderError("Unsupported Compression format $compressedMethod")
+            if ! defined $IO::Uncompress::Adapter::Bunzip2::VERSION ;
         
         *$self->{Type} = 'zip-bzip2';
         
-        my $obj = IO::Uncompress::Adapter::Bunzip2::mkUncompObject(
-                                                              );
+        my $obj = IO::Uncompress::Adapter::Bunzip2::mkUncompObject();
 
         *$self->{Uncomp} = $obj;
         *$self->{ZipData}{CRC32} = crc32(undef);
-
     }
     elsif ($compressedMethod == ZIP_CM_STORE)
     {
@@ -605,12 +623,9 @@ sub _readZipHeader($)
 
         *$self->{Type} = 'zip-stored';
         
-        my $obj = IO::Uncompress::Adapter::Identity::mkUncompObject(# $got->value('CRC32'),
-                                                             # $got->value('ADLER32'),
-                                                              );
+        my $obj = IO::Uncompress::Adapter::Identity::mkUncompObject();
 
         *$self->{Uncomp} = $obj;
-
     }
     else
     {
@@ -1402,9 +1417,11 @@ stream at a time.
 
     my $zipfile = "somefile.zip";
     my $u = new IO::Uncompress::Unzip $zipfile
-        or die "Cannot open $filefile: $UnzipError";
+        or die "Cannot open $zipfile: $UnzipError";
 
-    for (my $status = 1; ! $u->eof(); $status = $u->nextStream())
+    my $status;
+    for ($status = 1; ! $u->eof(); $status = $u->nextStream())
+    {
  
         my $name = $u->getHeaderInfo()->{Name};
         warn "Processing member $name\n" ;
diff --git a/ext/IO_Compress_Zlib/t/006zip.t b/ext/IO_Compress_Zlib/t/006zip.t
new file mode 100644 (file)
index 0000000..83dabca
--- /dev/null
@@ -0,0 +1,251 @@
+BEGIN {
+    if ($ENV{PERL_CORE}) {
+       chdir 't' if -d 't';
+       @INC = ("../lib", "lib/compress");
+    }
+}
+
+use lib qw(t t/compress);
+use strict;
+use warnings;
+use bytes;
+
+use Test::More ;
+use CompTestUtils;
+
+BEGIN {
+    # use Test::NoWarnings, if available
+    my $extra = 0 ;
+    $extra = 1
+        if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
+
+    plan tests => 62 + $extra ;
+
+    use_ok('IO::Compress::Zip', qw(:all)) ;
+    use_ok('IO::Uncompress::Unzip', qw(unzip $UnzipError)) ;
+
+    eval { 
+           require IO::Compress::Bzip2 ; 
+           import  IO::Compress::Bzip2 2.010 ; 
+           require IO::Uncompress::Bunzip2 ; 
+           import  IO::Uncompress::Bunzip2 2.010 ; 
+         } ;
+
+}
+
+
+sub getContent
+{
+    my $filename = shift;
+
+    my $u = new IO::Uncompress::Unzip $filename, Append => 1
+        or die "Cannot open $filename: $UnzipError";
+
+    isa_ok $u, "IO::Uncompress::Unzip";
+
+    my @content;
+    my $status ;
+
+    for ($status = 1; ! $u->eof(); $status = $u->nextStream())
+    {
+        my $name = $u->getHeaderInfo()->{Name};
+        #warn "Processing member $name\n" ;
+
+        my $buff = '';
+        1 while ($status = $u->read($buff)) > 0;
+
+        push @content, $buff;
+        last unless $status == 0;
+    }
+
+    die "Error processing $filename: $status $!\n"
+        if $status < 0 ;    
+
+    return @content;
+}
+
+
+{
+    title "Create a simple zip - All Deflate";
+
+    my $lex = new LexFile my $file1;
+
+    my @content = (
+                   'hello',
+                   '',
+                   'goodbye ',
+                   );
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    is $zip->write($content[0]), length($content[0]), "write"; 
+    $zip->newStream(Name=> "two", Method => ZIP_CM_DEFLATE);
+    is $zip->write($content[1]), length($content[1]), "write"; 
+    $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE);
+    is $zip->write($content[2]), length($content[2]), "write"; 
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], $content[0], "Got 1st entry";
+    is $got[1], $content[1], "Got 2nd entry";
+    is $got[2], $content[2], "Got 3nd entry";
+}
+
+SKIP:
+{
+    title "Create a simple zip - All Bzip2";
+
+    skip "IO::Compress::Bzip2 not available", 9
+        unless defined $IO::Compress::Bzip2::VERSION;
+
+    my $lex = new LexFile my $file1;
+
+    my @content = (
+                   'hello',
+                   '',
+                   'goodbye ',
+                   );
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_BZIP2, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    is $zip->write($content[0]), length($content[0]), "write"; 
+    $zip->newStream(Name=> "two", Method => ZIP_CM_BZIP2);
+    is $zip->write($content[1]), length($content[1]), "write"; 
+    $zip->newStream(Name=> "three", Method => ZIP_CM_BZIP2);
+    is $zip->write($content[2]), length($content[2]), "write"; 
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], $content[0], "Got 1st entry";
+    is $got[1], $content[1], "Got 2nd entry";
+    is $got[2], $content[2], "Got 3nd entry";
+}
+
+SKIP:
+{
+    title "Create a simple zip - Deflate + Bzip2";
+
+    skip "IO::Compress::Bzip2 not available", 9
+        unless $IO::Compress::Bzip2::VERSION;
+
+    my $lex = new LexFile my $file1;
+
+    my @content = (
+                   'hello',
+                   'and',
+                   'goodbye ',
+                   );
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    is $zip->write($content[0]), length($content[0]), "write"; 
+    $zip->newStream(Name=> "two", Method => ZIP_CM_BZIP2);
+    is $zip->write($content[1]), length($content[1]), "write"; 
+    $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE);
+    is $zip->write($content[2]), length($content[2]), "write"; 
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], $content[0], "Got 1st entry";
+    is $got[1], $content[1], "Got 2nd entry";
+    is $got[2], $content[2], "Got 3nd entry";
+}
+
+{
+    title "Create a simple zip - All STORE";
+
+    my $lex = new LexFile my $file1;
+
+    my @content = (
+                   'hello',
+                   '',
+                   'goodbye ',
+                   );
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_STORE, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    is $zip->write($content[0]), length($content[0]), "write"; 
+    $zip->newStream(Name=> "two", Method => ZIP_CM_STORE);
+    is $zip->write($content[1]), length($content[1]), "write"; 
+    $zip->newStream(Name=> "three", Method => ZIP_CM_STORE);
+    is $zip->write($content[2]), length($content[2]), "write"; 
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], $content[0], "Got 1st entry";
+    is $got[1], $content[1], "Got 2nd entry";
+    is $got[2], $content[2], "Got 3nd entry";
+}
+
+{
+    title "Create a simple zip - Deflate + STORE";
+
+    #my $lex = new LexFile my $file1;
+    my $file1 = "tryout.zip";
+
+    my @content = qw(
+                   hello 
+                       and
+                   goodbye 
+                   );
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    is $zip->write($content[0]), length($content[0]), "write"; 
+    $zip->newStream(Name=> "two", Method => ZIP_CM_STORE);
+    is $zip->write($content[1]), length($content[1]), "write"; 
+    $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE);
+    is $zip->write($content[2]), length($content[2]), "write"; 
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], $content[0], "Got 1st entry";
+    is $got[1], $content[1], "Got 2nd entry";
+    is $got[2], $content[2], "Got 3nd entry";
+}
+
+{
+    title "Create a simple zip - Deflate + zero length STORE";
+
+    my $lex = new LexFile my $file1;
+
+    my @content = (
+                   'hello ',
+                   '',
+                   'goodbye ',
+                   );
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    is $zip->write($content[0]), length($content[0]), "write"; 
+    $zip->newStream(Name=> "two", Method => ZIP_CM_STORE);
+    is $zip->write($content[1]), length($content[1]), "write"; 
+    $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE);
+    is $zip->write($content[2]), length($content[2]), "write"; 
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], $content[0], "Got 1st entry";
+    ok $got[1] eq $content[1], "Got 2nd entry";
+    is $got[2], $content[2], "Got 3nd entry";
+}
+