This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
new perldelta
[perl5.git] / cpan / Archive-Tar / bin / ptar
index 14c0912..8c3fec1 100644 (file)
@@ -1,13 +1,20 @@
 #!/usr/bin/perl
 use strict;
+use warnings;
 
+BEGIN { pop @INC if $INC[-1] eq '.' }
 use File::Find;
 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 +35,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;
@@ -78,16 +95,17 @@ sub usage {
 
 =head1 NAME
 
-    ptar - a tar-like program written in perl
+ptar - a tar-like program written in perl
 
 =head1 DESCRIPTION
 
-    ptar is a small, tar look-alike program that uses the perl module
-    Archive::Tar to extract, create and list tar archives.
+ptar is a small, tar look-alike program that uses the perl module
+Archive::Tar to extract, create and list tar archives.
 
 =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,10 +120,11 @@ 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
 
-    tar(1), L<Archive::Tar>.
+L<tar(1)>, L<Archive::Tar>.
 
 =cut