This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update IO-Compress to CPAN version 2.033
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 11 Jan 2011 21:34:22 +0000 (21:34 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 11 Jan 2011 21:34:22 +0000 (21:34 +0000)
  [DELTA]

  2.033 11 Jan 2011
      * Fixed typos & spelling errors.
        [perl# 81816]

  2.032 4 Jan 2011

      * IO::Uncompress::Base
        - An input file that had a valid header, and so would allow
          creation of the uncompression object, but was then followed by
          corrupt data would trigger an infinite loop when using the
          input line oprator.
          [RT #61915]

      * IO::Compress::Gzip
        - XFL default settings for max compression & fastest algorithm were
          the wrong way around. Thanks to Andrey Zholos for spotting this.

      * IO::Compress::Base::Common
        - Fixed precedence problem in parameter parsing code.

45 files changed:
Porting/Maintainers.pl
cpan/IO-Compress/Changes
cpan/IO-Compress/Makefile.PL
cpan/IO-Compress/README
cpan/IO-Compress/lib/Compress/Zlib.pm
cpan/IO-Compress/lib/File/GlobMapper.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/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/pod/FAQ.pod
cpan/IO-Compress/t/000prereq.t
cpan/IO-Compress/t/004gziphdr.t
cpan/IO-Compress/t/01misc.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/compress/generic.pl
cpan/IO-Compress/t/compress/tied.pl
cpan/IO-Compress/t/compress/truncate.pl
cpan/IO-Compress/t/cz-03zlib-v1.t
cpan/IO-Compress/t/cz-14gzopen.t
pod/perldelta.pod

index 915f292..d910e45 100755 (executable)
@@ -804,7 +804,7 @@ use File::Glob qw(:case);
     'IO-Compress' =>
        {
        'MAINTAINER'    => 'pmqs',
-       'DISTRIBUTION'  => 'PMQS/IO-Compress-2.030.tar.gz',
+       'DISTRIBUTION'  => 'PMQS/IO-Compress-2.033.tar.gz',
        'FILES'         => q[cpan/IO-Compress],
        'EXCLUDED'      => [ qr{t/Test/} ],
        'UPSTREAM'      => 'cpan',
index f61463a..464540e 100644 (file)
@@ -1,6 +1,26 @@
 CHANGES
 -------
 
+  2.033 11 Jan 2011
+      * Fixed typos & spelling errors.
+        [perl# 81816]
+
+  2.032 4 Jan 2011
+
+      * IO::Uncompress::Base
+        - An input file that had a valid header, and so would allow
+          creation of the uncompression object, but was then followed by
+          corrupt data would trigger an infinite loop when using the 
+          input line oprator.
+          [RT #61915]
+
+      * IO::Compress::Gzip
+        - XFL default settings for max compression & fastest algorithm were 
+          the wrong way around. Thanks to Andrey Zholos for spotting this.
+
+      * IO::Compress::Base::Common
+        - Fixed precedence problem in parameter parsing code.
+
   2.030 22 July 2010
 
       * IO::Compress::Zip
@@ -11,7 +31,7 @@ CHANGES
         Reworked the "Name" option and examples in the pod.
 
       * IO::Uncompress::Base
-        Fixed problem with nextStream not returning 0 when there is no
+        Fixed problem with nextStream not returning 0 when there is no 
         next stream and Transparent is false.
 
   2.027 24 April 2010
@@ -117,7 +137,7 @@ CHANGES
 
   2.018 3 May 2009
 
-      * IO::Unompress::Bunzip2
+      * IO::Uncompress::Bunzip2
         - The interface to Compress-Raw-Bzip2 now uses the new LimitOutput
           feature. This will make all of the bzip2-related IO-Compress modules
           less greedy in their memory consumption. 
@@ -267,7 +287,7 @@ CHANGES
         FNAME & FCOMMENT fields for EBCDIC.
 
       * Compress::Zlib 
-        lib/Compress/Zlib.pm -- 1.x Backward Compatability issues
+        lib/Compress/Zlib.pm -- 1.x Backward Compatibility issues
         gzclose - documented return value was wrong, should be 0 for ok.
         gzflush - return value didn't match 1.x, should return 0 if ok.
         [rt.cpan.org #29215] and Debian bug #440943 http://bugs.debian.org/440943
@@ -363,7 +383,7 @@ CHANGES
       * Add an explicit use_ok test for Scalar::Util in the test harness.
         The error message reported by 01misc implied the problem was
         somewhere else.
-        Also explictly check that 'dualvar' is available.
+        Also explicitly check that 'dualvar' is available.
 
       * Compress::Zlib 
         - Fix append mode with gzopen.
@@ -386,7 +406,7 @@ CHANGES
         Thanks to Andreas J. Koenig for spotting the problem.
 
       * IO::Uncompress::AnyUncompress
-        Added IO::Uncompress::Lzf to the list of supported uncompresors.
+        Added IO::Uncompress::Lzf to the list of supported uncompressors.
 
       * IO::Uncompress::Base
         Added TrailingData to one-shot interface.
@@ -413,7 +433,7 @@ CHANGES
 
       * IO::Uncompress::UnZip
         Tighten up the zip64 extra field processing to cope with the case
-        wheere only some of the local header fields are superceeded.
+        wheere only some of the local header fields are superseded.
 
       * IO::Uncompress::AnyInflate
         Remove raw-deflate (RFC 1951) from the default list of compressors 
@@ -513,7 +533,7 @@ CHANGES
         Changed gzread so that its behaviour matches C::Z::gzread 1.x if it
         is called after eof. In this case it will write an empty string
         into the output parameter. This change is solely for backward
-        compatability reasons.
+        compatibility reasons.
 
   2.000_09 3 March 2006
 
@@ -667,7 +687,7 @@ Compress-Zlib version 1 Changes
   1.31 - 29 October 2003
 
       * Reinstated the creation of .bak files - $^I seems to need a
-        backup file on Windows. For OpenVMS, the extenstion _bak is used.
+        backup file on Windows. For OpenVMS, the extension _bak is used.
 
   1.30 - 28 October 2003
 
@@ -764,7 +784,7 @@ Compress-Zlib version 1 Changes
 
   1.13 - 31st June 2001
 
-      * Make sure config.in is consistant when released.
+      * Make sure config.in is consistent when released.
 
   1.12 - 28th April 2001
 
index e18869a..fceaea3 100644 (file)
@@ -3,7 +3,7 @@
 use strict ;
 require 5.004 ;
 
-$::VERSION = '2.030' ;
+$::VERSION = '2.033' ;
 
 use private::MakeUtil;
 use ExtUtils::MakeMaker 5.16 ;
index 4b1612f..6897182 100644 (file)
@@ -1,11 +1,11 @@
 
                              IO-Compress
 
-                             Version 2.030
+                             Version 2.033
 
-                               22nd July 2010
+                             11th January 2011
 
-       Copyright (c) 1995-2010 Paul Marquess. All rights reserved.
+       Copyright (c) 1995-2011 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.
 
@@ -89,7 +89,7 @@ To help me help you, I need all of the following information:
         If you haven't installed IO-Compress then search IO::Compress::Gzip.pm
         for a line like this:
 
-          $VERSION = "2.030" ;
+          $VERSION = "2.033" ;
 
  2. If you are having problems building IO-Compress, send me a
     complete log of what happened. Start by unpacking the IO-Compress
index d4a5650..db20636 100644 (file)
@@ -7,17 +7,17 @@ use Carp ;
 use IO::Handle ;
 use Scalar::Util qw(dualvar);
 
-use IO::Compress::Base::Common 2.030 ;
-use Compress::Raw::Zlib 2.030 ;
-use IO::Compress::Gzip 2.030 ;
-use IO::Uncompress::Gunzip 2.030 ;
+use IO::Compress::Base::Common 2.033 ;
+use Compress::Raw::Zlib 2.033 ;
+use IO::Compress::Gzip 2.033 ;
+use IO::Uncompress::Gunzip 2.033 ;
 
 use strict ;
 use warnings ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -451,7 +451,7 @@ sub inflate
 
 package Compress::Zlib ;
 
-use IO::Compress::Gzip::Constants 2.030 ;
+use IO::Compress::Gzip::Constants 2.033 ;
 
 sub memGzip($)
 {
@@ -1007,7 +1007,7 @@ carry out in-memory gzip compression.
 This function is used to uncompress an in-memory gzip file.
 
     $dest = Compress::Zlib::memGunzip($buffer) 
-        or die "Cannot uncomprss: $gzerrno\n";
+        or die "Cannot uncompress: $gzerrno\n";
 
 If successful, it returns the uncompressed gzip file. Otherwise it
 returns C<undef> and the C<$gzerrno> variable will store the zlib error
@@ -1476,7 +1476,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 1995-2010 Paul Marquess. All rights reserved.
+Copyright (c) 1995-2011 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 40a6063..76d4bed 100644 (file)
@@ -31,7 +31,7 @@ $VERSION = '1.000';
 
 
 our ($noPreBS, $metachars, $matchMetaRE, %mapping, %wildCount);
-$noPreBS = '(?<!\\\)' ; # no preceeding backslash
+$noPreBS = '(?<!\\\)' ; # no preceding backslash
 $metachars = '.*?[](){}';
 $matchMetaRE = '[' . quotemeta($metachars) . ']';
 
@@ -309,7 +309,7 @@ sub _parseOutputGlob
             if $1 > $maxwild ;
     }
 
-    my $noPreBS = '(?<!\\\)' ; # no preceeding backslash
+    my $noPreBS = '(?<!\\\)' ; # no preceding backslash
     #warn "noPreBS = '$noPreBS'\n";
 
     #$string =~ s/${noPreBS}\$(\d)/\${$1}/g;
index 7f13b15..c3718d1 100644 (file)
@@ -4,13 +4,13 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status);
+use IO::Compress::Base::Common  2.033 qw(:Status);
 
 #use Compress::Bzip2 ;
-use Compress::Raw::Bzip2  2.030 ;
+use Compress::Raw::Bzip2  2.033 ;
 
 our ($VERSION);
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 sub mkCompObject
 {
index f586a6e..33e56d0 100644 (file)
@@ -4,12 +4,12 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status);
+use IO::Compress::Base::Common  2.033 qw(:Status);
 
-use Compress::Raw::Zlib  2.030 qw(Z_OK Z_FINISH MAX_WBITS) ;
+use Compress::Raw::Zlib  2.033 qw(Z_OK Z_FINISH MAX_WBITS) ;
 our ($VERSION);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 sub mkCompObject
 {
index e08ed49..21a0be4 100644 (file)
@@ -4,10 +4,10 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status);
+use IO::Compress::Base::Common  2.033 qw(:Status);
 our ($VERSION);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 sub mkCompObject
 {
index ed9997d..d0d585c 100644 (file)
@@ -6,7 +6,7 @@ require 5.004 ;
 use strict ;
 use warnings;
 
-use IO::Compress::Base::Common 2.030 ;
+use IO::Compress::Base::Common 2.033 ;
 
 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.030';
+$VERSION = '2.033';
 
 #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.
 
@@ -974,7 +974,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 56f3741..1b38c59 100644 (file)
@@ -11,7 +11,7 @@ use File::GlobMapper;
 require Exporter;
 our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
 @ISA = qw(Exporter);
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 @EXPORT = qw( isaFilehandle isaFilename whatIsInput whatIsOutput 
               isaFileGlobString cleanFileGlobString oneTarget
@@ -635,7 +635,7 @@ sub IO::Compress::Base::Parameters::parse
             ++ $parsed{$canonkey};
 
             return $self->setError("Muliple instances of '$key' found") 
-                if $parsed && $type & Parse_multiple == 0 ;
+                if $parsed && ($type & Parse_multiple) == 0 ;
 
             my $s ;
             $self->_checkType($key, $value, $type, 1, \$s)
index 2a4e041..5d478d9 100644 (file)
@@ -5,16 +5,16 @@ use warnings;
 use bytes;
 require Exporter ;
 
-use IO::Compress::Base 2.030 ;
+use IO::Compress::Base 2.033 ;
 
-use IO::Compress::Base::Common  2.030 qw(createSelfTiedObject);
-use IO::Compress::Adapter::Bzip2 2.030 ;
+use IO::Compress::Base::Common  2.033 qw(createSelfTiedObject);
+use IO::Compress::Adapter::Bzip2 2.033 ;
 
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $Bzip2Error = '';
 
 @ISA    = qw(Exporter IO::Compress::Base);
@@ -51,7 +51,7 @@ sub getExtraParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common  2.030 qw(:Parse);
+    use IO::Compress::Base::Common  2.033 qw(:Parse);
     
     return (
             'BlockSize100K' => [0, 1, Parse_unsigned,  1],
index 58b61ab..20329bb 100644 (file)
@@ -6,16 +6,16 @@ use bytes;
 
 require Exporter ;
 
-use IO::Compress::RawDeflate 2.030 ;
+use IO::Compress::RawDeflate 2.033 ;
 
-use Compress::Raw::Zlib  2.030 ;
-use IO::Compress::Zlib::Constants 2.030 ;
-use IO::Compress::Base::Common  2.030 qw(createSelfTiedObject);
+use Compress::Raw::Zlib  2.033 ;
+use IO::Compress::Zlib::Constants 2.033 ;
+use IO::Compress::Base::Common  2.033 qw(createSelfTiedObject);
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $DeflateError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $DeflateError = '';
 
 @ISA    = qw(Exporter IO::Compress::RawDeflate);
@@ -394,8 +394,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any compressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all compressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all compressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -923,7 +923,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 0e6ea99..2a78942 100644 (file)
@@ -8,12 +8,12 @@ use warnings;
 use bytes;
 
 
-use IO::Compress::RawDeflate 2.030 ;
+use IO::Compress::RawDeflate 2.033 ;
 
-use Compress::Raw::Zlib  2.030 ;
-use IO::Compress::Base::Common  2.030 qw(:Status :Parse createSelfTiedObject);
-use IO::Compress::Gzip::Constants 2.030 ;
-use IO::Compress::Zlib::Extra 2.030 ;
+use Compress::Raw::Zlib  2.033 ;
+use IO::Compress::Base::Common  2.033 qw(:Status :Parse createSelfTiedObject);
+use IO::Compress::Gzip::Constants 2.033 ;
+use IO::Compress::Zlib::Extra 2.033 ;
 
 BEGIN
 {
@@ -27,7 +27,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GzipError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $GzipError = '' ;
 
 @ISA    = qw(Exporter IO::Compress::RawDeflate);
@@ -141,9 +141,9 @@ sub ckParams
 
         if ( ! $got->parsed('ExtraFlags')) {
             $got->value('ExtraFlags' => 2) 
-                if $got->value('Level') == Z_BEST_SPEED ;
-            $got->value('ExtraFlags' => 4) 
                 if $got->value('Level') == Z_BEST_COMPRESSION ;
+            $got->value('ExtraFlags' => 4) 
+                if $got->value('Level') == Z_BEST_SPEED ;
         }
 
         my $data = $got->value('ExtraField') ;
@@ -512,8 +512,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any compressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all compressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all compressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -1235,7 +1235,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 335b7d9..ca74d73 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.030';
+$VERSION = '2.033';
 
 @ISA = qw(Exporter);
 
index bec40e0..bb077f9 100644 (file)
@@ -7,16 +7,16 @@ use warnings;
 use bytes;
 
 
-use IO::Compress::Base 2.030 ;
-use IO::Compress::Base::Common  2.030 qw(:Status createSelfTiedObject);
-use IO::Compress::Adapter::Deflate  2.030 ;
+use IO::Compress::Base 2.033 ;
+use IO::Compress::Base::Common  2.033 qw(:Status createSelfTiedObject);
+use IO::Compress::Adapter::Deflate  2.033 ;
 
 require Exporter ;
 
 
 our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $RawDeflateError = '';
 
 @ISA = qw(Exporter IO::Compress::Base);
@@ -142,8 +142,8 @@ sub getZlibParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common  2.030 qw(:Parse);
-    use Compress::Raw::Zlib  2.030 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+    use IO::Compress::Base::Common  2.033 qw(:Parse);
+    use Compress::Raw::Zlib  2.033 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
 
     
     return (
@@ -481,8 +481,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any compressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all compressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all compressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -1010,7 +1010,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 00f4ed9..62acc8e 100644 (file)
@@ -4,26 +4,26 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status createSelfTiedObject);
-use IO::Compress::RawDeflate 2.030 ;
-use IO::Compress::Adapter::Deflate 2.030 ;
-use IO::Compress::Adapter::Identity 2.030 ;
-use IO::Compress::Zlib::Extra 2.030 ;
-use IO::Compress::Zip::Constants 2.030 ;
+use IO::Compress::Base::Common  2.033 qw(:Status createSelfTiedObject);
+use IO::Compress::RawDeflate 2.033 ;
+use IO::Compress::Adapter::Deflate 2.033 ;
+use IO::Compress::Adapter::Identity 2.033 ;
+use IO::Compress::Zlib::Extra 2.033 ;
+use IO::Compress::Zip::Constants 2.033 ;
 
 
-use Compress::Raw::Zlib  2.030 qw(crc32) ;
+use Compress::Raw::Zlib  2.033 qw(crc32) ;
 BEGIN
 {
     eval { require IO::Compress::Adapter::Bzip2 ; 
-           import  IO::Compress::Adapter::Bzip2 2.030 ;
+           import  IO::Compress::Adapter::Bzip2 2.033 ; 
            require IO::Compress::Bzip2 ; 
-           import  IO::Compress::Bzip2 2.030 ;
+           import  IO::Compress::Bzip2 2.033 ; 
          } ;
 #    eval { require IO::Compress::Adapter::Lzma ; 
 #           import  IO::Compress::Adapter::Lzma 2.020 ; 
 #           require IO::Compress::Lzma ; 
-#           import  IO::Compress::Lzma 2.030 ;
+#           import  IO::Compress::Lzma 2.033 ; 
 #         } ;
 }
 
@@ -32,7 +32,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $ZipError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $ZipError = '';
 
 @ISA = qw(Exporter IO::Compress::RawDeflate);
@@ -156,7 +156,7 @@ sub mkHeader
     my $extFileAttr = 0 ;
     
     # This code assumes Unix.
-    $extFileAttr = 0100644 << 16
+    $extFileAttr = 0100644 << 16 
         if $osCode == ZIP_OS_CODE_UNIX ;
 
     if (*$self->{ZipData}{Zip64}) {
@@ -513,8 +513,8 @@ sub getExtraParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common  2.030 qw(:Parse);
-    use Compress::Raw::Zlib  2.030 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+    use IO::Compress::Base::Common  2.033 qw(:Parse);
+    use Compress::Raw::Zlib  2.033 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
 
     my @Bzip2 = ();
     
@@ -540,7 +540,7 @@ sub getExtraParams
             'exUnix2'   => [0, 1, Parse_any,       undef], 
             'ExtAttr'   => [0, 1, Parse_any, 
                     $Compress::Raw::Zlib::gzip_os_code == 3 
-                        ? 0100644 << 16
+                        ? 0100644 << 16 
                         : 0],
             'OS_Code'   => [0, 1, Parse_unsigned,  $Compress::Raw::Zlib::gzip_os_code],
             
@@ -893,8 +893,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any compressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all compressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all compressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -946,7 +946,7 @@ of the files C<alpha.txt> and C<beta.txt>
         or die "zip failed: $ZipError\n";
 
 Alternatively, rather than having to explicitly name each of the files that
-you want to comnpress, you could use a fileglob to select all the C<txt>
+you want to compress, you could use a fileglob to select all the C<txt>
 files in the current directory, as follows
 
     use strict ;
@@ -1058,7 +1058,7 @@ This parameter defaults to 0.
 
 =item C<< Name => $string >>
 
-Stores the contents of C<$string> in the zip filename header field.
+Stores the contents of C<$string> in the zip filename header field. 
 
 If C<Name> is not specified and the C<$input> parameter is a filename that
 will be used for the zip filename header field.
@@ -1084,7 +1084,7 @@ If you are running a Unix derivative this value defaults to
     0100644 << 16
 
 This should allow read/write access to any files that are extracted from
-the zip file/buffer.
+the zip file/buffer`.
 
 For all other systems it defaults to 0.
 
@@ -1618,7 +1618,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 e843c59..44fd5e8 100644 (file)
@@ -7,7 +7,7 @@ require Exporter;
 
 our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 @ISA = qw(Exporter);
 
index af5aee5..4c2d5eb 100644 (file)
@@ -9,7 +9,7 @@ require Exporter;
 
 our ($VERSION, @ISA, @EXPORT);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 @ISA = qw(Exporter);
 
index 0c21887..3b13e29 100644 (file)
@@ -8,9 +8,9 @@ use bytes;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
-use IO::Compress::Gzip::Constants 2.030 ;
+use IO::Compress::Gzip::Constants 2.033 ;
 
 sub ExtraFieldError
 {
index 913a0a7..6703e59 100644 (file)
@@ -4,12 +4,12 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.030 qw(:Status);
+use IO::Compress::Base::Common 2.033 qw(:Status);
 
-use Compress::Raw::Bzip2 2.030 ;
+use Compress::Raw::Bzip2 2.033 ;
 
 our ($VERSION, @ISA);
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 sub mkUncompObject
 {
index c4671dc..0705a1c 100644 (file)
@@ -4,13 +4,13 @@ use warnings;
 use strict;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status);
+use IO::Compress::Base::Common  2.033 qw(:Status);
 
 our ($VERSION);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
-use Compress::Raw::Zlib  2.030 ();
+use Compress::Raw::Zlib  2.033 ();
 
 sub mkUncompObject
 {
index 1978852..dc0365c 100644 (file)
@@ -4,11 +4,11 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status);
-use Compress::Raw::Zlib  2.030 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
+use IO::Compress::Base::Common  2.033 qw(:Status);
+use Compress::Raw::Zlib  2.033 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
 
 our ($VERSION);
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 
 
index 37d2b16..796230e 100644 (file)
@@ -6,22 +6,22 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(createSelfTiedObject);
+use IO::Compress::Base::Common  2.033 qw(createSelfTiedObject);
 
-use IO::Uncompress::Adapter::Inflate  2.030 ();
+use IO::Uncompress::Adapter::Inflate  2.033 ();
 
 
-use IO::Uncompress::Base  2.030 ;
-use IO::Uncompress::Gunzip  2.030 ;
-use IO::Uncompress::Inflate  2.030 ;
-use IO::Uncompress::RawInflate  2.030 ;
-use IO::Uncompress::Unzip  2.030 ;
+use IO::Uncompress::Base  2.033 ;
+use IO::Uncompress::Gunzip  2.033 ;
+use IO::Uncompress::Inflate  2.033 ;
+use IO::Uncompress::RawInflate  2.033 ;
+use IO::Uncompress::Unzip  2.033 ;
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $AnyInflateError = '';
 
 @ISA = qw( Exporter IO::Uncompress::Base );
@@ -48,7 +48,7 @@ sub anyinflate
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.030 qw(:Parse);
+    use IO::Compress::Base::Common  2.033 qw(:Parse);
     return ( 'RawInflate' => [1, 1, Parse_boolean,  0] ) ;
 }
 
@@ -371,8 +371,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any uncompressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all uncompressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all uncompressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -562,7 +562,7 @@ the module will allow reading of it anyway.
 
 In addition, if the input file/buffer does contain compressed data and
 there is non-compressed data immediately following it, setting this option
-will make this module treat the whole file/bufffer as a single data stream.
+will make this module treat the whole file/buffer as a single data stream.
 
 This option defaults to 1.
 
@@ -980,7 +980,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 c7d5031..64d2fa0 100644 (file)
@@ -4,16 +4,16 @@ use strict;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.030 qw(createSelfTiedObject);
+use IO::Compress::Base::Common 2.033 qw(createSelfTiedObject);
 
-use IO::Uncompress::Base 2.030 ;
+use IO::Uncompress::Base 2.033 ;
 
 
 require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $AnyUncompressError = '';
 
 @ISA = qw( Exporter IO::Uncompress::Base );
@@ -27,22 +27,22 @@ Exporter::export_ok_tags('all');
 
 BEGIN
 {
-   eval ' use IO::Uncompress::Adapter::Inflate 2.030 ;';
-   eval ' use IO::Uncompress::Adapter::Bunzip2 2.030 ;';
-   eval ' use IO::Uncompress::Adapter::LZO 2.030 ;';
-   eval ' use IO::Uncompress::Adapter::Lzf 2.030 ;';
+   eval ' use IO::Uncompress::Adapter::Inflate 2.033 ;';
+   eval ' use IO::Uncompress::Adapter::Bunzip2 2.033 ;';
+   eval ' use IO::Uncompress::Adapter::LZO 2.033 ;';
+   eval ' use IO::Uncompress::Adapter::Lzf 2.033 ;';
    eval ' use IO::Uncompress::Adapter::UnLzma 2.020 ;';
    eval ' use IO::Uncompress::Adapter::UnXz 2.020 ;';
 
-   eval ' use IO::Uncompress::Bunzip2 2.030 ;';
-   eval ' use IO::Uncompress::UnLzop 2.030 ;';
-   eval ' use IO::Uncompress::Gunzip 2.030 ;';
-   eval ' use IO::Uncompress::Inflate 2.030 ;';
-   eval ' use IO::Uncompress::RawInflate 2.030 ;';
-   eval ' use IO::Uncompress::Unzip 2.030 ;';
-   eval ' use IO::Uncompress::UnLzf 2.030 ;';
-   eval ' use IO::Uncompress::UnLzma 2.030 ;';
-   eval ' use IO::Uncompress::UnXz 2.030 ;';
+   eval ' use IO::Uncompress::Bunzip2 2.033 ;';
+   eval ' use IO::Uncompress::UnLzop 2.033 ;';
+   eval ' use IO::Uncompress::Gunzip 2.033 ;';
+   eval ' use IO::Uncompress::Inflate 2.033 ;';
+   eval ' use IO::Uncompress::RawInflate 2.033 ;';
+   eval ' use IO::Uncompress::Unzip 2.033 ;';
+   eval ' use IO::Uncompress::UnLzf 2.033 ;';
+   eval ' use IO::Uncompress::UnLzma 2.033 ;';
+   eval ' use IO::Uncompress::UnXz 2.033 ;';
 }
 
 sub new
@@ -60,7 +60,7 @@ sub anyuncompress
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common 2.030 qw(:Parse);
+    use IO::Compress::Base::Common 2.033 qw(:Parse);
     return ( 'RawInflate' => [1, 1, Parse_boolean,  0] ,
              'UnLzma'     => [1, 1, Parse_boolean,  0] ) ;
 }
@@ -480,8 +480,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any uncompressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all uncompressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all uncompressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -671,7 +671,7 @@ the module will allow reading of it anyway.
 
 In addition, if the input file/buffer does contain compressed data and
 there is non-compressed data immediately following it, setting this option
-will make this module treat the whole file/bufffer as a single data stream.
+will make this module treat the whole file/buffer as a single data stream.
 
 This option defaults to 1.
 
@@ -1011,7 +1011,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 2814163..77e4a8c 100644 (file)
@@ -9,12 +9,12 @@ our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
 @ISA    = qw(Exporter IO::File);
 
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 use constant G_EOF => 0 ;
 use constant G_ERR => -1 ;
 
-use IO::Compress::Base::Common 2.030 ;
+use IO::Compress::Base::Common 2.033 ;
 #use Parse::Parameters ;
 
 use IO::File ;
@@ -34,9 +34,11 @@ sub smartRead
     my $self = $_[0];
     my $out = $_[1];
     my $size = $_[2];
+    #$$out = "" ;
     $$out = "" ;
 
     my $offset = 0 ;
+    my $status = 1;
 
 
     if (defined *$self->{InputLength}) {
@@ -69,11 +71,12 @@ sub smartRead
             # because the filehandle may not support the offset parameter
             # An example is Net::FTP
             my $tmp = '';
-            *$self->{FH}->read($tmp, $get_size) &&
-                (substr($$out, $offset) = $tmp);
+            $status = *$self->{FH}->read($tmp, $get_size) ;
+            substr($$out, $offset) = $tmp
+                if defined $status && $status > 0 ;
         }
         else
-          { *$self->{FH}->read($$out, $get_size) }
+          { $status = *$self->{FH}->read($$out, $get_size) }
     }
     elsif (defined *$self->{InputEvent}) {
         my $got = 1 ;
@@ -105,6 +108,11 @@ sub smartRead
     *$self->{InputLengthRemaining} -= length($$out) #- $offset 
         if defined *$self->{InputLength};
         
+    if (! defined $status) {
+        $self->saveStatus($!) ;
+        return STATUS_ERROR;
+    }
+
     $self->saveStatus(length $$out < 0 ? STATUS_ERROR : STATUS_OK) ;
 
     return length $$out;
@@ -776,8 +784,8 @@ sub readBlock
     }
     
     my $status = $self->smartRead($buff, $size) ;
-    return $self->saveErrorString(STATUS_ERROR, "Error Reading Data")
-        if $status < 0  ;
+    return $self->saveErrorString(STATUS_ERROR, "Error Reading Data: $!")
+        if $status == STATUS_ERROR  ;
 
     if ($status == 0 ) {
         *$self->{Closed} = 1 ;
@@ -814,7 +822,7 @@ sub _raw_read
         my $len = $self->smartRead(\$tmp_buff, *$self->{BlockSize}) ;
         
         return $self->saveErrorString(G_ERR, "Error reading data: $!", $!) 
-                if $len < 0 ;
+                if $len == STATUS_ERROR ;
 
         if ($len == 0 ) {
             *$self->{EndStream} = 1 ;
@@ -1123,33 +1131,34 @@ sub read
 sub _getline
 {
     my $self = shift ;
+    my $status = 0 ;
 
     # Slurp Mode
     if ( ! defined $/ ) {
         my $data ;
-        1 while $self->read($data) > 0 ;
-        return \$data ;
+        1 while ($status = $self->read($data)) > 0 ;
+        return $status < 0 ? \undef : \$data ;
     }
 
     # Record Mode
     if ( ref $/ eq 'SCALAR' && ${$/} =~ /^\d+$/ && ${$/} > 0) {
         my $reclen = ${$/} ;
         my $data ;
-        $self->read($data, $reclen) ;
-        return \$data ;
+        $status = $self->read($data, $reclen) ;
+        return $status < 0 ? \undef : \$data ;
     }
 
     # Paragraph Mode
     if ( ! length $/ ) {
         my $paragraph ;    
-        while ($self->read($paragraph) > 0 ) {
+        while (($status = $self->read($paragraph)) > 0 ) {
             if ($paragraph =~ s/^(.*?\n\n+)//s) {
                 *$self->{Pending}  = $paragraph ;
                 my $par = $1 ;
                 return \$par ;
             }
         }
-        return \$paragraph;
+        return $status < 0 ? \undef : \$paragraph;
     }
 
     # $/ isn't empty, or a reference, so it's Line Mode.
@@ -1165,7 +1174,7 @@ sub _getline
             return \$l;
         }
 
-        while ($self->read($line) > 0 ) {
+        while (($status = $self->read($line)) > 0 ) {
             my $offset = index($line, $/);
             if ($offset >= 0) {
                 my $l = substr($line, 0, $offset + length $/ );
@@ -1175,7 +1184,7 @@ sub _getline
             }
         }
 
-        return \$line;
+        return $status < 0 ? \undef : \$line;
     }
 }
 
@@ -1445,7 +1454,7 @@ IO::Uncompress::Base - Base Class for IO::Uncompress modules
 =head1 DESCRIPTION
 
 This module is not intended for direct use in application code. Its sole
-purpose if to to be sub-classed by IO::Unompress modules.
+purpose if to to be sub-classed by IO::Uncompress modules.
 
 =head1 SEE ALSO
 
@@ -1467,7 +1476,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 288ead1..39adbef 100644 (file)
@@ -4,15 +4,15 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common 2.030 qw(:Status createSelfTiedObject);
+use IO::Compress::Base::Common 2.033 qw(:Status createSelfTiedObject);
 
-use IO::Uncompress::Base 2.030 ;
-use IO::Uncompress::Adapter::Bunzip2 2.030 ;
+use IO::Uncompress::Base 2.033 ;
+use IO::Uncompress::Adapter::Bunzip2 2.033 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $Bunzip2Error = '';
 
 @ISA    = qw( Exporter IO::Uncompress::Base );
@@ -40,7 +40,7 @@ sub getExtraParams
 {
     my $self = shift ;
 
-    use IO::Compress::Base::Common 2.030 qw(:Parse);
+    use IO::Compress::Base::Common 2.033 qw(:Parse);
     
     return (
             'Verbosity'     => [1, 1, Parse_boolean,   0],
index 4b10f4b..94fd675 100644 (file)
@@ -9,12 +9,12 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Uncompress::RawInflate 2.030 ;
+use IO::Uncompress::RawInflate 2.033 ;
 
-use Compress::Raw::Zlib 2.030 qw( crc32 ) ;
-use IO::Compress::Base::Common 2.030 qw(:Status createSelfTiedObject);
-use IO::Compress::Gzip::Constants 2.030 ;
-use IO::Compress::Zlib::Extra 2.030 ;
+use Compress::Raw::Zlib 2.033 qw( crc32 ) ;
+use IO::Compress::Base::Common 2.033 qw(:Status createSelfTiedObject);
+use IO::Compress::Gzip::Constants 2.033 ;
+use IO::Compress::Zlib::Extra 2.033 ;
 
 require Exporter ;
 
@@ -28,7 +28,7 @@ Exporter::export_ok_tags('all');
 
 $GunzipError = '';
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 
 sub new
 {
@@ -47,7 +47,7 @@ sub gunzip
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.030 qw(:Parse);
+    use IO::Compress::Base::Common  2.033 qw(:Parse);
     return ( 'ParseExtra' => [1, 1, Parse_boolean,  0] ) ;
 }
 
@@ -507,8 +507,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any uncompressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all uncompressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all uncompressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -698,7 +698,7 @@ the module will allow reading of it anyway.
 
 In addition, if the input file/buffer does contain compressed data and
 there is non-compressed data immediately following it, setting this option
-will make this module treat the whole file/bufffer as a single data stream.
+will make this module treat the whole file/buffer as a single data stream.
 
 This option defaults to 1.
 
@@ -1104,7 +1104,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 27c1d85..a7b12fc 100644 (file)
@@ -5,15 +5,15 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Compress::Base::Common  2.030 qw(:Status createSelfTiedObject);
-use IO::Compress::Zlib::Constants 2.030 ;
+use IO::Compress::Base::Common  2.033 qw(:Status createSelfTiedObject);
+use IO::Compress::Zlib::Constants 2.033 ;
 
-use IO::Uncompress::RawInflate  2.030 ;
+use IO::Uncompress::RawInflate  2.033 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $InflateError = '';
 
 @ISA    = qw( Exporter IO::Uncompress::RawInflate );
@@ -428,8 +428,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any uncompressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all uncompressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all uncompressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -619,7 +619,7 @@ the module will allow reading of it anyway.
 
 In addition, if the input file/buffer does contain compressed data and
 there is non-compressed data immediately following it, setting this option
-will make this module treat the whole file/bufffer as a single data stream.
+will make this module treat the whole file/buffer as a single data stream.
 
 This option defaults to 1.
 
@@ -975,7 +975,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 12e915b..07d70e3 100644 (file)
@@ -5,16 +5,16 @@ use strict ;
 use warnings;
 use bytes;
 
-use Compress::Raw::Zlib  2.030 ;
-use IO::Compress::Base::Common  2.030 qw(:Status createSelfTiedObject);
+use Compress::Raw::Zlib  2.033 ;
+use IO::Compress::Base::Common  2.033 qw(:Status createSelfTiedObject);
 
-use IO::Uncompress::Base  2.030 ;
-use IO::Uncompress::Adapter::Inflate  2.030 ;
+use IO::Uncompress::Base  2.033 ;
+use IO::Uncompress::Adapter::Inflate  2.033 ;
 
 require Exporter ;
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $RawInflateError = '';
 
 @ISA    = qw( Exporter IO::Uncompress::Base );
@@ -576,8 +576,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any uncompressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all uncompressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all uncompressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -764,7 +764,7 @@ the module will allow reading of it anyway.
 
 In addition, if the input file/buffer does contain compressed data and
 there is non-compressed data immediately following it, setting this option
-will make this module treat the whole file/bufffer as a single data stream.
+will make this module treat the whole file/buffer as a single data stream.
 
 This option defaults to 1.
 
@@ -1103,7 +1103,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 fe75213..a678251 100644 (file)
@@ -8,14 +8,14 @@ use strict ;
 use warnings;
 use bytes;
 
-use IO::Uncompress::RawInflate  2.030 ;
-use IO::Compress::Base::Common  2.030 qw(:Status createSelfTiedObject);
-use IO::Uncompress::Adapter::Inflate  2.030 ;
-use IO::Uncompress::Adapter::Identity 2.030 ;
-use IO::Compress::Zlib::Extra 2.030 ;
-use IO::Compress::Zip::Constants 2.030 ;
+use IO::Uncompress::RawInflate  2.033 ;
+use IO::Compress::Base::Common  2.033 qw(:Status createSelfTiedObject);
+use IO::Uncompress::Adapter::Inflate  2.033 ;
+use IO::Uncompress::Adapter::Identity 2.033 ;
+use IO::Compress::Zlib::Extra 2.033 ;
+use IO::Compress::Zip::Constants 2.033 ;
 
-use Compress::Raw::Zlib  2.030 qw(crc32) ;
+use Compress::Raw::Zlib  2.033 qw(crc32) ;
 
 BEGIN
 {
@@ -30,7 +30,7 @@ require Exporter ;
 
 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
 
-$VERSION = '2.030';
+$VERSION = '2.033';
 $UnzipError = '';
 
 @ISA    = qw(Exporter IO::Uncompress::RawInflate);
@@ -63,7 +63,7 @@ sub unzip
 
 sub getExtraParams
 {
-    use IO::Compress::Base::Common  2.030 qw(:Parse);
+    use IO::Compress::Base::Common  2.033 qw(:Parse);
 
     
     return (
@@ -1009,8 +1009,8 @@ data to the output data stream.
 
 So when the output is a filehandle it will carry out a seek to the eof
 before writing any uncompressed data. If the output is a filename, it will be opened for
-appending. If the output is a buffer, all uncompressed data will be appened to
-the existing buffer.
+appending. If the output is a buffer, all uncompressed data will be
+appended to the existing buffer.
 
 Conversely when C<Append> is not specified, or it is present and is set to
 false, it will operate as follows.
@@ -1070,7 +1070,7 @@ file C<file1.txt> like this.
         or die "unzip failed: $UnzipError\n";
 
 If you have a zip file that contains multiple members and want to read a
-specific member from the file, say C<"data1">, use the C<Name> option
+specific member from the file, say C<"data1">, use the C<Name> option 
 
     use strict ;
     use warnings ;
@@ -1105,7 +1105,7 @@ uncompressed data to a buffer, C<$buffer>.
     my $input = new IO::File "<file1.zip"
         or die "Cannot open 'file1.zip': $!\n" ;
     my $buffer ;
-    unzip $input => \$buffer
+    unzip $input => \$buffer 
         or die "unzip failed: $UnzipError\n";
 
 =head1 OO Interface
@@ -1168,7 +1168,7 @@ OPTS is a combination of the following options:
 
 =item C<< Name => "membername" >>
 
-Open "membername" from the zip file for reading.
+Open "membername" from the zip file for reading. 
 
 =item C<< AutoClose => 0|1 >>
 
@@ -1206,7 +1206,7 @@ the module will allow reading of it anyway.
 
 In addition, if the input file/buffer does contain compressed data and
 there is non-compressed data immediately following it, setting this option
-will make this module treat the whole file/bufffer as a single data stream.
+will make this module treat the whole file/buffer as a single data stream.
 
 This option defaults to 1.
 
@@ -1530,7 +1530,7 @@ stream at a time.
     my $status;
     for ($status = 1; ! $u->eof(); $status = $u->nextStream())
     {
-
         my $name = $u->getHeaderInfo()->{Name};
         warn "Processing member $name\n" ;
 
@@ -1586,7 +1586,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 671148d..8848439 100644 (file)
@@ -335,7 +335,7 @@ To illustrate how to use C<InputLength> here is a script that walks a zip
 file and prints out how many lines are in each compressed file (if you
 intend write code to walking through a zip file for real see
 L<IO::Uncompress::Unzip/"Walking through a zip file"> ). Also, although
-this example uses the zlib-based comnpresion, the technique can be used by
+this example uses the zlib-based compression, the technique can be used by
 the other C<IO::Uncompress::*> modules.
 
     use strict;
@@ -507,7 +507,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2010 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2011 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 e98673b..e160228 100644 (file)
@@ -25,7 +25,7 @@ BEGIN
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
 
-    my $VERSION = '2.030';
+    my $VERSION = '2.033';
     my @NAMES = qw(
                        Compress::Raw::Bzip2
                        Compress::Raw::Zlib
index 210d499..0583fa9 100644 (file)
@@ -212,7 +212,7 @@ for my $value ( "0D", "0A", "0A0D", "0D0A", "0A0A", "0D0D")
     my $hdr = readHeaderInfo $name, -Level  => Z_BEST_SPEED;
 
     ok ! defined $hdr->{Name};
-    is $hdr->{ExtraFlags}, 2;
+    is $hdr->{ExtraFlags}, 4;
     ok ! defined $hdr->{ExtraFieldRaw} ;
     ok ! defined $hdr->{Comment} ;
     ok ! $hdr->{isMinimalHeader} ;
@@ -222,7 +222,7 @@ for my $value ( "0D", "0A", "0A0D", "0D0A", "0A0A", "0D0D")
     $hdr = readHeaderInfo $name, -Level  => Z_BEST_COMPRESSION;
 
     ok ! defined $hdr->{Name};
-    is $hdr->{ExtraFlags}, 4;
+    is $hdr->{ExtraFlags}, 2;
     ok ! defined $hdr->{ExtraFieldRaw} ;
     ok ! defined $hdr->{Comment} ;
     ok ! $hdr->{isMinimalHeader} ;
@@ -479,7 +479,7 @@ for my $value ( "0D", "0A", "0A0D", "0D0A", "0A0A", "0D0D")
 }
 
 {
-    # Check Minimal + no comressed data
+    # Check Minimal + no compressed data
     # This is the smallest possible gzip file (20 bytes)
 
     ok my $x = new IO::Compress::Gzip $name, -Minimal => 1;
index 85cfd37..7659d72 100644 (file)
@@ -19,7 +19,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 118 + $extra ;
+    plan tests => 112 + $extra ;
 
     use_ok('Scalar::Util');
     use_ok('IO::Compress::Base::Common');
@@ -86,9 +86,9 @@ sub My::testParseParameters()
     like $@, mkErr("Parameter 'Fred' not a scalar"), 
             "wanted scalar";
 
-#    eval { ParseParameters(1, {'Fred' => [1, 1, Parse_any, 0]}, Fred => 1, Fred => 2) ; };
-#    like $@, mkErr("Muliple instances of 'Fred' found"),
-#        "wanted scalar";
+    eval { ParseParameters(1, {'Fred' => [1, 1, Parse_any, 0]}, Fred => 1, Fred => 2) ; };
+    like $@, mkErr("Muliple instances of 'Fred' found"),
+        "multiple instances";
 
     my $g = ParseParameters(1, {'Fred' => [1, 1, Parse_unsigned|Parse_multiple, 7]}, Fred => 1, Fred => 2) ;
     is_deeply $g->value('Fred'), [ 1, 2 ] ;
@@ -133,23 +133,24 @@ sub My::testParseParameters()
         is $xx, 777;
     }
     
-    my $got2 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, '__xxx__' => $got) ;
-    isnt $got2, $got, "not the Same object";
-
-    ok $got2->parsed('Fred'), "parsed" ;
-    $xx_ref = $got2->value('Fred');
-    $$xx_ref = 888 ;
-    is $xx, 888;  
-      
-    my $other;
-    my $got3 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, '__xxx__' => $got, Fred => \$other) ;
-    isnt $got3, $got, "not the Same object";
-
-    ok $got3->parsed('Fred'), "parsed" ;
-    $xx_ref = $got3->value('Fred');
-    $$xx_ref = 999 ;
-    is $other, 999;  
-    is $xx, 888;  
+##    my $got2 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, '__xxx__' => $got) ;
+##    isnt $got2, $got, "not the Same object";
+##
+##    ok $got2->parsed('Fred'), "parsed" ;
+##    $xx_ref = $got2->value('Fred');
+##    $$xx_ref = 888 ;
+##    is $xx, 888;  
+##      
+##    my $other;
+##    my $got3 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, '__xxx__' => $got, Fred => \$other) ;
+##    isnt $got3, $got, "not the Same object";
+##
+##        exit;
+##    ok $got3->parsed('Fred'), "parsed" ;
+##    $xx_ref = $got3->value('Fred');
+##    $$xx_ref = 999 ;
+##    is $other, 999;  
+##    is $xx, 888;  
 }
 
 
index 7aba01d..795db75 100644 (file)
@@ -17,7 +17,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 912 + $extra;
+    plan tests => 3308 + $extra;
 
 };
 
index 2ae2b31..9928bf3 100644 (file)
@@ -17,7 +17,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 734 + $extra;
+    plan tests => 2552 + $extra;
 
 };
 
index 1e546b4..72b2fdd 100644 (file)
@@ -18,7 +18,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 978 + $extra;
+    plan tests => 3040 + $extra;
 
 };
 
index 0bc2c10..56285de 100644 (file)
@@ -18,7 +18,7 @@ BEGIN {
     $extra = 1
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
-    plan tests => 2404 + $extra;
+    plan tests => 7732 + $extra;
 
 };
 
index 54abab0..8bda69d 100644 (file)
@@ -347,7 +347,7 @@ EOM
               my $x ;
               my $uncomp ;
               my $stdinFileno = fileno(STDIN);
-              # open below doesn't return 1 sometines on XP
+              # open below doesn't return 1 sometimes on XP
                  open(SAVEIN, "<&STDIN");
               ok open(STDIN, "<$name"), "  redirect STDIN";
               my $dummy = fileno SAVEIN;
@@ -888,7 +888,7 @@ EOT
                 is $io->input_line_number, 2; 
                 ok $io->eof;
                 ok @lines == 2 
-                    or print "# exected 2 lines, got " . scalar(@lines) . "\n";
+                    or print "# expected 2 lines, got " . scalar(@lines) . "\n";
                 ok $lines[0] eq "This is an example\nof a paragraph\n\n\n"
                     or print "# [$lines[0]]\n" ;
                 ok $lines[1] eq "and a single line.\n\n";
index 80d42b7..4552e17 100644 (file)
@@ -369,7 +369,7 @@ EOT
                 my @lines = <$io>;
                 ok $io->eof;
                 ok @lines == 2 
-                    or print "# exected 2 lines, got " . scalar(@lines) . "\n";
+                    or print "# expected 2 lines, got " . scalar(@lines) . "\n";
                 ok $lines[0] eq "This is an example\nof a paragraph\n\n\n"
                     or print "# [$lines[0]]\n" ;
                 ok $lines[1] eq "and a single line.\n\n";
index 063355b..522dc70 100644 (file)
@@ -43,123 +43,246 @@ sub run
     ok 1, "Header size is $header_size" ;
     ok 1, "Trailer size is $trailer_size" ;
 
-    for my $trans ( 0 .. 1)
+    foreach my $fb ( qw( filehandle buffer ) )
     {
-        title "Truncating $CompressClass, Transparent $trans";
-
-
-        foreach my $i (1 .. $fingerprint_size-1)
+        for my $trans ( 0 .. 1)
         {
-            my $lex = new LexFile my $name ;
-        
-            title "Fingerprint Truncation - length $i, Transparent $trans";
-
-            my $part = substr($compressed, 0, $i);
-            writeFile($name, $part);
-
-            my $gz = new $UncompressClass $name,
-                                          -BlockSize   => $blocksize,
-                                          -Transparent => $trans;
-            if ($trans) {
-                ok $gz;
-                ok ! $gz->error() ;
-                my $buff ;
-                is $gz->read($buff, 5000), length($part) ;
-                ok $buff eq $part ;
-                ok $gz->eof() ;
-                $gz->close();
-            }
-            else {
-                ok !$gz;
-            }
+            title "Truncating $CompressClass, Source $fb, Transparent $trans";
 
-        }
 
-        #
-        # Any header corruption past the fingerprint is considered catastrophic
-        # so even if Transparent is set, it should still fail
-        #
-        foreach my $i ($fingerprint_size .. $header_size -1)
-        {
-            my $lex = new LexFile my $name ;
-        
-            title "Header Truncation - length $i, Transparent $trans";
+            foreach my $i (1 .. $fingerprint_size-1)
+            {
+                my $lex = new LexFile my $name ;
+                my $input;
+            
+                title "Fingerprint Truncation - length $i, Transparent $trans";
+
+                my $part = substr($compressed, 0, $i);
+                if ($fb eq 'filehandle')
+                {
+                    writeFile($name, $part);
+                    $input = $name ;
+                }
+                else
+                {
+                    $input = \$part;
+                }
 
-            my $part = substr($compressed, 0, $i);
-            writeFile($name, $part);
-            ok ! defined new $UncompressClass $name,
+                my $gz = new $UncompressClass $input,
                                               -BlockSize   => $blocksize,
                                               -Transparent => $trans;
-            #ok $gz->eof() ;
-        }
+                if ($trans) {
+                    ok $gz;
+                    ok ! $gz->error() ;
+                    my $buff ;
+                    is $gz->read($buff, 5000), length($part) ;
+                    ok $buff eq $part ;
+                    ok $gz->eof() ;
+                    $gz->close();
+                }
+                else {
+                    ok !$gz;
+                }
 
-        
-        foreach my $i ($header_size .. length($compressed) - 1 - $trailer_size)
-        {
-            next if $i == 0 ;
-
-            my $lex = new LexFile my $name ;
-        
-            title "Compressed Data Truncation - length $i, Transparent $trans";
-
-            my $part = substr($compressed, 0, $i);
-            writeFile($name, $part);
-            ok my $gz = new $UncompressClass $name,
-                                             -Strict      => 1,
-                                             -BlockSize   => $blocksize,
-                                             -Transparent => $trans
-                 or diag $$UnError;
-
-            my $un ;
-            my $status = 1 ;
-            $status = $gz->read($un) while $status > 0 ;
-            cmp_ok $status, "<", 0 ;
-            ok $gz->error() ;
-            ok $gz->eof() ;
-            $gz->close();
-        }
-        
-        # RawDeflate does not have a trailer
-        next if $CompressClass eq 'IO::Compress::RawDeflate' ;
+            }
 
-        title "Compressed Trailer Truncation";
-        foreach my $i (length($compressed) - $trailer_size .. length($compressed) -1 )
-        {
-            foreach my $lax (0, 1)
+            #
+            # Any header corruption past the fingerprint is considered catastrophic
+            # so even if Transparent is set, it should still fail
+            #
+            foreach my $i ($fingerprint_size .. $header_size -1)
             {
                 my $lex = new LexFile my $name ;
+                my $input;
             
-                ok 1, "Compressed Trailer Truncation - Length $i, Lax $lax, Transparent $trans" ;
+                title "Header Truncation - length $i, Source $fb, Transparent $trans";
+
                 my $part = substr($compressed, 0, $i);
-                writeFile($name, $part);
-                ok my $gz = new $UncompressClass $name,
-                                                 -BlockSize   => $blocksize,
-                                                 -Strict      => !$lax,
-                                                 -Append      => 1,   
-                                                 -Transparent => $trans;
-                my $un = '';
-                my $status = 1 ;
-                $status = $gz->read($un) while $status > 0 ;
-
-                if ($lax)
+                if ($fb eq 'filehandle')
                 {
-                    is $un, $hello;
-                    is $status, 0 
-                        or diag "Status $status Error is " . $gz->error() ;
-                    ok $gz->eof()
-                        or diag "Status $status Error is " . $gz->error() ;
-                    ok ! $gz->error() ;
+                    writeFile($name, $part);
+                    $input = $name ;
                 }
                 else
                 {
-                    cmp_ok $status, "<", 0 
-                        or diag "Status $status Error is " . $gz->error() ;
-                    ok $gz->eof()
-                        or diag "Status $status Error is " . $gz->error() ;
+                    $input = \$part;
+                }
+                
+                ok ! defined new $UncompressClass $input,
+                                                  -BlockSize   => $blocksize,
+                                                  -Transparent => $trans;
+                #ok $gz->eof() ;
+            }
+
+            # Test curruption 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)
+            {
+                my $lex = new LexFile my $name ;
+                my $input;
+            
+                for my $mode (qw(block line para record slurp))
+                {
+
+                    title "Corruption after header - Mode $mode, Source $fb, Transparent $trans";
+
+                    my $part = substr($compressed, 0, $header_size);
+                    # Append corrupt data
+                    $part .= "\xFF" x 100 ;
+                    if ($fb eq 'filehandle')
+                    {
+                        writeFile($name, $part);
+                        $input = $name ;
+                    }
+                    else
+                    {
+                        $input = \$part;
+                    }
+                    
+                    ok my $gz = new $UncompressClass $input,
+                                                     -Strict      => 1,
+                                                     -BlockSize   => $blocksize,
+                                                     -Transparent => $trans
+                         or diag $$UnError;
+
+                    my $un ;
+                    my $status = 1;
+                    if ($mode eq 'block')
+                    {
+                        $status = $gz->read($un) ;
+                        is $status, -1, "got -1";
+                    }
+                    else
+                    {
+                        if ($mode eq 'line')
+                        {
+                            $status = <$gz>;
+                        }
+                        elsif ($mode eq 'para')
+                        {
+                            local $/ = "\n\n";
+                            $status = <$gz>;
+                        }
+                        elsif ($mode eq 'record')
+                        {
+                            local $/ = \ 4;
+                            $status = <$gz>;
+                        }
+                        elsif ($mode eq 'slurp')
+                        {
+                            local $/ ;
+                            $status = <$gz>;
+                        }
+
+                        is $status, undef, "got undef";
+                    }
+
                     ok $gz->error() ;
+                    $gz->close();
                 }
+            }
+
+            # Back to truncation tests
+            
+            foreach my $i ($header_size .. length($compressed) - 1 - $trailer_size)
+            {
+                next if $i == 0 ;
+
+                my $lex = new LexFile my $name ;
+                my $input;
+            
+                for my $mode (qw(block line))
+                {
+
+                    title "Compressed Data Truncation - length $i, MOde $mode, Source $fb, Transparent $trans";
+
+                    my $part = substr($compressed, 0, $i);
+                    if ($fb eq 'filehandle')
+                    {
+                        writeFile($name, $part);
+                        $input = $name ;
+                    }
+                    else
+                    {
+                        $input = \$part;
+                    }
+                    
+                    ok my $gz = new $UncompressClass $input,
+                                                     -Strict      => 1,
+                                                     -BlockSize   => $blocksize,
+                                                     -Transparent => $trans
+                         or diag $$UnError;
+
+                    my $un ;
+                    if ($mode eq 'block')
+                    {
+                        my $status = 1 ;
+                        $status = $gz->read($un) while $status > 0 ;
+                        cmp_ok $status, "<", 0 ;
+                    }
+                    else
+                    {
+                        1 while <$gz> ;
+                    }
+                    ok $gz->error() ;
+                    ok $gz->eof() ;
+                    $gz->close();
+                }
+            }
+            
+            # RawDeflate does not have a trailer
+            next if $CompressClass eq 'IO::Compress::RawDeflate' ;
+
+            title "Compressed Trailer Truncation";
+            foreach my $i (length($compressed) - $trailer_size .. length($compressed) -1 )
+            {
+                foreach my $lax (0, 1)
+                {
+                    my $lex = new LexFile my $name ;
+                    my $input;
                 
-                $gz->close();
+                    ok 1, "Compressed Trailer Truncation - Length $i, Lax $lax, Transparent $trans" ;
+                    my $part = substr($compressed, 0, $i);
+                    if ($fb eq 'filehandle')
+                    {
+                        writeFile($name, $part);
+                        $input = $name ;
+                    }
+                    else
+                    {
+                        $input = \$part;
+                    }
+                    
+                    ok my $gz = new $UncompressClass $input,
+                                                     -BlockSize   => $blocksize,
+                                                     -Strict      => !$lax,
+                                                     -Append      => 1,   
+                                                     -Transparent => $trans;
+                    my $un = '';
+                    my $status = 1 ;
+                    $status = $gz->read($un) while $status > 0 ;
+
+                    if ($lax)
+                    {
+                        is $un, $hello;
+                        is $status, 0 
+                            or diag "Status $status Error is " . $gz->error() ;
+                        ok $gz->eof()
+                            or diag "Status $status Error is " . $gz->error() ;
+                        ok ! $gz->error() ;
+                    }
+                    else
+                    {
+                        cmp_ok $status, "<", 0 
+                            or diag "Status $status Error is " . $gz->error() ;
+                        ok $gz->eof()
+                            or diag "Status $status Error is " . $gz->error() ;
+                        ok $gz->error() ;
+                    }
+                    
+                    $gz->close();
+                }
             }
         }
     }
index cb9ff1f..677d141 100644 (file)
@@ -494,7 +494,7 @@ EOM
     ok ! defined $ungzip ;
     cmp_ok $gzerrno, "==", Z_DATA_ERROR ;
 
-    # corrupt header - reserverd bits used
+    # corrupt header - reserved bits used
     $bad = $keep ;
     substr($bad, 3, 1) = "\xFF" ;
     $ungzip = memGunzip(\$bad) ;
index fa05a9f..89b04ff 100644 (file)
@@ -249,7 +249,7 @@ EOM
 }
 
 {
-    title "a text file which is not termined by an EOL";
+    title "a text file which is not terminated by an EOL";
     
     my $lex = new LexFile my $name ;
     
index 001c932..706d58d 100644 (file)
@@ -174,6 +174,10 @@ C<File::Fetch> has been upgraded from version 0.28 to 0.30
 
 =item *
 
+C<IO::Compress> has been upgraded from version 2.030 to 2.033
+
+=item *
+
 C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
 
 =item *