Update Archive-Tar to CPAN version 1.86
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 31 May 2012 10:39:34 +0000 (11:39 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Fri, 15 Jun 2012 13:33:48 +0000 (14:33 +0100)
  [DELTA]

  * important changes in version 1.86 24/05/2012 (Mark Allen)
  - don't use tell on IO::Zlib handles RT#64339

  * important changes in version 1.84 02/03/2012 (HMBRAND)
  - ptar now supports -T option [rt#75473]
  - ptar now supports dashless options [rt#75475]
  - auto-encode filenames marked as UTF-8 [rt#75474]

Porting/Maintainers.pl
cpan/Archive-Tar/bin/ptar
cpan/Archive-Tar/lib/Archive/Tar.pm
cpan/Archive-Tar/lib/Archive/Tar/Constant.pm
cpan/Archive-Tar/lib/Archive/Tar/File.pm

index d114982..d03e665 100755 (executable)
@@ -207,7 +207,7 @@ use File::Glob qw(:case);
 
     'Archive::Tar' => {
         'MAINTAINER'   => 'kane',
-        'DISTRIBUTION' => 'BINGOS/Archive-Tar-1.82.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Archive-Tar-1.86.tar.gz',
         'FILES'        => q[cpan/Archive-Tar],
         'EXCLUDED'     => ['Makefile.PL'],
         'UPSTREAM'     => 'cpan',
index 14c0912..0eaffa7 100644 (file)
@@ -6,8 +6,13 @@ use Getopt::Std;
 use Archive::Tar;
 use Data::Dumper;
 
+# Allow historic support for dashless bundled options
+#  tar cvf file.tar
+# is valid (GNU) tar style
+@ARGV && $ARGV[0] =~ m/^[DdcvzthxIC]+[fT]?$/ and
+    unshift @ARGV, map { "-$_" } split m// => shift @ARGV;
 my $opts = {};
-getopts('Ddcvzthxf:IC', $opts) or die usage();
+getopts('Ddcvzthxf:ICT:', $opts) or die usage();
 
 ### show the help message ###
 die usage() if $opts->{h};
@@ -28,11 +33,21 @@ my $verbose     = $opts->{v} ? 1 : 0;
 my $file        = $opts->{f} ? $opts->{f} : 'default.tar';
 my $tar         = Archive::Tar->new();
 
-
 if( $opts->{c} ) {
     my @files;
+    my @src = @ARGV;
+    if( $opts->{T} ) {
+      if( $opts->{T} eq "-" ) {
+        chomp( @src = <STDIN> );
+       } elsif( open my $fh, "<", $opts->{T} ) {
+           chomp( @src = <$fh> );
+       } else {
+           die "$0: $opts->{T}: $!\n";
+       }
+    }
+
     find( sub { push @files, $File::Find::name;
-                print $File::Find::name.$/ if $verbose }, @ARGV );
+                print $File::Find::name.$/ if $verbose }, @src );
 
     if ($file eq '-') {
         use IO::Handle;
@@ -88,6 +103,7 @@ sub usage {
 =head1 SYNOPSIS
 
     ptar -c [-v] [-z] [-C] [-f ARCHIVE_FILE | -] FILE FILE ...
+    ptar -c [-v] [-z] [-C] [-T index | -] [-f ARCHIVE_FILE | -]
     ptar -x [-v] [-z] [-f ARCHIVE_FILE | -]
     ptar -t [-z] [-f ARCHIVE_FILE | -]
     ptar -h
@@ -102,6 +118,7 @@ sub usage {
     v   Print filenames as they are added or extracted from ARCHIVE_FILE
     h   Prints this help message
     C   CPAN mode - drop 022 from permissions
+    T   get names to create from file
 
 =head1 SEE ALSO
 
index 4ed3ae0..68867cb 100644 (file)
@@ -31,7 +31,7 @@ use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLINK $CHOWN $CHMOD
 $DEBUG                  = 0;
 $WARN                   = 1;
 $FOLLOW_SYMLINK         = 0;
-$VERSION                = "1.82";
+$VERSION                = "1.86";
 $CHOWN                  = 1;
 $CHMOD                  = 1;
 $SAME_PERMISSIONS       = $> == 0 ? 1 : 0;
@@ -335,8 +335,15 @@ sub _read_tar {
     LOOP:
     while( $handle->read( $chunk, HEAD ) ) {
         ### IO::Zlib doesn't support this yet
-        my $offset = eval { tell $handle } || 'unknown';
-        $@ = '';
+        my $offset;
+        if ( ref($handle) ne 'IO::Zlib' ) {
+            local $@;
+            $offset = eval { tell $handle } || 'unknown';
+            $@ = '';
+        }
+        else {
+            $offset = 'unknown';
+        }
 
         unless( $read++ ) {
             my $gzip = GZIP_MAGIC_NUM;
@@ -1451,6 +1458,12 @@ sub add_files {
             next;
         }
 
+        eval {
+            if( utf8::is_utf8( $file )) {
+              utf8::encode( $file );
+            }
+        };
+
         unless( -e $file || -l $file ) {
             $self->_error( qq[No such file: '$file'] );
             next;
index 1bea5ce..7ea99ec 100644 (file)
@@ -3,7 +3,7 @@ package Archive::Tar::Constant;
 BEGIN {
     require Exporter;
 
-    $VERSION    = '1.82';
+    $VERSION    = '1.86';
     @ISA        = qw[Exporter];
 
     require Time::Local if $^O eq "MacOS";
index 9067de1..83f109b 100644 (file)
@@ -13,7 +13,7 @@ use Archive::Tar::Constant;
 
 use vars qw[@ISA $VERSION];
 #@ISA        = qw[Archive::Tar];
-$VERSION    = '1.82';
+$VERSION    = '1.86';
 
 ### set value to 1 to oct() it during the unpack ###