| 1 |
diff -up perl-5.10.0/lib/Archive/Extract.pm.BAD perl-5.10.0/lib/Archive/Extract.pm
|
| 2 |
--- perl-5.10.0/lib/Archive/Extract.pm.BAD 2009-03-10 15:25:06.000000000 -0400
|
| 3 |
+++ perl-5.10.0/lib/Archive/Extract.pm 2009-03-10 15:25:11.000000000 -0400
|
| 4 |
@@ -550,12 +550,19 @@ sub _untar_bin {
|
| 5 |
$self->bin_tar, '-tf', '-'] :
|
| 6 |
[$self->bin_tar, '-tf', $self->archive];
|
| 7 |
|
| 8 |
- ### run the command ###
|
| 9 |
+ ### run the command
|
| 10 |
+ ### newer versions of 'tar' (1.21 and up) now print record size
|
| 11 |
+ ### to STDERR as well if v OR t is given (used to be both). This
|
| 12 |
+ ### is a 'feature' according to the changelog, so we must now only
|
| 13 |
+ ### inspect STDOUT, otherwise, failures like these occur:
|
| 14 |
+ ### nntp.perl.org/group/perl.cpan.testers/2009/02/msg3230366.html
|
| 15 |
my $buffer = '';
|
| 16 |
- unless( scalar run( command => $cmd,
|
| 17 |
+ my @out = run( command => $cmd,
|
| 18 |
buffer => \$buffer,
|
| 19 |
- verbose => $DEBUG )
|
| 20 |
- ) {
|
| 21 |
+ verbose => $DEBUG );
|
| 22 |
+
|
| 23 |
+ ### command was unsuccessful
|
| 24 |
+ unless( $out[0] ) {
|
| 25 |
return $self->_error(loc(
|
| 26 |
"Error listing contents of archive '%1': %2",
|
| 27 |
$self->archive, $buffer ));
|
| 28 |
@@ -578,7 +585,8 @@ sub _untar_bin {
|
| 29 |
\s+ [\d,.]+ \s tape \s blocks
|
| 30 |
|x ? $1 : $_);
|
| 31 |
|
| 32 |
- } split $/, $buffer;
|
| 33 |
+ ### only STDOUT, see above
|
| 34 |
+ } map { split $/, $_ } @{$out[3]};
|
| 35 |
|
| 36 |
### store the files that are in the archive ###
|
| 37 |
$self->files(\@files);
|