From 43d855aea466f7f8e1e7a3e31440abf8b3bd6404 Mon Sep 17 00:00:00 2001 From: short <> Date: Thu, 13 Jun 2002 22:26:49 +0000 Subject: [PATCH] "rpmx"+"unzipx" replaced by the general "exx" (.rpm/.zip += .a/.deb) --- bin/exx | 43 +++++++++++++++++++++++++++++++++++++++++++ bin/rpmx | 21 --------------------- bin/unzipx | 23 ----------------------- 3 files changed, 43 insertions(+), 44 deletions(-) create mode 100755 bin/exx delete mode 100755 bin/rpmx delete mode 100755 bin/unzipx diff --git a/bin/exx b/bin/exx new file mode 100755 index 0000000..df78524 --- /dev/null +++ b/bin/exx @@ -0,0 +1,43 @@ +#! /usr/bin/perl +# +# $Id$ + +use strict; +use warnings; + +use IO::Handle; +use Cwd qw(chdir fastgetcwd); + +use constant FORMATS=>{ + "rpm"=>'rpm2cpio !|cpio -id --quiet', #-v #FIXME: --sparse doesn't work, why? + "zip"=>'unzip -Lq !', + "a" =>'ar x !', + "deb"=>'ar x !;for i in *.tar.gz;do j=`basename $i .tar.gz`;mkdir -p $j;cd $j;tar xzf ../$i;cd ..;rm -f $i;done', + }; + +die "Syntax: $0 )>..." + if !@ARGV; + +my $origdir=fastgetcwd; +for my $fname (@ARGV) { + $fname=~m#([^/]+)([.=])(\L[^./]+\E)$# or die "Extension not found for archive: $fname"; + my($path,$base,$ext)=($`,$1,$3); + my($pathname)=($2 eq "=" ? "$path$base" : $fname); + my $cmd=FORMATS->{$ext} or die "Extension \"$ext\" not known for archive: $fname"; + -r $pathname && !-d $pathname or die "Archive not readable: $pathname"; + my($extdir)=(-e $base && !-d $base ? "$base.dir" : $base); + -d $extdir or mkdir $extdir or die "Unable to create directory \"$extdir\": $!"; + chdir $extdir or die "Unable to chdir to \"$extdir\": $!"; + $pathname="../$pathname" if $pathname!~m#^/#; + $pathname=~s/'/'\\''/g; + $pathname="'$pathname'"; + $cmd=~s/!/$pathname/g; + $cmd="set -ex;$cmd"; + print "\t$extdir/:\n"; STDOUT->flush(); + my $rc; + $rc=system $cmd and die "$cmd (rc=".($rc>>8)."): $!"; + } + continue { + chdir $origdir; + } +exit 0; diff --git a/bin/rpmx b/bin/rpmx deleted file mode 100755 index 65d3b54..0000000 --- a/bin/rpmx +++ /dev/null @@ -1,21 +0,0 @@ -#! /bin/sh -if [ $# = 0 ];then - echo 'Syntax: $0 ' - exit 1 - fi -while [ $# -gt 0 ];do - d=`basename "$1" .rpm` - if [ -f "$d" ];then - d="$d.dir" - fi - mkdir "$d" 2>/dev/null - r="$1" - if [ "${r#/}" = "$r" ];then - r="../$r" - fi - (if cd "$d";then - rpm2cpio "$r"|cpio -id --quiet #-v #FIXME: --sparse doesn't work, why? - fi - ) - shift - done diff --git a/bin/unzipx b/bin/unzipx deleted file mode 100755 index 506c57c..0000000 --- a/bin/unzipx +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/sh -if [ $# = 0 ];then - echo 'Syntax: $0 ...' - exit 1 - fi -while [ $# -gt 0 ];do - d="$1" - d=`basename "$d" .zip` - d=`basename "$d" .ZIP` - if [ -f "$d" ];then - d="$d.dir" - fi - mkdir "$d" 2>/dev/null - r="$1" - if [ "${r#/}" = "$r" ];then - r="../$r" - fi - (if cd "$d";then - unzip -L "$r" - fi - ) - shift - done -- 1.8.3.1