blob: f48550b0ac73ba04e74cab45ed0d386538ef8d66 [file] [log] [blame]
Eric Andersen4bfb6b72000-11-29 21:39:02 +00001#!/bin/sh
2#
Eric Andersen5ec241d2000-12-12 16:49:12 +00003# 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#
Eric Andersen4bfb6b72000-11-29 21:39:02 +00007usage() {
Mike Frysingerd7d47502016-04-04 01:39:17 -04008 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
Eric Andersen4bfb6b72000-11-29 21:39:02 +000014}
15
16rpm=$2
Eric Andersenc7bda1c2004-03-15 08:29:22 +000017
Eric Andersen4bfb6b72000-11-29 21:39:02 +000018exist() {
Mike Frysingerd7d47502016-04-04 01:39:17 -040019 if [ -z "${rpm}" ]; then
20 usage
21 elif [ ! -s "${rpm}" ]; then
22 echo "Can't find ${rpm}!"
23 exit 1
24 fi
Eric Andersen4bfb6b72000-11-29 21:39:02 +000025}
26
Mike Frysingerd7d47502016-04-04 01:39:17 -040027if [ -z "$1" ]; then
28 usage
Eric Andersen4bfb6b72000-11-29 21:39:02 +000029elif [ "$1" = "-l" ]; then
Mike Frysingerd7d47502016-04-04 01:39:17 -040030 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
Eric Andersen4bfb6b72000-11-29 21:39:02 +000039elif [ "$1" = "-x" ]; then
Mike Frysingerd7d47502016-04-04 01:39:17 -040040 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
Eric Andersen4bfb6b72000-11-29 21:39:02 +000051else
Mike Frysingerd7d47502016-04-04 01:39:17 -040052 usage
Eric Andersen4bfb6b72000-11-29 21:39:02 +000053fi