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