diff options
Diffstat (limited to 'scripts/undeb')
-rw-r--r-- | scripts/undeb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/undeb b/scripts/undeb new file mode 100644 index 0000000..fa2bcb3 --- /dev/null +++ b/scripts/undeb @@ -0,0 +1,49 @@ +#!/bin/sh +# +usage() { +echo "Usage: undeb -c package.deb <Print control file info>" +echo " undeb -l package.deb <List contents of deb package>" +echo " undeb -x package.deb /foo/boo <Extract deb package to this directory," +echo " put . for current directory>" +exit +} + +deb=$2 + +exist() { +if [ "$deb" = "" ]; then +usage +elif [ ! -s "$deb" ]; then +echo "Can't find $deb!" +exit +fi +} + +if [ "$1" = "" ]; then +usage +elif [ "$1" = "-l" ]; then +exist +type more >/dev/null 2>&1 && pager=more +type less >/dev/null 2>&1 && pager=less +trap "" 13 +(ar -p $deb control.tar.gz | gunzip -c | tar -x -O control ; echo -e "\nPress enter to scroll, q to Quit!\n" ; ar -p $deb data.tar.gz | gunzip -c | tar -t -v 2>/dev/null) | $pager +exit +elif [ "$1" = "-c" ]; then +exist +ar -p $deb control.tar.gz | gunzip -c | tar -x -O control +exit +elif [ "$1" = "-x" ]; then +exist +if [ "$3" = "" ]; then +usage +elif [ ! -d "$3" ]; then +echo "No such directory $3!" +exit +fi +ar -p $deb data.tar.gz | gunzip | (cd $3 ; tar -x -v -f -) || exit +echo +echo "Extracted $deb to $3!" +exit +else +usage +fi |