1#!/bin/sh 2# 3# This should work with the GNU version of tar and gzip! 4# This should work with the bash or ash shell! 5# Requires the programs (ar, tar, gzip, and the pager more or less). 6# 7usage() { 8echo "Usage: undeb -c package.deb <Print control file info>" 9echo " undeb -l package.deb <List contents of deb package>" 10echo " undeb -x package.deb /foo/boo <Extract deb package to this directory," 11echo " put . for current directory>" 12exit 13} 14 15deb=$2 16 17exist() { 18if [ "$deb" = "" ]; then 19usage 20elif [ ! -s "$deb" ]; then 21echo "Can't find $deb!" 22exit 23fi 24} 25 26if [ "$1" = "" ]; then 27usage 28elif [ "$1" = "-l" ]; then 29exist 30type more >/dev/null 2>&1 && pager=more 31type less >/dev/null 2>&1 && pager=less 32[ "$pager" = "" ] && echo "No pager found!" && exit 33(ar -p $deb control.tar.gz | tar -xzO *control ; echo -e "\nPress enter to scroll, q to Quit!\n" ; ar -p $deb data.tar.gz | tar -tzv) | $pager 34exit 35elif [ "$1" = "-c" ]; then 36exist 37ar -p $deb control.tar.gz | tar -xzO *control 38exit 39elif [ "$1" = "-x" ]; then 40exist 41if [ "$3" = "" ]; then 42usage 43elif [ ! -d "$3" ]; then 44echo "No such directory $3!" 45exit 46fi 47ar -p $deb data.tar.gz | tar -xzvpf - -C $3 || exit 48echo 49echo "Extracted $deb to $3!" 50exit 51else 52usage 53fi 54