Front page | perl.perl5.changes |
Postings from October 2008
Change 34486: [PATCH] Update Archive::Tar to 1.40
From:
Steve Peters
Date:
October 15, 2008 07:00
Subject:
Change 34486: [PATCH] Update Archive::Tar to 1.40
Change 34486 by stevep@stevep-kirk on 2008/10/15 13:48:23
Subject: [PATCH] Update Archive::Tar to 1.40
From: "Jos I. Boumans" <jos@dwim.org>
Date: Mon, 13 Oct 2008 15:40:22 +0200
Message-Id: <D694D518-2404-4476-B578-A5B95F89660A@dwim.org>
...minus the Pod tests that we've been regularly removing.
Affected files ...
... //depot/perl/lib/Archive/Tar.pm#19 edit
... //depot/perl/lib/Archive/Tar/File.pm#7 edit
... //depot/perl/lib/Archive/Tar/t/02_methods.t#16 edit
... //depot/perl/lib/Archive/Tar/t/04_resolved_issues.t#6 edit
... //depot/perl/lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed#2 edit
... //depot/perl/lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed#2 edit
... //depot/perl/lib/Archive/Tar/t/src/long/bar.tar.packed#5 edit
... //depot/perl/lib/Archive/Tar/t/src/long/foo.tbz.packed#2 edit
... //depot/perl/lib/Archive/Tar/t/src/long/foo.tgz.packed#5 edit
... //depot/perl/lib/Archive/Tar/t/src/short/bar.tar.packed#5 edit
... //depot/perl/lib/Archive/Tar/t/src/short/foo.tbz.packed#2 edit
... //depot/perl/lib/Archive/Tar/t/src/short/foo.tgz.packed#5 edit
Differences ...
==== //depot/perl/lib/Archive/Tar.pm#19 (text) ====
Index: perl/lib/Archive/Tar.pm
--- perl/lib/Archive/Tar.pm#18~34452~ 2008-10-01 09:53:57.000000000 -0700
+++ perl/lib/Archive/Tar.pm 2008-10-15 06:48:23.000000000 -0700
@@ -31,7 +31,7 @@
$DEBUG = 0;
$WARN = 1;
$FOLLOW_SYMLINK = 0;
-$VERSION = "1.39_04";
+$VERSION = "1.40";
$CHOWN = 1;
$CHMOD = 1;
$DO_NOT_USE_PREFIX = 0;
@@ -1471,37 +1471,6 @@
$self->{cwd} = $cwd;
}
-=head2 $bool = $tar->has_io_string
-
-Returns true if we currently have C<IO::String> support loaded.
-
-Either C<IO::String> or C<perlio> support is needed to support writing
-stringified archives. Currently, C<perlio> is the preferred method, if
-available.
-
-See the C<GLOBAL VARIABLES> section to see how to change this preference.
-
-=cut
-
-sub has_io_string { return $HAS_IO_STRING; }
-
-=head2 $bool = $tar->has_perlio
-
-Returns true if we currently have C<perlio> support loaded.
-
-This requires C<perl-5.8> or higher, compiled with C<perlio>
-
-Either C<IO::String> or C<perlio> support is needed to support writing
-stringified archives. Currently, C<perlio> is the preferred method, if
-available.
-
-See the C<GLOBAL VARIABLES> section to see how to change this preference.
-
-=cut
-
-sub has_perlio { return $HAS_PERLIO; }
-
-
=head1 Class Methods
=head2 Archive::Tar->create_archive($file, $compressed, @filelist)
@@ -1667,6 +1636,52 @@
return $tar->read( $file, $gzip, { extract => 1 } );
}
+=head2 $bool = Archive::Tar->has_io_string
+
+Returns true if we currently have C<IO::String> support loaded.
+
+Either C<IO::String> or C<perlio> support is needed to support writing
+stringified archives. Currently, C<perlio> is the preferred method, if
+available.
+
+See the C<GLOBAL VARIABLES> section to see how to change this preference.
+
+=cut
+
+sub has_io_string { return $HAS_IO_STRING; }
+
+=head2 $bool = Archive::Tar->has_perlio
+
+Returns true if we currently have C<perlio> support loaded.
+
+This requires C<perl-5.8> or higher, compiled with C<perlio>
+
+Either C<IO::String> or C<perlio> support is needed to support writing
+stringified archives. Currently, C<perlio> is the preferred method, if
+available.
+
+See the C<GLOBAL VARIABLES> section to see how to change this preference.
+
+=cut
+
+sub has_perlio { return $HAS_PERLIO; }
+
+=head2 $bool = Archive::Tar->has_zlib_support
+
+Returns true if C<Archive::Tar> can extract C<zlib> compressed archives
+
+=cut
+
+sub has_zlib_support { return ZLIB }
+
+=head2 $bool = Archive::Tar->has_bzip2_support
+
+Returns true if C<Archive::Tar> can extract C<bzip2> compressed archives
+
+=cut
+
+sub has_bzip2_support { return BZIP }
+
=head2 Archive::Tar->can_handle_compressed_files
A simple checking routine, which will return true if C<Archive::Tar>
@@ -2045,7 +2060,7 @@
=head1 COPYRIGHT
-This module is copyright (c) 2002 - 2007 Jos Boumans
+This module is copyright (c) 2002 - 2008 Jos Boumans
E<lt>kane@cpan.orgE<gt>. All rights reserved.
This library is free software; you may redistribute and/or modify
==== //depot/perl/lib/Archive/Tar/File.pm#7 (text) ====
Index: perl/lib/Archive/Tar/File.pm
--- perl/lib/Archive/Tar/File.pm#6~34452~ 2008-10-01 09:53:57.000000000 -0700
+++ perl/lib/Archive/Tar/File.pm 2008-10-15 06:48:23.000000000 -0700
@@ -393,6 +393,9 @@
### if it's a directory, then $file might be empty
$file = pop @dirs if $self->is_dir and not length $file;
+ ### splitting ../ gives you the relative path in native syntax
+ map { $_ = '..' if $_ eq '-' } @dirs if ON_VMS;
+
my $prefix = File::Spec::Unix->catdir(
grep { length } $vol, @dirs
);
==== //depot/perl/lib/Archive/Tar/t/02_methods.t#16 (text) ====
Index: perl/lib/Archive/Tar/t/02_methods.t
--- perl/lib/Archive/Tar/t/02_methods.t#15~34453~ 2008-10-01 09:55:42.000000000 -0700
+++ perl/lib/Archive/Tar/t/02_methods.t 2008-10-15 06:48:23.000000000 -0700
@@ -21,9 +21,14 @@
use File::Basename ();
use Data::Dumper;
-use Archive::Tar;
+### need the constants at compile time;
use Archive::Tar::Constant;
+my $Class = 'Archive::Tar';
+use_ok( $Class );
+
+
+
### XXX TODO:
### * change to fullname
### * add tests for global variables
@@ -72,20 +77,15 @@
}
my @ROOT = grep { length } 'src', $TOO_LONG ? 'short' : 'long';
-
-my $ZLIB = eval { require IO::Zlib;
- require IO::Compress::Bzip2; 1 } ? 1 : 0;
-my $BZIP = eval { require IO::Uncompress::Bunzip2;
- require IO::Compress::Bzip2; 1 } ? 1 : 0;
-
my $NO_UNLINK = $ARGV[0] ? 1 : 0;
-### enable debugging?
-$Archive::Tar::DEBUG = 1 if $ARGV[1];
+### enable debugging?
+### pesky warnings
+$Archive::Tar::DEBUG = $Archive::Tar::DEBUG = 1 if $ARGV[1];
### tests for binary and x/x files
-my $TARBIN = Archive::Tar->new;
-my $TARX = Archive::Tar->new;
+my $TARBIN = $Class->new;
+my $TARX = $Class->new;
### paths to a .tar and .tgz file to use for tests
my $TAR_FILE = File::Spec->catfile( @ROOT, 'bar.tar' );
@@ -102,15 +102,16 @@
### done setting up environment ###
+### check for zlib/bzip2 support
+{ for my $meth ( qw[has_zlib_support has_bzip2_support] ) {
+ can_ok( $Class, $meth );
+ }
+}
-### did we probe IO::Zlib support ok? ###
-{ is( Archive::Tar->can_handle_compressed_files, $ZLIB,
- "Proper IO::Zlib support detected" );
-}
### tar error tests
-{ my $tar = Archive::Tar->new;
+{ my $tar = $Class->new;
ok( $tar, "Object created" );
isa_ok( $tar, 'Archive::Tar');
@@ -139,7 +140,7 @@
### check if ->error eq $error
is( $tar->error, $Archive::Tar::error,
- '$error matches error() method' );
+ "Error '$Archive::Tar::error' matches $Class->error method" );
### check that 'contains_file' doesn't warn about missing files.
{ ### turn on warnings in general!
@@ -156,13 +157,13 @@
### read tests ###
{ my @to_try = ($TAR_FILE);
- push @to_try, $TGZ_FILE if $ZLIB;
- push @to_try, $TBZ_FILE if $BZIP;
+ push @to_try, $TGZ_FILE if $Class->has_zlib_support;
+ push @to_try, $TBZ_FILE if $Class->has_bzip2_support;
for my $type( @to_try ) {
### normal tar + gz compressed file
- my $tar = Archive::Tar->new;
+ my $tar = $Class->new;
### check we got the object
ok( $tar, "Object created" );
@@ -202,7 +203,7 @@
### list_archive test
- { my @list = Archive::Tar->list_archive( $type );
+ { my @list = $Class->list_archive( $type );
my $cnt = scalar @list;
my $expect = scalar __PACKAGE__->get_expect();
@@ -225,7 +226,7 @@
### add files tests ###
{ my @add = map { File::Spec->catfile( @ROOT, @$_ ) } ['b'];
my @addunix = map { File::Spec::Unix->catfile( @ROOT, @$_ ) } ['b'];
- my $tar = Archive::Tar->new;
+ my $tar = $Class->new;
### check we got the object
ok( $tar, "Object created" );
@@ -258,7 +259,7 @@
### check adding files doesn't conflict with a secondary archive
### old A::T bug, we should keep testing for it
- { my $tar2 = Archive::Tar->new;
+ { my $tar2 = $Class->new;
my @added = $tar2->add_files( $COMPRESS_FILE );
my @count = $tar2->list_files;
@@ -279,7 +280,7 @@
{
{ ### standard data ###
my @to_add = ( 'a', 'aaaaa' );
- my $tar = Archive::Tar->new;
+ my $tar = $Class->new;
### check we got the object
ok( $tar, "Object created" );
@@ -324,7 +325,7 @@
}
### rename/replace_content tests ###
-{ my $tar = Archive::Tar->new;
+{ my $tar = $Class->new;
my $from = 'c';
my $to = 'e';
@@ -356,7 +357,7 @@
### remove tests ###
{ my $remove = 'c';
- my $tar = Archive::Tar->new;
+ my $tar = $Class->new;
ok( $tar->read( $TAR_FILE ), "Read in '$TAR_FILE'" );
@@ -370,12 +371,14 @@
}
### write + read + extract tests ###
-SKIP: {
+SKIP: { ### pesky warnings
skip('no IO::String', 326) if !$Archive::Tar::HAS_PERLIO &&
+ !$Archive::Tar::HAS_PERLIO &&
+ !$Archive::Tar::HAS_IO_STRING &&
!$Archive::Tar::HAS_IO_STRING;
- my $tar = Archive::Tar->new;
- my $new = Archive::Tar->new;
+ my $tar = $Class->new;
+ my $new = $Class->new;
ok( $tar->read( $TAR_FILE ), "Read in '$TAR_FILE'" );
for my $aref ( [$tar, \@EXPECT_NORMAL],
@@ -415,12 +418,12 @@
{ ### create_archive()
- ok( Archive::Tar->create_archive( $out, 0, $COMPRESS_FILE ),
+ ok( $Class->create_archive( $out, 0, $COMPRESS_FILE ),
"Wrote tarfile using 'create_archive'" );
check_tar_file( $out );
### now extract it again
- ok( Archive::Tar->extract_archive( $out ),
+ ok( $Class->extract_archive( $out ),
"Extracted file using 'extract_archive'");
rm( $out ) unless $NO_UNLINK;
}
@@ -428,8 +431,8 @@
## write tgz tests
{ my @out;
- push @out, [ $OUT_TGZ_FILE => 1 ] if $ZLIB;
- push @out, [ $OUT_TBZ_FILE => COMPRESS_BZIP ] if $BZIP;
+ push @out, [ $OUT_TGZ_FILE => 1 ] if $Class->has_zlib_support;
+ push @out, [ $OUT_TBZ_FILE => COMPRESS_BZIP ] if $Class->has_bzip2_support;
for my $entry ( @out ) {
@@ -456,12 +459,12 @@
}
{ ### create_archive()
- ok( Archive::Tar->create_archive( $out, $compression, $COMPRESS_FILE ),
+ ok( $Class->create_archive( $out, $compression, $COMPRESS_FILE ),
"Wrote '$out' using 'create_archive'" );
check_compressed_file( $out );
### now extract it again
- ok( Archive::Tar->extract_archive( $out, $compression ),
+ ok( $Class->extract_archive( $out, $compression ),
"Extracted file using 'extract_archive'");
rm( $out ) unless $NO_UNLINK;
}
@@ -472,7 +475,7 @@
### limited read + extract tests ###
-{ my $tar = Archive::Tar->new;
+{ my $tar = $Class->new;
my @files = $tar->read( $TAR_FILE, 0, { limit => 1 } );
my $obj = $files[0];
@@ -513,7 +516,7 @@
### clear tests ###
-{ my $tar = Archive::Tar->new;
+{ my $tar = $Class->new;
my @files = $tar->read( $TAR_FILE );
my $cnt = $tar->list_files();
@@ -525,7 +528,7 @@
}
### $DO_NOT_USE_PREFIX tests
-{ my $tar = Archive::Tar->new;
+{ my $tar = $Class->new;
### first write a tar file without prefix
@@ -541,7 +544,10 @@
is( $obj->prefix, $dir, " Prefix set to '$dir'" );
### write the tar file without a prefix in it
+ ### pesky warnings
local $Archive::Tar::DO_NOT_USE_PREFIX = 1;
+ local $Archive::Tar::DO_NOT_USE_PREFIX = 1;
+
ok( $tar->write( $OUT_TAR_FILE ),
" Tar file written" );
==== //depot/perl/lib/Archive/Tar/t/04_resolved_issues.t#6 (text) ====
Index: perl/lib/Archive/Tar/t/04_resolved_issues.t
--- perl/lib/Archive/Tar/t/04_resolved_issues.t#5~32352~ 2007-11-16 15:46:13.000000000 -0800
+++ perl/lib/Archive/Tar/t/04_resolved_issues.t 2008-10-15 06:48:23.000000000 -0700
@@ -113,7 +113,7 @@
### absolute paths are already taken care of. Only relative paths
### matter
my $in_file = basename($0);
- my $out_file = '../' . $in_file . ".$$";
+ my $out_file = '../' . $in_file . "_$$";
ok( $tar->add_files( $in_file ),
" Added '$in_file'" );
@@ -121,7 +121,6 @@
" Renamed to '$out_file'" );
### first, test with strict extract permissions on
-TODO:
{ local $Archive::Tar::INSECURE_EXTRACT_MODE = 0;
### we quell the error on STDERR
@@ -135,20 +134,14 @@
ok( ! -e $out_file, " File '$out_file' does not exist" );
ok( $tar->error, " Error message stored" );
-
- local $TODO = 'Exposed unrelated filespec handling bugs on VMS' if $^O eq 'VMS';
-
like( $tar->error, qr/attempting to leave/,
" Proper violation detected" );
}
### now disable those
-TODO:
{ local $Archive::Tar::INSECURE_EXTRACT_MODE = 1;
ok( 1, " Extracting in insecure mode" );
- local $TODO = 'Exposed unrelated filespec handling bugs on VMS' if $^O eq 'VMS';
-
ok( $tar->extract_file( $out_file ),
" File extracted" );
ok( -e $out_file, " File '$out_file' exists" );
==== //depot/perl/lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed#2 (text) ====
Index: perl/lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed
--- perl/lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed#1~34452~ 2008-10-01 09:53:57.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed 2008-10-15 06:48:23.000000000 -0700
@@ -4,13 +4,13 @@
To unpack this file use the following command:
- uupacktool.pl -u linktest_missing_dir.tar.packed linktest_missing_dir.tar
+ uupacktool.pl -u lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar
To recreate it use the following command:
- uupacktool.pl -p linktest_missing_dir.tar linktest_missing_dir.tar.packed
+ uupacktool.pl -p lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar lib/Archive/Tar/t/src/linktest/linktest_missing_dir.tar.packed
-Created at Wed Oct 1 17:21:49 2008
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M;&EN:W1E<W0O;&EN:P``````````````````````````````````````````
==== //depot/perl/lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed#2 (text) ====
Index: perl/lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed
--- perl/lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed#1~34452~ 2008-10-01 09:53:57.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed 2008-10-15 06:48:23.000000000 -0700
@@ -4,13 +4,13 @@
To unpack this file use the following command:
- uupacktool.pl -u linktest_with_dir.tar.packed linktest_with_dir.tar
+ uupacktool.pl -u lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar
To recreate it use the following command:
- uupacktool.pl -p linktest_with_dir.tar linktest_with_dir.tar.packed
+ uupacktool.pl -p lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar lib/Archive/Tar/t/src/linktest/linktest_with_dir.tar.packed
-Created at Wed Oct 1 17:22:07 2008
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M;&EN:W1E<W0O;W)I9R\`````````````````````````````````````````
==== //depot/perl/lib/Archive/Tar/t/src/long/bar.tar.packed#5 (text) ====
Index: perl/lib/Archive/Tar/t/src/long/bar.tar.packed
--- perl/lib/Archive/Tar/t/src/long/bar.tar.packed#4~31874~ 2007-09-16 02:40:45.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/long/bar.tar.packed 2008-10-15 06:48:23.000000000 -0700
@@ -10,7 +10,7 @@
uupacktool.pl -p lib/Archive/Tar/t/src/long/bar.tar lib/Archive/Tar/t/src/long/bar.tar.packed
-Created at Sun Sep 16 10:56:54 2007
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M8P``````````````````````````````````````````````````````````
==== //depot/perl/lib/Archive/Tar/t/src/long/foo.tbz.packed#2 (text) ====
Index: perl/lib/Archive/Tar/t/src/long/foo.tbz.packed
--- perl/lib/Archive/Tar/t/src/long/foo.tbz.packed#1~34452~ 2008-10-01 09:53:57.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/long/foo.tbz.packed 2008-10-15 06:48:23.000000000 -0700
@@ -4,13 +4,13 @@
To unpack this file use the following command:
- uupacktool.pl -u foo.tbz.packed foo.tbz
+ uupacktool.pl -u lib/Archive/Tar/t/src/long/foo.tbz.packed lib/Archive/Tar/t/src/long/foo.tbz
To recreate it use the following command:
- uupacktool.pl -p foo.tbz foo.tbz.packed
+ uupacktool.pl -p lib/Archive/Tar/t/src/long/foo.tbz lib/Archive/Tar/t/src/long/foo.tbz.packed
-Created at Wed Oct 1 17:23:46 2008
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M0EIH.3%!62936=873NT``9C_A._0`DA``_^`0`0)`._OGJ```40(,`%X9`8`
==== //depot/perl/lib/Archive/Tar/t/src/long/foo.tgz.packed#5 (text) ====
Index: perl/lib/Archive/Tar/t/src/long/foo.tgz.packed
--- perl/lib/Archive/Tar/t/src/long/foo.tgz.packed#4~31874~ 2007-09-16 02:40:45.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/long/foo.tgz.packed 2008-10-15 06:48:23.000000000 -0700
@@ -10,7 +10,7 @@
uupacktool.pl -p lib/Archive/Tar/t/src/long/foo.tgz lib/Archive/Tar/t/src/long/foo.tgz.packed
-Created at Sun Sep 16 10:56:54 2007
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M'XL(`````````^W72VZ#,!`&8*]S"BY`F,$/MCT`ET")25`<D"A1Q.UKR*M1
==== //depot/perl/lib/Archive/Tar/t/src/short/bar.tar.packed#5 (text) ====
Index: perl/lib/Archive/Tar/t/src/short/bar.tar.packed
--- perl/lib/Archive/Tar/t/src/short/bar.tar.packed#4~31874~ 2007-09-16 02:40:45.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/short/bar.tar.packed 2008-10-15 06:48:23.000000000 -0700
@@ -10,7 +10,7 @@
uupacktool.pl -p lib/Archive/Tar/t/src/short/bar.tar lib/Archive/Tar/t/src/short/bar.tar.packed
-Created at Sun Sep 16 10:56:55 2007
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M8P``````````````````````````````````````````````````````````
==== //depot/perl/lib/Archive/Tar/t/src/short/foo.tbz.packed#2 (text) ====
Index: perl/lib/Archive/Tar/t/src/short/foo.tbz.packed
--- perl/lib/Archive/Tar/t/src/short/foo.tbz.packed#1~34452~ 2008-10-01 09:53:57.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/short/foo.tbz.packed 2008-10-15 06:48:23.000000000 -0700
@@ -4,13 +4,13 @@
To unpack this file use the following command:
- uupacktool.pl -u foo.tbz.packed foo.tbz
+ uupacktool.pl -u lib/Archive/Tar/t/src/short/foo.tbz.packed lib/Archive/Tar/t/src/short/foo.tbz
To recreate it use the following command:
- uupacktool.pl -p foo.tbz foo.tbz.packed
+ uupacktool.pl -p lib/Archive/Tar/t/src/short/foo.tbz lib/Archive/Tar/t/src/short/foo.tbz.packed
-Created at Wed Oct 1 17:24:13 2008
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M0EIH.3%!62936>GH,8X``)O[A.90`D!``'^```#O*1X```%`""``E(*JGDA#
==== //depot/perl/lib/Archive/Tar/t/src/short/foo.tgz.packed#5 (text) ====
Index: perl/lib/Archive/Tar/t/src/short/foo.tgz.packed
--- perl/lib/Archive/Tar/t/src/short/foo.tgz.packed#4~31874~ 2007-09-16 02:40:45.000000000 -0700
+++ perl/lib/Archive/Tar/t/src/short/foo.tgz.packed 2008-10-15 06:48:23.000000000 -0700
@@ -10,7 +10,7 @@
uupacktool.pl -p lib/Archive/Tar/t/src/short/foo.tgz lib/Archive/Tar/t/src/short/foo.tgz.packed
-Created at Sun Sep 16 10:56:55 2007
+Created at Mon Oct 13 15:18:08 2008
#########################################################################
__UU__
M'XL(`````````^W300K",!"%X5GW%#G"3-JFYREJ080NJKU_A^A"$.RJ(\+_
End of Patch.
-
Change 34486: [PATCH] Update Archive::Tar to 1.40
by Steve Peters