]> err.no Git - moreutils/commitdiff
zrun: Can be linked to zsomeprog to run the equivilant of zrun someprog.
authorJoey Hess <joey@kodama.kitenet.net>
Sat, 27 Sep 2008 22:05:33 +0000 (18:05 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Sat, 27 Sep 2008 22:05:33 +0000 (18:05 -0400)
* zrun: Can be linked to zsomeprog to run the equivilant of zrun someprog.
Closes: #411623 (Stefan Fritsch)
* zrun: Add support for lzma and lzo. (Stefan Fritsch)

debian/changelog
zrun

index 9ed8b7df88add85243d5d3f7958d25bc5c5ac062..1e67c6e24691e8e0ab547152fa11f5b22021d82c 100644 (file)
@@ -1,3 +1,11 @@
+moreutils (0.32) UNRELEASED; urgency=low
+
+  * zrun: Can be linked to zsomeprog to run the equivilant of zrun someprog.
+    Closes: #411623 (Stefan Fritsch)
+  * zrun: Add support for lzma and lzo. (Stefan Fritsch)
+
+ -- Joey Hess <joeyh@debian.org>  Sat, 27 Sep 2008 18:03:48 -0400
+
 moreutils (0.31) unstable; urgency=low
 
   * pee.1: Document difference with tee in stdout.
diff --git a/zrun b/zrun
index 7776db2d94f0d91a7783eab259ed9283f8c1703e..cedfbaee3b39348daa81758057c0adbe66374dbd 100755 (executable)
--- a/zrun
+++ b/zrun
@@ -17,6 +17,11 @@ arguments of the command to be transparently uncompressed to temp files
 This is a quick way to run a command that does not itself support
 compressed files, without manually uncompressing the files.
 
+The following compression types are supported: gz bz2 Z lzma lzo
+
+If zrun is linked to some name beginning with z, like zprog, and the link is
+executed, this is equivalent to executing "zrun prog".
+
 =head1 BUGS
 
 Modifications to the uncompressed temporary file are not fed back into the
@@ -35,18 +40,29 @@ use IO::Handle;
 use File::Spec;
 use File::Temp qw{tempfile};
 
-my $program = shift;
+my $program;
 
-if (! @ARGV) {
-       die "Usage: zrun <command> <args>\n";
+if ($0 =~ m{(?:^|/)z([^/]+)$}) {
+       $program = $1;
+       if (! @ARGV) {
+               die "Usage: z$1 <args>\nEquivalent to: zrun $1 <args>\n";
+       }
+}
+else {
+       $program = shift;
+       if (! @ARGV) {
+               die "Usage: zrun <command> <args>\n";
+       }
 }
 
 my @argument;
 my %child;
 foreach my $argument (@ARGV) {
-       if ($argument =~ m{^(.*/)?([^/]*)\.(gz|Z|bz2)$}s) {
+       if ($argument =~ m{^(.*/)?([^/]*)\.(gz|Z|bz2|lzo|lzma)$}s) {
                my $suffix = "-$2";
-               my @preprocess = $3 eq "bz2" ? qw(bzip2 -d -c) : qw(gzip -d -c);
+               my @preprocess = $3 eq "bz2"  ? qw(bzip2 -d -c) : 
+                                $3 eq "lzo"  ? qw(lzop -d -c)  : 
+                                $3 eq "lzma" ? qw(lzma -d -c)  : qw(gzip -d -c);
 
                my ($fh, $tmpname) = tempfile(SUFFIX => $suffix,
                        DIR => File::Spec->tmpdir, UNLINK => 1)