Update IO-Compress to CPAN version 2.046
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Mon, 19 Dec 2011 09:53:37 +0000 (09:53 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Mon, 19 Dec 2011 11:22:28 +0000 (11:22 +0000)
  [DELTA]

  2.046 18 December 2011

      * Minor update to bin/zipdetails

      * Typo in name of IO::Compress::FAQ.pod

      * IO::Uncompress::Unzip
        - Example for walking a zip file used eof to control the outer
          loop. This is wrong.

      * IO::Compress::Zip
        - Change default for CanonicalName to false.
          [RT# 72974]

14 files changed:
Porting/Maintainers.pl
cpan/IO-Compress/Changes
cpan/IO-Compress/README
cpan/IO-Compress/bin/zipdetails
cpan/IO-Compress/lib/IO/Compress/Base.pm
cpan/IO-Compress/lib/IO/Compress/Base/Common.pm
cpan/IO-Compress/lib/IO/Compress/FAQ.pod
cpan/IO-Compress/lib/IO/Compress/Zip.pm
cpan/IO-Compress/lib/IO/Uncompress/Base.pm
cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm
cpan/IO-Compress/t/006zip.t
cpan/IO-Compress/t/01misc.t
cpan/IO-Compress/t/105oneshot-zip-only.t
pod/perldelta.pod

index aaf20a5..04da3e5 100755 (executable)
@@ -1005,7 +1005,7 @@ use File::Glob qw(:case);
 
     'IO-Compress' => {
         'MAINTAINER'   => 'pmqs',
-        'DISTRIBUTION' => 'PMQS/IO-Compress-2.045.tar.gz',
+        'DISTRIBUTION' => 'PMQS/IO-Compress-2.046.tar.gz',
         'FILES'        => q[cpan/IO-Compress],
         'EXCLUDED'     => [qr{t/Test/}],
         'UPSTREAM'     => 'cpan',
index 9243733..0d00b00 100644 (file)
@@ -1,6 +1,20 @@
 CHANGES
 -------
 
+  2.046 18 December 2011
+
+      * Minor update to bin/zipdetails
+
+      * Typo in name of IO::Compress::FAQ.pod
+
+      * IO::Uncompress::Unzip
+        - Example for walking a zip file used eof to control the outer
+          loop. This is wrong.
+
+      * IO::Compress::Zip
+        - Change default for CanonicalName to false.
+          [RT# 72974]
+
   2.045 3 December 2011
 
       * Restructured IO::Compress::FAQ.pod
index 8ad08dd..e13ea76 100644 (file)
@@ -1,9 +1,9 @@
 
                              IO-Compress
 
-                             Version 2.045
+                             Version 2.046
 
-                            3rd December 2011
+                            18th December 2011
 
        Copyright (c) 1995-2011 Paul Marquess. All rights reserved.
           This program is free software; you can redistribute it
index 5cb3a96..6e405f3 100644 (file)
@@ -177,7 +177,7 @@ my %Extras = (
 
        );
 
-my $VERSION = "1.04" ;
+my $VERSION = "1.05" ;
 
 my $FH;
 
@@ -189,6 +189,8 @@ my $CentralHeaderCount = 0;
 my $START;
 my $OFFSET = new U64 0;
 my $TRAILING = 0 ;
+my $PAYLOADLIMIT = new U64 256;
+my $ZERO = new U64 0 ;
 
 sub prOff
 {
@@ -472,14 +474,12 @@ sub outSomeData
     my $size = shift;
     my $message = shift;
 
-    my $size32 = $size;
-    if (ref $size eq 'U64') {
-        $size32 = $size->getLow();
-    }
+    my $size64 = U64::mkU64($size);
 
-    if ($size > 0) {
-        if ($size > 64) {
-            out0 $size, $message;
+    if ($size64->gt($ZERO)) {
+        my $size32 = $size64->getLow();
+        if ($size64->gt($PAYLOADLIMIT) ) {
+            out0 $size32, $message;
         } else {
             myRead(my $buffer, $size32 );
             out $buffer, $message, xDump $buffer ;
@@ -1771,6 +1771,16 @@ sub _dosToUnixTime
         bless [ @$self ], ref $self ;
     }
 
+    sub mkU64
+    {
+        my $value = shift;
+
+        return $value
+            if ref $value eq 'U64';
+
+        bless [  $value, 0 ], "U64" ;
+    }
+
     sub getHigh
     {
         my $self = shift;
@@ -1860,15 +1870,6 @@ sub _dosToUnixTime
         }
     }
 
-    sub equal
-    {
-        my $self = shift;
-        my $other = shift;
-
-        return $self->[LOW]  == $other->[LOW] &&
-               $self->[HIGH] == $other->[HIGH] ;
-    }
-
     sub is64bit
     {
         my $self = shift;
@@ -1901,13 +1902,37 @@ sub _dosToUnixTime
         my $self = shift;
         return $self->[HIGH] == 0 && $self->[LOW] == MAX32;
     }
+
+    sub stringify
+    {
+        my $self = shift;
+
+        return "High [$self->[HIGH]], Low [$self->[LOW]]";
+    }
     
+    sub equal
+    {
+        my $self = shift;
+        my $other = shift;
+
+        return $self->[LOW]  == $other->[LOW] &&
+               $self->[HIGH] == $other->[HIGH] ;
+    }
+
+    sub gt
+    {
+        my $self = shift;
+        my $other = shift;
+
+        return $self->cmp($other) > 0 ;
+    }
+
     sub cmp
     {
         my $self = shift;
         my $other = shift ;
 
-        if ($self->[HIGH] == $other->[LOW]) {
+        if ($self->[LOW] == $other->[LOW]) {
             return $self->[HIGH] - $other->[HIGH] ;
         }
         else {
index c1502b2..adcfecc 100644 (file)
@@ -20,7 +20,7 @@ use bytes;
 our (@ISA, $VERSION);
 @ISA    = qw(Exporter IO::File);
 
-$VERSION = '2.045';
+$VERSION = '2.046';
 
 #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.
 
index f1acf31..0f1c63a 100644 (file)
@@ -980,6 +980,28 @@ sub equal
            $self->[HIGH] == $other->[HIGH] ;
 }
 
+sub gt
+{
+    my $self = shift;
+    my $other = shift;
+
+    return $self->cmp($other) > 0 ;
+}
+
+sub cmp
+{
+    my $self = shift;
+    my $other = shift ;
+
+    if ($self->[LOW] == $other->[LOW]) {
+        return $self->[HIGH] - $other->[HIGH] ;
+    }
+    else {
+        return $self->[LOW] - $other->[LOW] ;
+    }
+}
+    
+
 sub is64bit
 {
     my $self = shift;
index c105910..92be856 100644 (file)
@@ -1,7 +1,7 @@
 
 =head1 NAME
 
-IO::Conmpress::FAQ -- Frequently Asked Questions about IO::Compress
+IO::Compress::FAQ -- Frequently Asked Questions about IO::Compress
 
 =head1 DESCRIPTION
 
index 75d37c5..0e4c957 100644 (file)
@@ -36,7 +36,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $ZipError);
 
-$VERSION = '2.045';
+$VERSION = '2.046';
 $ZipError = '';
 
 @ISA = qw(Exporter IO::Compress::RawDeflate);
@@ -666,7 +666,7 @@ sub getExtraParams
             'ZipComment'=> [0, 1, Parse_any,       ''],
             'Name'      => [0, 1, Parse_any,       ''],
             'FilterName'=> [0, 1, Parse_code,      undef],
-            'CanonicalName'=> [0, 1, Parse_boolean,   1],
+            'CanonicalName'=> [0, 1, Parse_boolean,   0],
             #'UTF8'      => [0, 1, Parse_boolean,   0],
             'Time'      => [0, 1, Parse_any,       undef],
             'exTime'    => [0, 1, Parse_any,       undef],
@@ -1254,7 +1254,7 @@ can modify the value used for the zip filename header field.
 This option controls whether the filename field in the zip header is
 I<normalized> into Unix format before being written to the zip file.
 
-It is recommended that you leave this option enabled unless you really need
+It is recommended that you enable this option unless you really need
 to create a non-standard Zip file.
 
 This is what APPNOTE.TXT has to say on what should be stored in the zip
@@ -1267,7 +1267,7 @@ filename header field.
     backwards slashes '\' for compatibility with Amiga
     and UNIX file systems etc.
 
-This option defaults to B<true>.
+This option defaults to B<false>.
 
 =item C<< FilterName => sub { ... }  >>
 
@@ -1281,7 +1281,7 @@ filename is available C<$_> will contain an empty string.
 The value of C<$_> when the sub returns will be  stored in the filename
 header field.
 
-Note that if C<CanonicalName> is enabled (and it is by default), a
+Note that if C<CanonicalName> is enabled, a
 normalized filename will be passed to the sub.
 
 If you use C<FilterName> to modify the filename, it is your responsibility
index b4c7454..973d41b 100644 (file)
@@ -9,7 +9,7 @@ our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
 @ISA    = qw(Exporter IO::File);
 
 
-$VERSION = '2.045';
+$VERSION = '2.046';
 
 use constant G_EOF => 0 ;
 use constant G_ERR => -1 ;
@@ -210,7 +210,8 @@ sub smartEof
         #
         # here, but this can cause trouble if
         # the filehandle is itself a tied handle, but it uses sysread.
-        # Then we get into mixing buffered & non-buffered IO, which will cause trouble
+        # Then we get into mixing buffered & non-buffered IO, 
+        # which will cause trouble
 
         my $info = $self->getErrInfo();
         
index a1088f0..de6eca5 100644 (file)
@@ -31,7 +31,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
 
-$VERSION = '2.045';
+$VERSION = '2.046';
 $UnzipError = '';
 
 @ISA    = qw(Exporter IO::Uncompress::RawInflate);
@@ -1783,7 +1783,7 @@ stream at a time.
         or die "Cannot open $zipfile: $UnzipError";
 
     my $status;
-    for ($status = 1; ! $u->eof(); $status = $u->nextStream())
+    for ($status = 1; $stream > 0; $status = $u->nextStream())
     {
  
         my $name = $u->getHeaderInfo()->{Name};
index b286802..c79db5b 100644 (file)
@@ -19,7 +19,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 85 + $extra ;
+    plan tests => 91 + $extra ;
 
     use_ok('IO::Compress::Zip', qw(:all)) ;
     use_ok('IO::Uncompress::Unzip', qw(unzip $UnzipError)) ;
@@ -46,7 +46,7 @@ sub getContent
     my @content;
     my $status ;
 
-    for ($status = 1; ! $u->eof(); $status = $u->nextStream())
+    for ($status = 1; $status > 0 ; $status = $u->nextStream())
     {
         my $name = $u->getHeaderInfo()->{Name};
         #warn "Processing member $name\n" ;
@@ -276,6 +276,25 @@ SKIP:
     is $got[1], $content[1], "Got 2nd entry";
 }
 
+{
+    title "Zip file with a single zero-length file";
+
+    my $lex = new LexFile my $file1;
+
+
+    my $zip = new IO::Compress::Zip $file1,
+                    Name => "one", Method => ZIP_CM_STORE, Stream => 0;
+    isa_ok $zip, "IO::Compress::Zip";
+
+    $zip->newStream(Name=> "two", Method => ZIP_CM_STORE);
+    ok $zip->close(), "closed";                    
+
+    my @got = getContent($file1);
+
+    is $got[0], "", "no content";
+    is $got[1], "", "no content";
+}
+
 SKIP:
 for my $method (ZIP_CM_DEFLATE, ZIP_CM_STORE, ZIP_CM_BZIP2)
 {
index 76d6a7b..528b71f 100644 (file)
@@ -19,7 +19,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 136 + $extra ;
+    plan tests => 140 + $extra ;
 
     use_ok('Scalar::Util');
     use_ok('IO::Compress::Base::Common');
@@ -361,4 +361,12 @@ My::testParseParameters();
     $z =  U64::clone($x);
     is $z->getHigh, 21, "  getHigh is 21";
     is $z->getLow, 77, "  getLow is 77";
+
+    title "U64 - cmp.gt" ;
+    $x = new U64 1;
+    $y = new U64 0;
+    cmp_ok $x->cmp($y), '>', 0, "  cmp > 0";
+    is $x->gt($y), 1, "  gt";
+    cmp_ok $y->cmp($x), '<', 0, "  cmp < 0";
+
 }
index 1f43c2c..4fea3d1 100644 (file)
@@ -152,6 +152,7 @@ sub zipGetHeader
     is $hdr->{Name}, "abcde", "  Name is 'abcde'" ;
 
     $hdr = zipGetHeader($file1, $content, Name => $abs, 
+         CanonicalName => 1,
          FilterName => sub { s/joe/jim/ });
     is $hdr->{Name}, "fred/jim", "  Name is 'fred/jim'" ;
 
index fede553..e01b799 100644 (file)
@@ -442,7 +442,7 @@ L<ExtUtils::ParseXS> has been upgraded from version 3.05 to version 3.07.
 
 =item *
 
-L<IO::Compress::Base> has been upgraded from version 2.042 to version 2.045.
+L<IO::Compress::Base> has been upgraded from version 2.042 to version 2.046.
 
 Added zipdetails utility.