Update Compression modules to version 2.012
[p5sagit/p5-mst-13.2.git] / ext / IO_Compress_Zlib / lib / IO / Uncompress / Unzip.pm
index 2a31f73..16be675 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.012 ;
+use IO::Compress::Base::Common  2.012 qw(:Status createSelfTiedObject);
+use IO::Uncompress::Adapter::Inflate  2.012 ;
+use IO::Uncompress::Adapter::Identity 2.012 ;
+use IO::Compress::Zlib::Extra 2.012 ;
+use IO::Compress::Zip::Constants 2.012 ;
 
-use Compress::Raw::Zlib  2.010 qw(crc32) ;
+use Compress::Raw::Zlib  2.012 qw(crc32) ;
 
 BEGIN
 {
@@ -27,7 +28,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
 
-$VERSION = '2.010';
+$VERSION = '2.012';
 $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.012 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" ;