source: MondoRescue/branches/3.3/mindi-busybox/examples/undeb@ 3632

Last change on this file since 3632 was 3621, checked in by Bruno Cornec, 10 years ago

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

File size: 1.3 KB
Line 
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() {
8 cat <<EOF
9Usage: undeb -c package.deb <Print control file info>
10 undeb -l package.deb <List contents of deb package>
11 undeb -x package.deb /foo/boo <Extract deb package to this directory,
12 put . for current directory>
13EOF
14 exit
15}
16
17deb=$2
18
19exist() {
20 if [ -z "${deb}" ]; then
21 usage
22 elif [ ! -s "${deb}" ]; then
23 echo "Can't find ${deb}!"
24 exit 1
25 fi
26}
27
28if [ -z "$1" ]; then
29 usage
30elif [ "$1" = "-l" ]; then
31 exist
32 type more >/dev/null 2>&1 && pager=more
33 type less >/dev/null 2>&1 && pager=less
34 [ -z "${pager}" ] && echo "No pager found!" && exit 1
35 (
36 ar -p "${deb}" control.tar.gz | tar -xzO *control
37 printf "\nPress enter to scroll, q to Quit!\n\n"
38 ar -p "${deb}" data.tar.gz | tar -tzv
39 ) | ${pager}
40 exit
41elif [ "$1" = "-c" ]; then
42 exist
43 ar -p "${deb}" control.tar.gz | tar -xzO *control
44 exit
45elif [ "$1" = "-x" ]; then
46 exist
47 if [ -z "$3" ]; then
48 usage
49 elif [ ! -d "$3" ]; then
50 echo "No such directory $3!"
51 exit 1
52 fi
53 ar -p "${deb}" data.tar.gz | tar -xzvpf - -C "$3" || exit
54 echo
55 echo "Extracted ${deb} to $3!"
56 exit
57else
58 usage
59fi
Note: See TracBrowser for help on using the repository browser.