#!/bin/sh

MSG() {
cat <<EOF

# This script 'unrpm' extracts a Redhat.rpm package.
#
# Kent Robotti 3-12-99
#
# USAGE: unrpm -x -d directory package.rpm       
# USAGE: unrpm -X -d directory package.src.rpm   
# USAGE: unrpm -l package.rpm   <List contents of redhat package>
#
# Extract redhat package to current directory.
# Example: unrpm -x -d . package.rpm
# Extract redhat package to a directory called fooboo, create 
# the directory if it doesn't exist: # mkdir fooboo 
# Example: unrpm -x -d fooboo package.rpm
# Extract redhat package to /mnt/linux directory.
# Example: unrpm -x -d /mnt/linux package.rpm
#
# If you want to extract a redhat.src.rpm package but not the 
# tar.? package inside, use the -X option.
#
# Extract redhat src package to directory but not the tar.? inside.
# Example: unrpm -X -d directory package.src.rpm

EOF
}

if [ "$1" = "" ]; then
MSG
exit 0
fi

if [ "$1" = "-X" -a "$2" = "-d" ]; then
if [ ! -d "$3" ]; then
echo "No such directory: $3"
exit 1
fi
pwd=$PWD
echo
cd $3 && rpm2cpio $pwd/$4 | cpio -iumvd --quiet || exit 1 
cd $pwd
echo
echo "$4 extracted to $3"
echo
exit
elif [ "$1" = "-x" -a "$2" = "-d" ]; then
if [ ! -d "$3" ]; then
echo "No such directory: $3"
exit 1
fi
pwd=$PWD
echo
cd $3 && rpm2cpio $pwd/$4 | cpio -iumvd --quiet || exit 1
if [ -s *.tar.gz -o -s *.tar.Z -o -s *.tgz ]; then
tar xzpvf *.t* 2>/dev/null || exit 1
elif [ -s *.tar.bz2 ]; then
bzip2 -dc *.tar.bz2 2>/dev/null | tar xpvf - || exit 1 
fi
cd $pwd
echo
echo "$4 extracted to $3"
echo
exit
fi

if [ "$1" = "-l" -a -s "$2" ]; then
if [ ! "$PAGER" = "" ]; then
pager="$PAGER"
elif type -all less >/dev/null 2>&1 ; then
pager=less
elif type -all more >/dev/null 2>&1 ; then
pager=more
else
pager="echo No PAGER found, no more or less."
exit 1
fi
rpm2cpio $2 | cpio -tvf --quiet | $pager 
fi