randomconfig fixes
[oweals/busybox.git] / examples / unrpm
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 #
7 usage() {
8         cat <<EOF
9 Usage: 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>
12 EOF
13         exit
14 }
15
16 rpm=$2
17
18 exist() {
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
27 if [ -z "$1" ]; then
28         usage
29 elif [ "$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
39 elif [ "$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
51 else
52         usage
53 fi