summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes12
-rw-r--r--META.json2
-rw-r--r--META.yml2
-rw-r--r--Makefile.PL2
-rw-r--r--README6
-rwxr-xr-xbin/zipdetails200
-rw-r--r--debian/changelog6
-rw-r--r--lib/Compress/Zlib.pm10
-rw-r--r--lib/IO/Compress/Adapter/Bzip2.pm4
-rw-r--r--lib/IO/Compress/Adapter/Deflate.pm4
-rw-r--r--lib/IO/Compress/Adapter/Identity.pm4
-rw-r--r--lib/IO/Compress/Base.pm4
-rw-r--r--lib/IO/Compress/Base/Common.pm2
-rw-r--r--lib/IO/Compress/Bzip2.pm10
-rw-r--r--lib/IO/Compress/Deflate.pm10
-rw-r--r--lib/IO/Compress/Gzip.pm12
-rw-r--r--lib/IO/Compress/Gzip/Constants.pm2
-rw-r--r--lib/IO/Compress/RawDeflate.pm8
-rw-r--r--lib/IO/Compress/Zip.pm30
-rw-r--r--lib/IO/Compress/Zip/Constants.pm2
-rw-r--r--lib/IO/Compress/Zlib/Constants.pm2
-rw-r--r--lib/IO/Compress/Zlib/Extra.pm4
-rw-r--r--lib/IO/Uncompress/Adapter/Bunzip2.pm4
-rwxr-xr-xlib/IO/Uncompress/Adapter/Identity.pm4
-rw-r--r--lib/IO/Uncompress/Adapter/Inflate.pm4
-rw-r--r--lib/IO/Uncompress/AnyInflate.pm16
-rw-r--r--lib/IO/Uncompress/AnyUncompress.pm46
-rw-r--r--lib/IO/Uncompress/Base.pm4
-rw-r--r--lib/IO/Uncompress/Bunzip2.pm8
-rw-r--r--lib/IO/Uncompress/Gunzip.pm10
-rw-r--r--lib/IO/Uncompress/Inflate.pm8
-rwxr-xr-xlib/IO/Uncompress/RawInflate.pm8
-rw-r--r--lib/IO/Uncompress/Unzip.pm22
-rw-r--r--t/cz-14gzopen.t22
34 files changed, 281 insertions, 213 deletions
diff --git a/Changes b/Changes
index b9e0774..7f575a5 100644
--- a/Changes
+++ b/Changes
@@ -1,10 +1,20 @@
CHANGES
-------
+ 2.208 31 March 2024
+
+ * Update zipdetails to version 4.002
+ Sun Mar 31 11:52:11 2024 +0100
+ f6610e32bfd5459483a193ef80cebd7cdc6092dd
+
+ * #56 cz-14gzopen.t fails on AFS filesystem
+ Wed Mar 6 11:59:54 2024 +0000
+ 68dcf0aceeaec5491a61c8102968b3f004435ee8
+
2.207 18 February 2024
* Add bin/zipdetails 4.000
-
+
* Merge pull request #51 from rwp0/rwp0/fix-indirect-syntax
Thu Nov 23 12:17:30 2023 +0000
f1c70d0ef8ed7a91daae6a3ea6b10dc486db4463
diff --git a/META.json b/META.json
index f2ab69b..2c32a9a 100644
--- a/META.json
+++ b/META.json
@@ -54,6 +54,6 @@
"web" : "https://github.com/pmqs/IO-Compress"
}
},
- "version" : "2.207",
+ "version" : "2.208",
"x_serialization_backend" : "JSON::PP version 4.02"
}
diff --git a/META.yml b/META.yml
index 012b28a..aeb08dc 100644
--- a/META.yml
+++ b/META.yml
@@ -29,5 +29,5 @@ resources:
bugtracker: https://github.com/pmqs/IO-Compress/issues
homepage: https://github.com/pmqs/IO-Compress
repository: git://github.com/pmqs/IO-Compress.git
-version: '2.207'
+version: '2.208'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff --git a/Makefile.PL b/Makefile.PL
index cff08dd..7e10a01 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -3,7 +3,7 @@
use strict ;
require 5.006 ;
-$::VERSION = '2.207' ;
+$::VERSION = '2.208' ;
$::DEP_VERSION = '2.207';
use lib '.';
diff --git a/README b/README
index 1ad1d6e..5d2b579 100644
--- a/README
+++ b/README
@@ -1,9 +1,9 @@
IO-Compress
- Version 2.207
+ Version 2.208
- 18 February 2024
+ 31 March 2024
Copyright (c) 1995-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it
@@ -111,7 +111,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.207" ;
+ $VERSION = "2.208" ;
2. If you are having problems building IO-Compress, send me a
complete log of what happened. Start by unpacking the IO-Compress
diff --git a/bin/zipdetails b/bin/zipdetails
index 6b0aecd..f961253 100755
--- a/bin/zipdetails
+++ b/bin/zipdetails
@@ -29,7 +29,7 @@ use Encode;
use Getopt::Long;
use List::Util qw(min max);
-my $VERSION = '4.000' ;
+my $VERSION = '4.002' ;
sub fatal_tryWalk;
sub fatal_truncated ;
@@ -614,7 +614,7 @@ sub out
my $size = length($data) ;
- $ENDS_AT = offset($OFFSET + $size - 1) ;
+ $ENDS_AT = offset($OFFSET + ($size ? $size - 1 : 0)) ;
$OFF = prOff($size);
$LENGTH = offset($size) ;
$CONTENT = hexDump($data);
@@ -634,7 +634,7 @@ sub out0
my $text = shift;
my $format = shift;
- $ENDS_AT = offset($OFFSET + $size - 1) ;
+ $ENDS_AT = offset($OFFSET + ($size ? $size - 1 : 0)) ;
$OFF = prOff($size);
$LENGTH = offset($size) ;
$CONTENT = '...';
@@ -672,7 +672,7 @@ sub out2
my $format = shift;
my $size = length($data) ;
- $ENDS_AT = offset($OFFSET + $size - 1) ;
+ $ENDS_AT = offset($OFFSET + ($size ? $size - 1 : 0)) ;
$OFF = prOff($size);
$LENGTH = offset($size);
$CONTENT = hexDump($data);
@@ -1310,10 +1310,9 @@ else
# check for an APK header directly before the first central header
- if (Signatures::isCentralHeader($expectedSignature) && $START_APK && ! $processedAPK )
+ # Make sure not to miss a streaming data descriptor
+ if ($signature != ZIP_DATA_HDR_SIG && Signatures::isCentralHeader($expectedSignature) && $START_APK && ! $processedAPK )
{
- # my ($START_APK, $APK, $APK_LEN) = chckForAPKSigningBlock($FH, $here, 0) ;
-
seekTo($here+4);
# rewindRelative(4);
scanApkBlock();
@@ -1707,7 +1706,7 @@ sub dislayMessages
['extractVersion', 7, 'Extract Zip Spec', sub { decimalHex0xUndef($_[0]) . " " . decodeZipVer($_[0]) }, ],
['generalPurposeFlags', 8, 'General Purpose Flag', \&decimalHex0xUndef, ],
['compressedMethod', 10, 'Compression Method', sub { decimalHex0xUndef($_[0]) . " " . getcompressionMethodName($_[0]) }, ],
- ['lastModDateTime', 12, 'Last Mod Date/Time', sub { decimalHex0xUndef($_[0]) . " " . LastModTime($_[0]) }, ],
+ ['lastModDateTime', 12, 'Modification Time', sub { decimalHex0xUndef($_[0]) . " " . LastModTime($_[0]) }, ],
['crc32', 16, 'CRC32', \&decimalHex0xUndef, ],
['compressedSize', 20, 'Compressed Size', \&decimalHex0xUndef, ],
['uncompressedSize', 24, 'Uncompressed Size', \&decimalHex0xUndef, ],
@@ -1724,7 +1723,7 @@ sub dislayMessages
my $localValue = $localEntry->{$field} ;
my $centralValue = $centralEntry->{$field};
- if (($localValue // '-1') ne $centralValue)
+ if (($localValue // '-1') ne ($centralValue // '-2'))
{
if ($stringify)
{
@@ -2034,7 +2033,7 @@ sub LocalHeader
info $FH->tell() - 2, "Unknown 'Compression Method' ID " . decimalHex0x($compressedMethod, 2)
if ! defined $ZIP_CompressionMethods{$compressedMethod} ;
- my $lastMod = out_V "Last Mod Date/Time", sub { LastModTime($_[0]) };
+ my $lastMod = out_V "Modification Time", sub { LastModTime($_[0]) };
my $crc = out_V "CRC";
warning $FH->tell() - 4, "CRC field should be zero when streaming is enabled"
@@ -2165,12 +2164,17 @@ sub LocalHeader
{
error $FH->tell,
"file truncated while reading 'PAYLOAD'",
- "Expected " . decimalHex0x($CDcompressedSize) . " bytes, but only " . decimalHex0x($available) . " available" ;
+ expectedMessage($CDcompressedSize, $available);
$CDcompressedSize = $available;
}
}
+ # Next block can decrement the CDcompressedSize
+ # possiblty to zero. Need to remember if it started out
+ # as a non-zero value
+ my $haveCDcompressedSize = $CDcompressedSize;
+
if ($compressedMethod == 99 && $localEntry->aesValid) # AES Encryption
{
$CDcompressedSize -= printAes($localEntry)
@@ -2190,7 +2194,7 @@ sub LocalHeader
$CDcompressedSize -= DecryptionHeader();
}
- if ($CDcompressedSize) {
+ if ($haveCDcompressedSize) {
if ($compressedMethod == 92 && $CDcompressedSize == 20) {
# Payload for a Reference is the SHA-1 hash of the uncompressed content
@@ -2423,18 +2427,29 @@ sub validateFilename
# Portability (mostly with Windows)
- # see https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
- state $badDosFilename = join '|', map { quotemeta }
- qw(CON PRN AUX NUL
- COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 COM9
- LPT1 LPT2 LPT3 LPT4 LPT5 LPT6 LPT7 LPT8 LPT9
- ) ;
- return "Portability Issue: '$1' is a reserved Windows device name"
- if $filename =~ /^($badDosFilename)$/io ;
+ {
+ # see https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
+ state $badDosFilename = join '|', map { quotemeta }
+ qw(CON PRN AUX NUL
+ COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 COM9
+ LPT1 LPT2 LPT3 LPT4 LPT5 LPT6 LPT7 LPT8 LPT9
+ ) ;
+
+ # if $filename contains any invalid codepoints, we will get a warning like this
+ #
+ # Operation "pattern match (m//)" returns its argument for non-Unicode code point
+ #
+ # so silence it for now.
- # Can't have the device name with an extension either
- return "Portability Issue: '$1' is a reserved Windows device name"
- if $filename =~ /^($badDosFilename)\./io ;
+ no warnings;
+
+ return "Portability Issue: '$1' is a reserved Windows device name"
+ if $filename =~ /^($badDosFilename)$/io ;
+
+ # Can't have the device name with an extension either
+ return "Portability Issue: '$1' is a reserved Windows device name"
+ if $filename =~ /^($badDosFilename)\./io ;
+ }
state $illegal_windows_chars = join '|', map { quotemeta } qw( < > : " | ? * );
return "Portability Issue: Windows filename cannot contain '$1'"
@@ -2578,7 +2593,7 @@ sub CentralHeader
info $FH->tell() - 2, "Unknown 'Compression Method' ID " . decimalHex0x($compressedMethod, 2)
if ! defined $ZIP_CompressionMethods{$compressedMethod} ;
- my $lastMod = out_V "Last Mod Date/Time", sub { LastModTime($_[0]) };
+ my $lastMod = out_V "Modification Time", sub { LastModTime($_[0]) };
my $crc = out_V "CRC";
my $compressedSize = out_V "Compressed Size";
@@ -2777,6 +2792,9 @@ sub decodeZipVer
{
my $ver = shift ;
+ return ""
+ if ! defined $ver;
+
my $sHi = int($ver /10) ;
my $sLo = $ver % 10 ;
@@ -3019,7 +3037,7 @@ sub EndCentralHeader
{
error $here,
"file truncated while reading 'Comment' field in '" . Signatures::name($signature) . "'",
- "Expected " . decimalHex0x($comment_length) . " bytes, but only " . decimalHex0x($available) . " available" ;
+ expectedMessage($comment_length, $available);
$comment_length = $available;
}
@@ -3093,7 +3111,7 @@ sub DataDescriptor
# Ignore header payload if nested (assume 64-bit descriptor)
if (Nesting::isNested( $here - 4, $here - 4 + 24 - 1))
{
- out "", "Skipping nested payload";
+ out "", "Skipping Nested Payload";
return {};
}
@@ -3389,10 +3407,19 @@ sub myRead
}
my $len = length $$got;
- fatal undef, "Truncated file (got $len, wanted $wantSize): $!"
+ # fatal undef, "Truncated file (got $len, wanted $wantSize): $!"
+ fatal undef, "Unexpected zip file truncation",
+ expectedMessage($wantSize, $len)
if length $$got != $wantSize;
}
+sub expectedMessage
+{
+ my $expected = shift;
+ my $got = shift;
+ return "Expected " . decimalHex0x($expected) . " bytes, but only " . decimalHex0x($got) . " available"
+}
+
sub need
{
my $byteCount = shift ;
@@ -3408,14 +3435,16 @@ sub need
if ($field)
{
- push @message, "file truncated while reading '$field' field in '$message'";
+ push @message, "Unexpected zip file truncation while reading '$field' field in '$message'";
}
else
{
- push @message, "file truncated while reading '$message'";
+ push @message, "Unexpected zip file truncation while reading '$message'";
}
- push @message, sprintf("Expected 0x%X bytes, but only 0x%X available", $byteCount, $available);
+
+ push @message, expectedMessage($byteCount, $available);
+ # push @message, sprintf("Expected 0x%X bytes, but only 0x%X available", $byteCount, $available);
push @message, "Try running with --walk' or '--scan' options"
if ! $opt_scan && ! $opt_walk ;
@@ -3553,13 +3582,6 @@ sub checkOffsetValue
}
-sub fatal_truncated
-{
- my $message = shift;
- fatal_tryWalk(undef, "truncated file", $message, @_);
-
-}
-
sub fatal_tryWalk
{
my $offset = shift ;
@@ -4463,7 +4485,7 @@ sub _dosToUnixTime
or do
{
my $dosDecode = $year+1900 . sprintf "-%02u-%02u %02u:%02u:%02u", $mon, $mday, $hour, $min, $sec;
- warning $FH->tell(), "'Last Mod Date/Time' value " . decimalHex0x($dt, 4) . " decodes to '$dosDecode': not a valid DOS date/time" ;
+ warning $FH->tell(), "'Modification Time' value " . decimalHex0x($dt, 4) . " decodes to '$dosDecode': not a valid DOS date/time" ;
return undef
};
@@ -4496,9 +4518,9 @@ sub decode_UT
my $v = Value_C $flags;
my @f ;
- push @f, "mod" if $flags & 1;
- push @f, "access" if $flags & 2;
- push @f, "change" if $flags & 4;
+ push @f, "Modification" if $flags & 1;
+ push @f, "Access" if $flags & 2;
+ push @f, "Creation" if $flags & 4;
$v .= " '" . join(' ', @f) . "'"
if @f;
@@ -4513,27 +4535,27 @@ sub decode_UT
{
if ($remaining == 0 )
{
- # Central Dir only has mod time
- error $FH->tell(), extraFieldIdentifier($extraID) . ": Missing field 'Mod Time'" ;
+ # Central Dir only has Modification Time
+ error $FH->tell(), extraFieldIdentifier($extraID) . ": Missing field 'Modification Time'" ;
return;
}
else
{
- info $FH->tell(), extraFieldIdentifier($extraID) . ": Unexpected 'Mod Time' present"
+ info $FH->tell(), extraFieldIdentifier($extraID) . ": Unexpected 'Modification Time' present"
if ! ($flags & 1) ;
if ($remaining < 4)
{
outSomeData $remaining, " Extra Data";
error $FH->tell() - $remaining,
- extraFieldIdentifier($extraID) . ": Truncated reading 'Mod Time'",
- "Expected " . decimalHex0x(4) . " bytes, got " . decimalHex0x($remaining) . " bytes";
+ extraFieldIdentifier($extraID) . ": Truncated reading 'Modification Time'",
+ expectedMessage(4, $remaining);
return;
}
my ($data, $time) = read_V();
- out2 $data, "Mod Time", Value_V($time) . " " . getTime($time) ;
+ out2 $data, "Modification Time", Value_V($time) . " " . getTime($time) ;
$remaining -= 4 ;
}
@@ -4557,7 +4579,7 @@ sub decode_UT
outSomeData $remaining, " Extra Data";
error $FH->tell() - $remaining,
extraFieldIdentifier($extraID) . ": Truncated reading 'Access Time'" ,
- "Expected " . decimalHex0x(4) . " bytes, got " . decimalHex0x($remaining) . " bytes";
+ expectedMessage(4, $remaining);
return;
}
@@ -4573,11 +4595,11 @@ sub decode_UT
{
if ($remaining == 0 && $entry->inCentralDir)
{
- # Central Dir doesn't have change time
+ # Central Dir doesn't have creation time
}
else
{
- info $FH->tell(), extraFieldIdentifier($extraID) . ": Unexpected 'Change Time' present"
+ info $FH->tell(), extraFieldIdentifier($extraID) . ": Unexpected 'Creation Time' present"
if ! ($flags & 4) || $entry->inCentralDir ;
if ($remaining < 4)
@@ -4585,15 +4607,15 @@ sub decode_UT
outSomeData $remaining, " Extra Data";
error $FH->tell() - $remaining,
- extraFieldIdentifier($extraID) . ": Truncated reading 'Change Time'" ,
- "Expected " . decimalHex0x(4) . " bytes, got " . decimalHex0x($remaining) . " bytes";
+ extraFieldIdentifier($extraID) . ": Truncated reading 'Creation Time'" ,
+ expectedMessage(4, $remaining);
return;
}
my ($data, $time) = read_V();
- out2 $data, "Change Time", Value_V($time) . " " . getTime($time) ;
+ out2 $data, "Creation Time", Value_V($time) . " " . getTime($time) ;
}
}
}
@@ -4846,10 +4868,10 @@ sub decode_UX
return if $len == 0 ;
my ($data, $time) = read_V();
- out2 $data, "Access Time", Value_V($time) . " " . getTime($time) ;
+ out2 $data, "Access Time", Value_V($time) . " " . getTime($time) ;
($data, $time) = read_V();
- out2 $data, "Mod Time", Value_V($time) . " " . getTime($time) ;
+ out2 $data, "Modification Time", Value_V($time) . " " . getTime($time) ;
if (! $inCentralHdr ) {
out_v " UID" ;
@@ -4920,7 +4942,7 @@ sub decode_ux
outSomeData($available, " Bad Extra Data");
error $FH->tell() - $available,
extraFieldIdentifier($extraID) . ": truncated reading 'UID'",
- "Expected " . decimalHex0x($uidSize) . " bytes, got " . decimalHex0x($available) . " bytes";
+ expectedMessage($uidSize, $available);
return;
}
@@ -4933,7 +4955,7 @@ sub decode_ux
{
error $FH->tell(),
extraFieldIdentifier($extraID) . ": truncated reading 'GID Size'",
- "Expected " . decimalHex0x($uidSize) . " bytes, got " . decimalHex0x($available) . " bytes";
+ expectedMessage($uidSize, $available);
return ;
}
@@ -4946,7 +4968,7 @@ sub decode_ux
outSomeData($available, " Bad Extra Data");
error $FH->tell() - $available,
extraFieldIdentifier($extraID) . ": truncated reading 'GID'",
- "Expected " . decimalHex0x($gidSize) . " bytes, got " . decimalHex0x($available) . " bytes";
+ expectedMessage($gidSize, $available);
return;
}
@@ -5145,7 +5167,7 @@ sub decode_Xceed_unicode
error $FH->tell() - $remaining,
extraFieldIdentifier($extraID) . ": Truncated reading 'UTF16LE Filename'",
- "Expected " . decimalHex0x($filenameLength) . " bytes, got " . decimalHex0x($remaining) . " bytes";
+ expectedMessage($filenameLength, $remaining);
return undef;
}
@@ -5165,7 +5187,7 @@ sub decode_Xceed_unicode
error $FH->tell() - $remaining,
extraFieldIdentifier($extraID) . ": Truncated reading 'UTF16LE Comment'",
- "Expected " . decimalHex0x($filenameLength) . " bytes, got " . decimalHex0x($remaining) . " bytes";
+ expectedMessage($filenameLength, $remaining);
return undef;
}
@@ -5468,7 +5490,7 @@ sub chckForAPKSigningBlock
# APK Signing Block comes directy before the Central directory
# See https://source.android.com/security/apksigning/v2
- # If offset less than
+ # If offset available is less than 44, it isn't an APK signing block
#
# len1 8
# id 4
@@ -5488,13 +5510,16 @@ sub chckForAPKSigningBlock
return (0, 0, '')
if $buffer ne "APK Sig Block 42" ;
- # Step 2 - read the two length fields
- # and check they are identical
+ # Step 2 - read the second length field
+ # and check that it looks ok
$buffer = readFromOffset($cdOffset - 16 - 8, 8);
my $len2 = unpack("Q<", $buffer);
return (0, 0, '')
- if $len2 == 0 ;
+ if $len2 == 0 || $len2 > $FILELEN;
+
+ # Step 3 - read the first length field.
+ # It should be identical to the second one.
my $startApkOffset = $cdOffset - 8 - $len2 ;
@@ -5525,7 +5550,7 @@ sub scanApkBlock
print "\n";
out "", "APK SIGNING BLOCK";
- scanApkPadding('');
+ scanApkPadding();
out_Q "Block Length Copy #1";
my $ix = 1;
@@ -5553,22 +5578,23 @@ sub scanApkBlock
sub scanApkPadding
{
- my $bytes = shift ;
-
- # padding
my $here = $FH->tell();
- my $got;
- myRead($got, $APK - $here);
- $got = $bytes . $got;
- if ($got =~ /^(\x00+)($APK_LEN)?/)
+
+ return
+ if $here == $START_APK;
+
+ # found some padding
+
+ my $delta = $START_APK - $here;
+ my $padding = peekAtOffset($here, $delta);
+
+ if ($padding =~ /^\x00+$/)
{
- my $len = length $1 ;
- seekTo($here - length($bytes));
- outSomeData($len, "Null Padding");
+ outSomeData($delta, "Null Padding");
}
else
{
- seekTo($here);
+ outHexdump($delta, "Unexpected Padding");
}
}
@@ -5706,7 +5732,8 @@ sub offsetFromZip64
#### Zip64 end of central directory locator
# check enough bytes available for zip64 locator record
- fatal_truncated "Cannot find signature for " . Signatures::nameAndHex(ZIP64_END_CENTRAL_LOC_HDR_SIG) # 'Zip64 end of central directory locator': 0x07064b50"
+ fatal_tryWalk undef, "Cannot find signature for " . Signatures::nameAndHex(ZIP64_END_CENTRAL_LOC_HDR_SIG), # 'Zip64 end of central directory locator': 0x07064b50"
+ "Possible truncated or corrupt zip file"
if $here < ZIP64_END_CENTRAL_LOC_HDR_SIZE ;
$fh->seek($here - ZIP64_END_CENTRAL_LOC_HDR_SIZE, SEEK_SET) ;
@@ -5909,6 +5936,8 @@ sub findCentralDirectoryOffset
return (0, 0)
if $totalEntries == 0 && $entriesOnThisDisk == 0;
+ # APK Signing Block is directly before the first CD entry
+ # Check if it is present
($START_APK, $APK, $APK_LEN) = chckForAPKSigningBlock($fh, $centralDirOffset, ZIP_EOCD_MIN_SIZE + $commentLength);
return ($centralDirOffset, $centralDirSize) ;
@@ -6432,7 +6461,7 @@ sub nibbles
my $offset = shift ;
# TODO - what happens if none exists?
- my $entry = $self->{byLocalOffset}{$offset} ;
+ my $entry = $self->{byLocalOffset}{$offset - $PREFIX_DELTA} ;
return $entry ;
}
@@ -6442,7 +6471,7 @@ sub nibbles
my $offset = shift ;
# TODO - what happens if none exists?
- return $self->{byLocalOffset}{$offset} ;
+ return $self->{byLocalOffset}{$offset - $PREFIX_DELTA} ;
}
sub getNextLocalOffset
@@ -6942,8 +6971,9 @@ sub displayFileInfo
# TODO - check for badly formed content
if ($LanguageEncodingFlag && $opt_use_LanguageEncodingFlag)
{
- eval { $name = Encode::decode('utf8', $name, Encode::FB_CROAK ) } ;
- ::warning $FH->tell() - length $name, "Could not decode 'utf8' $type: " . cleanEval $@
+ # use "utf-8-strict" to catch invalid codepoints
+ eval { $name = Encode::decode('utf-8-strict', $name, Encode::FB_CROAK ) } ;
+ ::warning $FH->tell() - length $name, "Could not decode 'UTF-8' $type: " . cleanEval $@
if $@ ;
}
else
@@ -7618,7 +7648,7 @@ Running C<zipdetails> will gives this output
0006 General Purpose Flag 0000 (0)
[Bits 1-2] 0 'Normal Compression'
0008 Compression Method 0008 (8) 'Deflated'
- 000A Last Mod Date/Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
+ 000A Modification Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
000E CRC F90EE7FF (4178503679)
0012 Compressed Size 0000010E (270)
0016 Uncompressed Size 000001BE (446)
@@ -7635,7 +7665,7 @@ Running C<zipdetails> will gives this output
013D General Purpose Flag 0000 (0)
[Bits 1-2] 0 'Normal Compression'
013F Compression Method 0008 (8) 'Deflated'
- 0141 Last Mod Date/Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
+ 0141 Modification Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
0145 CRC F90EE7FF (4178503679)
0149 Compressed Size 0000010E (270)
014D Uncompressed Size 000001BE (446)
@@ -7710,7 +7740,7 @@ C<-v> option:
0006 0007 0002 00 00 General Purpose Flag 0000 (0)
[Bits 1-2] 0 'Normal Compression'
0008 0009 0002 08 00 Compression Method 0008 (8) 'Deflated'
- 000A 000D 0004 72 A0 76 56 Last Mod Date/Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
+ 000A 000D 0004 72 A0 76 56 Modification Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
000E 0011 0004 FF E7 0E F9 CRC F90EE7FF (4178503679)
0012 0015 0004 0E 01 00 00 Compressed Size 0000010E (270)
0016 0019 0004 BE 01 00 00 Uncompressed Size 000001BE (446)
@@ -7729,7 +7759,7 @@ C<-v> option:
013D 013E 0002 00 00 General Purpose Flag 0000 (0)
[Bits 1-2] 0 'Normal Compression'
013F 0140 0002 08 00 Compression Method 0008 (8) 'Deflated'
- 0141 0144 0004 72 A0 76 56 Last Mod Date/Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
+ 0141 0144 0004 72 A0 76 56 Modification Time 5676A072 (1450614898) 'Wed Mar 22 20:03:36 2023'
0145 0148 0004 FF E7 0E F9 CRC F90EE7FF (4178503679)
0149 014C 0004 0E 01 00 00 Compressed Size 0000010E (270)
014D 0150 0004 BE 01 00 00 Uncompressed Size 000001BE (446)
diff --git a/debian/changelog b/debian/changelog
index 63c2e7f..191858b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libio-compress-perl (2.208-1) unstable; urgency=medium
+
+ * Import upstream version 2.208.
+
+ -- gregor herrmann <gregoa@debian.org> Wed, 03 Apr 2024 18:29:31 +0200
+
libio-compress-perl (2.207-1) unstable; urgency=medium
* Import upstream version 2.207.
diff --git a/lib/Compress/Zlib.pm b/lib/Compress/Zlib.pm
index 747c992..fab6c8d 100644
--- a/lib/Compress/Zlib.pm
+++ b/lib/Compress/Zlib.pm
@@ -7,17 +7,17 @@ use Carp ;
use IO::Handle ;
use Scalar::Util qw(dualvar);
-use IO::Compress::Base::Common 2.207 ;
+use IO::Compress::Base::Common 2.208 ;
use Compress::Raw::Zlib 2.207 ;
-use IO::Compress::Gzip 2.207 ;
-use IO::Uncompress::Gunzip 2.207 ;
+use IO::Compress::Gzip 2.208 ;
+use IO::Uncompress::Gunzip 2.208 ;
use strict ;
use warnings ;
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.207';
+$VERSION = '2.208';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -461,7 +461,7 @@ sub inflate
package Compress::Zlib ;
-use IO::Compress::Gzip::Constants 2.207 ;
+use IO::Compress::Gzip::Constants 2.208 ;
sub memGzip($)
{
diff --git a/lib/IO/Compress/Adapter/Bzip2.pm b/lib/IO/Compress/Adapter/Bzip2.pm
index b34dcd5..10d1949 100644
--- a/lib/IO/Compress/Adapter/Bzip2.pm
+++ b/lib/IO/Compress/Adapter/Bzip2.pm
@@ -4,12 +4,12 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status);
+use IO::Compress::Base::Common 2.208 qw(:Status);
use Compress::Raw::Bzip2 2.207 ;
our ($VERSION);
-$VERSION = '2.207';
+$VERSION = '2.208';
sub mkCompObject
{
diff --git a/lib/IO/Compress/Adapter/Deflate.pm b/lib/IO/Compress/Adapter/Deflate.pm
index 167034d..76b3ba3 100644
--- a/lib/IO/Compress/Adapter/Deflate.pm
+++ b/lib/IO/Compress/Adapter/Deflate.pm
@@ -4,13 +4,13 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status);
+use IO::Compress::Base::Common 2.208 qw(:Status);
use Compress::Raw::Zlib 2.207 qw( !crc32 !adler32 ) ;
require Exporter;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS);
-$VERSION = '2.207';
+$VERSION = '2.208';
@ISA = qw(Exporter);
@EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS;
%EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS;
diff --git a/lib/IO/Compress/Adapter/Identity.pm b/lib/IO/Compress/Adapter/Identity.pm
index 5f7abef..4760e0d 100644
--- a/lib/IO/Compress/Adapter/Identity.pm
+++ b/lib/IO/Compress/Adapter/Identity.pm
@@ -4,10 +4,10 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status);
+use IO::Compress::Base::Common 2.208 qw(:Status);
our ($VERSION);
-$VERSION = '2.207';
+$VERSION = '2.208';
sub mkCompObject
{
diff --git a/lib/IO/Compress/Base.pm b/lib/IO/Compress/Base.pm
index 005e4ab..2212d39 100644
--- a/lib/IO/Compress/Base.pm
+++ b/lib/IO/Compress/Base.pm
@@ -6,7 +6,7 @@ require 5.006 ;
use strict ;
use warnings;
-use IO::Compress::Base::Common 2.207 ;
+use IO::Compress::Base::Common 2.208 ;
use IO::File (); ;
use Scalar::Util ();
@@ -20,7 +20,7 @@ use Symbol();
our (@ISA, $VERSION);
@ISA = qw(IO::File Exporter);
-$VERSION = '2.207';
+$VERSION = '2.208';
#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.
diff --git a/lib/IO/Compress/Base/Common.pm b/lib/IO/Compress/Base/Common.pm
index 0c0850d..11c8f20 100644
--- a/lib/IO/Compress/Base/Common.pm
+++ b/lib/IO/Compress/Base/Common.pm
@@ -11,7 +11,7 @@ use File::GlobMapper;
require Exporter;
our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
@ISA = qw(Exporter);
-$VERSION = '2.207';
+$VERSION = '2.208';
@EXPORT = qw( isaFilehandle isaFilename isaScalar
whatIsInput whatIsOutput
diff --git a/lib/IO/Compress/Bzip2.pm b/lib/IO/Compress/Bzip2.pm
index c4c580a..32d556b 100644
--- a/lib/IO/Compress/Bzip2.pm
+++ b/lib/IO/Compress/Bzip2.pm
@@ -5,16 +5,16 @@ use warnings;
use bytes;
require Exporter ;
-use IO::Compress::Base 2.207 ;
+use IO::Compress::Base 2.208 ;
-use IO::Compress::Base::Common 2.207 qw();
-use IO::Compress::Adapter::Bzip2 2.207 ;
+use IO::Compress::Base::Common 2.208 qw();
+use IO::Compress::Adapter::Bzip2 2.208 ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error);
-$VERSION = '2.207';
+$VERSION = '2.208';
$Bzip2Error = '';
@ISA = qw(IO::Compress::Base Exporter);
@@ -51,7 +51,7 @@ sub getExtraParams
{
my $self = shift ;
- use IO::Compress::Base::Common 2.207 qw(:Parse);
+ use IO::Compress::Base::Common 2.208 qw(:Parse);
return (
'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned, 1],
diff --git a/lib/IO/Compress/Deflate.pm b/lib/IO/Compress/Deflate.pm
index 96592f0..c4f56c2 100644
--- a/lib/IO/Compress/Deflate.pm
+++ b/lib/IO/Compress/Deflate.pm
@@ -8,16 +8,16 @@ use bytes;
require Exporter ;
-use IO::Compress::RawDeflate 2.207 ();
-use IO::Compress::Adapter::Deflate 2.207 ;
+use IO::Compress::RawDeflate 2.208 ();
+use IO::Compress::Adapter::Deflate 2.208 ;
-use IO::Compress::Zlib::Constants 2.207 ;
-use IO::Compress::Base::Common 2.207 qw();
+use IO::Compress::Zlib::Constants 2.208 ;
+use IO::Compress::Base::Common 2.208 qw();
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$DeflateError = '';
@ISA = qw(IO::Compress::RawDeflate Exporter);
diff --git a/lib/IO/Compress/Gzip.pm b/lib/IO/Compress/Gzip.pm
index 4cc8277..6ec9558 100644
--- a/lib/IO/Compress/Gzip.pm
+++ b/lib/IO/Compress/Gzip.pm
@@ -8,12 +8,12 @@ use bytes;
require Exporter ;
-use IO::Compress::RawDeflate 2.207 () ;
-use IO::Compress::Adapter::Deflate 2.207 ;
+use IO::Compress::RawDeflate 2.208 () ;
+use IO::Compress::Adapter::Deflate 2.208 ;
-use IO::Compress::Base::Common 2.207 qw(:Status );
-use IO::Compress::Gzip::Constants 2.207 ;
-use IO::Compress::Zlib::Extra 2.207 ;
+use IO::Compress::Base::Common 2.208 qw(:Status );
+use IO::Compress::Gzip::Constants 2.208 ;
+use IO::Compress::Zlib::Extra 2.208 ;
BEGIN
{
@@ -25,7 +25,7 @@ BEGIN
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$GzipError = '' ;
@ISA = qw(IO::Compress::RawDeflate Exporter);
diff --git a/lib/IO/Compress/Gzip/Constants.pm b/lib/IO/Compress/Gzip/Constants.pm
index d529f55..be38b3a 100644
--- a/lib/IO/Compress/Gzip/Constants.pm
+++ b/lib/IO/Compress/Gzip/Constants.pm
@@ -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.207';
+$VERSION = '2.208';
@ISA = qw(Exporter);
diff --git a/lib/IO/Compress/RawDeflate.pm b/lib/IO/Compress/RawDeflate.pm
index 39c1093..7d39369 100644
--- a/lib/IO/Compress/RawDeflate.pm
+++ b/lib/IO/Compress/RawDeflate.pm
@@ -6,16 +6,16 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base 2.207 ;
-use IO::Compress::Base::Common 2.207 qw(:Status :Parse);
-use IO::Compress::Adapter::Deflate 2.207 ;
+use IO::Compress::Base 2.208 ;
+use IO::Compress::Base::Common 2.208 qw(:Status :Parse);
+use IO::Compress::Adapter::Deflate 2.208 ;
use Compress::Raw::Zlib 2.207 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$RawDeflateError = '';
@ISA = qw(IO::Compress::Base Exporter);
diff --git a/lib/IO/Compress/Zip.pm b/lib/IO/Compress/Zip.pm
index 6d6c2db..560b8ed 100644
--- a/lib/IO/Compress/Zip.pm
+++ b/lib/IO/Compress/Zip.pm
@@ -4,12 +4,12 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status );
-use IO::Compress::RawDeflate 2.207 ();
-use IO::Compress::Adapter::Deflate 2.207 ;
-use IO::Compress::Adapter::Identity 2.207 ;
-use IO::Compress::Zlib::Extra 2.207 ;
-use IO::Compress::Zip::Constants 2.207 ;
+use IO::Compress::Base::Common 2.208 qw(:Status );
+use IO::Compress::RawDeflate 2.208 ();
+use IO::Compress::Adapter::Deflate 2.208 ;
+use IO::Compress::Adapter::Identity 2.208 ;
+use IO::Compress::Zlib::Extra 2.208 ;
+use IO::Compress::Zip::Constants 2.208 ;
use File::Spec();
use Config;
@@ -19,26 +19,26 @@ use Compress::Raw::Zlib 2.207 ();
BEGIN
{
eval { require IO::Compress::Adapter::Bzip2 ;
- IO::Compress::Adapter::Bzip2->VERSION( 2.207 );
+ IO::Compress::Adapter::Bzip2->VERSION( 2.208 );
require IO::Compress::Bzip2 ;
- IO::Compress::Bzip2->VERSION( 2.207 );
+ IO::Compress::Bzip2->VERSION( 2.208 );
} ;
eval { require IO::Compress::Adapter::Lzma ;
- IO::Compress::Adapter::Lzma->VERSION( 2.207 );
+ IO::Compress::Adapter::Lzma->VERSION( 2.208 );
require IO::Compress::Lzma ;
- IO::Compress::Lzma->VERSION( 2.207 );
+ IO::Compress::Lzma->VERSION( 2.208 );
} ;
eval { require IO::Compress::Adapter::Xz ;
- IO::Compress::Adapter::Xz->VERSION( 2.207 );
+ IO::Compress::Adapter::Xz->VERSION( 2.208 );
require IO::Compress::Xz ;
- IO::Compress::Xz->VERSION( 2.207 );
+ IO::Compress::Xz->VERSION( 2.208 );
} ;
eval { require IO::Compress::Adapter::Zstd ;
- IO::Compress::Adapter::Zstd->VERSION( 2.207 );
+ IO::Compress::Adapter::Zstd->VERSION( 2.208 );
require IO::Compress::Zstd ;
- IO::Compress::Zstd->VERSION( 2.207 );
+ IO::Compress::Zstd->VERSION( 2.208 );
} ;
}
@@ -47,7 +47,7 @@ require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$ZipError = '';
@ISA = qw(IO::Compress::RawDeflate Exporter);
diff --git a/lib/IO/Compress/Zip/Constants.pm b/lib/IO/Compress/Zip/Constants.pm
index de9e751..c10a2ef 100644
--- a/lib/IO/Compress/Zip/Constants.pm
+++ b/lib/IO/Compress/Zip/Constants.pm
@@ -7,7 +7,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
-$VERSION = '2.207';
+$VERSION = '2.208';
@ISA = qw(Exporter);
diff --git a/lib/IO/Compress/Zlib/Constants.pm b/lib/IO/Compress/Zlib/Constants.pm
index cb0676b..559468d 100644
--- a/lib/IO/Compress/Zlib/Constants.pm
+++ b/lib/IO/Compress/Zlib/Constants.pm
@@ -9,7 +9,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT);
-$VERSION = '2.207';
+$VERSION = '2.208';
@ISA = qw(Exporter);
diff --git a/lib/IO/Compress/Zlib/Extra.pm b/lib/IO/Compress/Zlib/Extra.pm
index 3821acc..722bc3d 100644
--- a/lib/IO/Compress/Zlib/Extra.pm
+++ b/lib/IO/Compress/Zlib/Extra.pm
@@ -8,9 +8,9 @@ use bytes;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.207';
+$VERSION = '2.208';
-use IO::Compress::Gzip::Constants 2.207 ;
+use IO::Compress::Gzip::Constants 2.208 ;
sub ExtraFieldError
{
diff --git a/lib/IO/Uncompress/Adapter/Bunzip2.pm b/lib/IO/Uncompress/Adapter/Bunzip2.pm
index 88385c6..24f3cf3 100644
--- a/lib/IO/Uncompress/Adapter/Bunzip2.pm
+++ b/lib/IO/Uncompress/Adapter/Bunzip2.pm
@@ -4,12 +4,12 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status);
+use IO::Compress::Base::Common 2.208 qw(:Status);
use Compress::Raw::Bzip2 2.207 ;
our ($VERSION, @ISA);
-$VERSION = '2.207';
+$VERSION = '2.208';
sub mkUncompObject
{
diff --git a/lib/IO/Uncompress/Adapter/Identity.pm b/lib/IO/Uncompress/Adapter/Identity.pm
index 6673b58..4bb9716 100755
--- a/lib/IO/Uncompress/Adapter/Identity.pm
+++ b/lib/IO/Uncompress/Adapter/Identity.pm
@@ -4,12 +4,12 @@ use warnings;
use strict;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status);
+use IO::Compress::Base::Common 2.208 qw(:Status);
use IO::Compress::Zip::Constants ;
our ($VERSION);
-$VERSION = '2.207';
+$VERSION = '2.208';
use Compress::Raw::Zlib 2.207 ();
diff --git a/lib/IO/Uncompress/Adapter/Inflate.pm b/lib/IO/Uncompress/Adapter/Inflate.pm
index e704bf6..0b3b79d 100644
--- a/lib/IO/Uncompress/Adapter/Inflate.pm
+++ b/lib/IO/Uncompress/Adapter/Inflate.pm
@@ -4,11 +4,11 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status);
+use IO::Compress::Base::Common 2.208 qw(:Status);
use Compress::Raw::Zlib 2.207 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
our ($VERSION);
-$VERSION = '2.207';
+$VERSION = '2.208';
diff --git a/lib/IO/Uncompress/AnyInflate.pm b/lib/IO/Uncompress/AnyInflate.pm
index 39a4490..44635d3 100644
--- a/lib/IO/Uncompress/AnyInflate.pm
+++ b/lib/IO/Uncompress/AnyInflate.pm
@@ -6,22 +6,22 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Parse);
+use IO::Compress::Base::Common 2.208 qw(:Parse);
-use IO::Uncompress::Adapter::Inflate 2.207 ();
+use IO::Uncompress::Adapter::Inflate 2.208 ();
-use IO::Uncompress::Base 2.207 ;
-use IO::Uncompress::Gunzip 2.207 ;
-use IO::Uncompress::Inflate 2.207 ;
-use IO::Uncompress::RawInflate 2.207 ;
-use IO::Uncompress::Unzip 2.207 ;
+use IO::Uncompress::Base 2.208 ;
+use IO::Uncompress::Gunzip 2.208 ;
+use IO::Uncompress::Inflate 2.208 ;
+use IO::Uncompress::RawInflate 2.208 ;
+use IO::Uncompress::Unzip 2.208 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$AnyInflateError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
diff --git a/lib/IO/Uncompress/AnyUncompress.pm b/lib/IO/Uncompress/AnyUncompress.pm
index 55b6c64..ad26232 100644
--- a/lib/IO/Uncompress/AnyUncompress.pm
+++ b/lib/IO/Uncompress/AnyUncompress.pm
@@ -4,16 +4,16 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 ();
+use IO::Compress::Base::Common 2.208 ();
-use IO::Uncompress::Base 2.207 ;
+use IO::Uncompress::Base 2.208 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$AnyUncompressError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -33,26 +33,26 @@ BEGIN
# Don't trigger any __DIE__ Hooks.
local $SIG{__DIE__};
- eval ' use IO::Uncompress::Adapter::Inflate 2.207 ;';
- eval ' use IO::Uncompress::Adapter::Bunzip2 2.207 ;';
- eval ' use IO::Uncompress::Adapter::LZO 2.207 ;';
- eval ' use IO::Uncompress::Adapter::Lzf 2.207 ;';
- eval ' use IO::Uncompress::Adapter::UnLzma 2.207 ;';
- eval ' use IO::Uncompress::Adapter::UnXz 2.207 ;';
- eval ' use IO::Uncompress::Adapter::UnZstd 2.207 ;';
- eval ' use IO::Uncompress::Adapter::UnLzip 2.207 ;';
-
- eval ' use IO::Uncompress::Bunzip2 2.207 ;';
- eval ' use IO::Uncompress::UnLzop 2.207 ;';
- eval ' use IO::Uncompress::Gunzip 2.207 ;';
- eval ' use IO::Uncompress::Inflate 2.207 ;';
- eval ' use IO::Uncompress::RawInflate 2.207 ;';
- eval ' use IO::Uncompress::Unzip 2.207 ;';
- eval ' use IO::Uncompress::UnLzf 2.207 ;';
- eval ' use IO::Uncompress::UnLzma 2.207 ;';
- eval ' use IO::Uncompress::UnXz 2.207 ;';
- eval ' use IO::Uncompress::UnZstd 2.207 ;';
- eval ' use IO::Uncompress::UnLzip 2.207 ;';
+ eval ' use IO::Uncompress::Adapter::Inflate 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::Bunzip2 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::LZO 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::Lzf 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzma 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::UnXz 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::UnZstd 2.208 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzip 2.208 ;';
+
+ eval ' use IO::Uncompress::Bunzip2 2.208 ;';
+ eval ' use IO::Uncompress::UnLzop 2.208 ;';
+ eval ' use IO::Uncompress::Gunzip 2.208 ;';
+ eval ' use IO::Uncompress::Inflate 2.208 ;';
+ eval ' use IO::Uncompress::RawInflate 2.208 ;';
+ eval ' use IO::Uncompress::Unzip 2.208 ;';
+ eval ' use IO::Uncompress::UnLzf 2.208 ;';
+ eval ' use IO::Uncompress::UnLzma 2.208 ;';
+ eval ' use IO::Uncompress::UnXz 2.208 ;';
+ eval ' use IO::Uncompress::UnZstd 2.208 ;';
+ eval ' use IO::Uncompress::UnLzip 2.208 ;';
}
diff --git a/lib/IO/Uncompress/Base.pm b/lib/IO/Uncompress/Base.pm
index 60b9c6f..ab5a02a 100644
--- a/lib/IO/Uncompress/Base.pm
+++ b/lib/IO/Uncompress/Base.pm
@@ -9,12 +9,12 @@ our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
@ISA = qw(IO::File Exporter);
-$VERSION = '2.207';
+$VERSION = '2.208';
use constant G_EOF => 0 ;
use constant G_ERR => -1 ;
-use IO::Compress::Base::Common 2.207 ;
+use IO::Compress::Base::Common 2.208 ;
use IO::File ;
use Symbol;
diff --git a/lib/IO/Uncompress/Bunzip2.pm b/lib/IO/Uncompress/Bunzip2.pm
index 1e942d3..76bf265 100644
--- a/lib/IO/Uncompress/Bunzip2.pm
+++ b/lib/IO/Uncompress/Bunzip2.pm
@@ -4,15 +4,15 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status );
+use IO::Compress::Base::Common 2.208 qw(:Status );
-use IO::Uncompress::Base 2.207 ;
-use IO::Uncompress::Adapter::Bunzip2 2.207 ;
+use IO::Uncompress::Base 2.208 ;
+use IO::Uncompress::Adapter::Bunzip2 2.208 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error);
-$VERSION = '2.207';
+$VERSION = '2.208';
$Bunzip2Error = '';
@ISA = qw(IO::Uncompress::Base Exporter);
diff --git a/lib/IO/Uncompress/Gunzip.pm b/lib/IO/Uncompress/Gunzip.pm
index 4d46eef..d8ec0cf 100644
--- a/lib/IO/Uncompress/Gunzip.pm
+++ b/lib/IO/Uncompress/Gunzip.pm
@@ -9,12 +9,12 @@ use strict ;
use warnings;
use bytes;
-use IO::Uncompress::RawInflate 2.207 ;
+use IO::Uncompress::RawInflate 2.208 ;
use Compress::Raw::Zlib 2.207 () ;
-use IO::Compress::Base::Common 2.207 qw(:Status );
-use IO::Compress::Gzip::Constants 2.207 ;
-use IO::Compress::Zlib::Extra 2.207 ;
+use IO::Compress::Base::Common 2.208 qw(:Status );
+use IO::Compress::Gzip::Constants 2.208 ;
+use IO::Compress::Zlib::Extra 2.208 ;
require Exporter ;
@@ -28,7 +28,7 @@ Exporter::export_ok_tags('all');
$GunzipError = '';
-$VERSION = '2.207';
+$VERSION = '2.208';
sub new
{
diff --git a/lib/IO/Uncompress/Inflate.pm b/lib/IO/Uncompress/Inflate.pm
index c6a1c2b..f560a17 100644
--- a/lib/IO/Uncompress/Inflate.pm
+++ b/lib/IO/Uncompress/Inflate.pm
@@ -5,15 +5,15 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.207 qw(:Status );
-use IO::Compress::Zlib::Constants 2.207 ;
+use IO::Compress::Base::Common 2.208 qw(:Status );
+use IO::Compress::Zlib::Constants 2.208 ;
-use IO::Uncompress::RawInflate 2.207 ;
+use IO::Uncompress::RawInflate 2.208 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$InflateError = '';
@ISA = qw(IO::Uncompress::RawInflate Exporter);
diff --git a/lib/IO/Uncompress/RawInflate.pm b/lib/IO/Uncompress/RawInflate.pm
index 64cb5ae..bb0b9cd 100755
--- a/lib/IO/Uncompress/RawInflate.pm
+++ b/lib/IO/Uncompress/RawInflate.pm
@@ -6,15 +6,15 @@ use warnings;
use bytes;
use Compress::Raw::Zlib 2.207 ;
-use IO::Compress::Base::Common 2.207 qw(:Status );
+use IO::Compress::Base::Common 2.208 qw(:Status );
-use IO::Uncompress::Base 2.207 ;
-use IO::Uncompress::Adapter::Inflate 2.207 ;
+use IO::Uncompress::Base 2.208 ;
+use IO::Uncompress::Adapter::Inflate 2.208 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
-$VERSION = '2.207';
+$VERSION = '2.208';
$RawInflateError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
diff --git a/lib/IO/Uncompress/Unzip.pm b/lib/IO/Uncompress/Unzip.pm
index 3a6905b..70c6b09 100644
--- a/lib/IO/Uncompress/Unzip.pm
+++ b/lib/IO/Uncompress/Unzip.pm
@@ -9,12 +9,12 @@ use warnings;
use bytes;
use IO::File;
-use IO::Uncompress::RawInflate 2.207 ;
-use IO::Compress::Base::Common 2.207 qw(:Status );
-use IO::Uncompress::Adapter::Inflate 2.207 ;
-use IO::Uncompress::Adapter::Identity 2.207 ;
-use IO::Compress::Zlib::Extra 2.207 ;
-use IO::Compress::Zip::Constants 2.207 ;
+use IO::Uncompress::RawInflate 2.208 ;
+use IO::Compress::Base::Common 2.208 qw(:Status );
+use IO::Uncompress::Adapter::Inflate 2.208 ;
+use IO::Uncompress::Adapter::Identity 2.208 ;
+use IO::Compress::Zlib::Extra 2.208 ;
+use IO::Compress::Zip::Constants 2.208 ;
use Compress::Raw::Zlib 2.207 () ;
@@ -24,13 +24,13 @@ BEGIN
local $SIG{__DIE__};
eval{ require IO::Uncompress::Adapter::Bunzip2 ;
- IO::Uncompress::Adapter::Bunzip2->VERSION(2.207) } ;
+ IO::Uncompress::Adapter::Bunzip2->VERSION(2.208) } ;
eval{ require IO::Uncompress::Adapter::UnLzma ;
- IO::Uncompress::Adapter::UnLzma->VERSION(2.207) } ;
+ IO::Uncompress::Adapter::UnLzma->VERSION(2.208) } ;
eval{ require IO::Uncompress::Adapter::UnXz ;
- IO::Uncompress::Adapter::UnXz->VERSION(2.207) } ;
+ IO::Uncompress::Adapter::UnXz->VERSION(2.208) } ;
eval{ require IO::Uncompress::Adapter::UnZstd ;
- IO::Uncompress::Adapter::UnZstd->VERSION(2.207) } ;
+ IO::Uncompress::Adapter::UnZstd->VERSION(2.208) } ;
}
@@ -38,7 +38,7 @@ require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
-$VERSION = '2.207';
+$VERSION = '2.208';
$UnzipError = '';
@ISA = qw(IO::Uncompress::RawInflate Exporter);
diff --git a/t/cz-14gzopen.t b/t/cz-14gzopen.t
index a07fe10..6d4e201 100644
--- a/t/cz-14gzopen.t
+++ b/t/cz-14gzopen.t
@@ -500,6 +500,17 @@ foreach my $stdio ( ['-', '-'], [*STDIN, *STDOUT])
skip "Cannot create non-writable file", 3
if -w $name ;
+ # double check non-writable for AFS
+ my $written = do {
+ no warnings;
+ my $fh;
+ open $fh, '>', $name &&
+ print $fh "hello world"
+ };
+
+ skip "Cannot create non-writable file", 3
+ if $written ;
+
ok ! -w $name, " input file not writable";
my $fil = gzopen($name, "wb") ;
@@ -522,6 +533,17 @@ foreach my $stdio ( ['-', '-'], [*STDIN, *STDOUT])
skip "Cannot create non-readable file", 3
if -r $name ;
+ # double check non-readable for AFS
+ my $readable = do {
+ no warnings;
+ my $fh;
+ open $fh, '<', $name &&
+ read $fh, my $data, 1
+ };
+
+ skip "Cannot create non-writable file", 3
+ if $readable ;
+
ok ! -r $name, " input file not readable";
$gzerrno = 0;
my $fil = gzopen($name, "rb") ;