From 4bfb6b7b67ff4238fde52e4019efe2284b9f99ef Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 29 Nov 2000 21:39:02 +0000 Subject: [PATCH] Finish commit of rpmunpack and add in scripts for undeb and unrpm --- Changelog | 5 ++++- examples/undeb | 49 ++++++++++++++++++++++++++++++++++++++++++ examples/unrpm | 43 ++++++++++++++++++++++++++++++++++++ unrpm.c => rpmunpack.c | 14 +++++------- scripts/undeb | 49 ++++++++++++++++++++++++++++++++++++++++++ scripts/unrpm | 43 ++++++++++++++++++++++++++++++++++++ 6 files changed, 193 insertions(+), 10 deletions(-) create mode 100644 examples/undeb create mode 100644 examples/unrpm rename unrpm.c => rpmunpack.c (90%) create mode 100644 scripts/undeb create mode 100644 scripts/unrpm diff --git a/Changelog b/Changelog index 4f6f619bf..d2c1e7d28 100644 --- a/Changelog +++ b/Changelog @@ -2,7 +2,10 @@ * Fixed uname problem causing the kernel version to be mis-detected (causing problems with poweroff, init, - and other things). + and other things). + * kent robotti -- Renamed unrpm to original rpmunpack, so you can use + an included shell script called unrpm as a front end to it. There's + also a shell script called undeb included for debian packages. -Erik Andersen diff --git a/examples/undeb b/examples/undeb new file mode 100644 index 000000000..fa2bcb34c --- /dev/null +++ b/examples/undeb @@ -0,0 +1,49 @@ +#!/bin/sh +# +usage() { +echo "Usage: undeb -c package.deb " +echo " undeb -l package.deb " +echo " undeb -x package.deb /foo/boo " +exit +} + +deb=$2 + +exist() { +if [ "$deb" = "" ]; then +usage +elif [ ! -s "$deb" ]; then +echo "Can't find $deb!" +exit +fi +} + +if [ "$1" = "" ]; then +usage +elif [ "$1" = "-l" ]; then +exist +type more >/dev/null 2>&1 && pager=more +type less >/dev/null 2>&1 && pager=less +trap "" 13 +(ar -p $deb control.tar.gz | gunzip -c | tar -x -O control ; echo -e "\nPress enter to scroll, q to Quit!\n" ; ar -p $deb data.tar.gz | gunzip -c | tar -t -v 2>/dev/null) | $pager +exit +elif [ "$1" = "-c" ]; then +exist +ar -p $deb control.tar.gz | gunzip -c | tar -x -O control +exit +elif [ "$1" = "-x" ]; then +exist +if [ "$3" = "" ]; then +usage +elif [ ! -d "$3" ]; then +echo "No such directory $3!" +exit +fi +ar -p $deb data.tar.gz | gunzip | (cd $3 ; tar -x -v -f -) || exit +echo +echo "Extracted $deb to $3!" +exit +else +usage +fi diff --git a/examples/unrpm b/examples/unrpm new file mode 100644 index 000000000..2cd1aa9c9 --- /dev/null +++ b/examples/unrpm @@ -0,0 +1,43 @@ +#!/bin/sh +# +usage() { +echo "Usage: unrpm -l package.rpm " +echo " unrpm -x package.rpm /foo/boo " +exit +} + +rpm=$2 + +exist() { +if [ "$rpm" = "" ]; then +usage +elif [ ! -s "$rpm" ]; then +echo "Can't find $rpm!" +exit +fi +} + +if [ "$1" = "" ]; then +usage +elif [ "$1" = "-l" ]; then +exist +type more >/dev/null 2>&1 && pager=more +type less >/dev/null 2>&1 && pager=less +(echo -e "\nPress enter to scroll, q to Quit!\n" ; rpmunpack < $rpm | gunzip -c | cpio -tvf --quiet) | $pager +exit +elif [ "$1" = "-x" ]; then +exist +if [ "$3" = "" ]; then +usage +elif [ ! -d "$3" ]; then +echo "No such directory $3!" +exit +fi +rpmunpack < $rpm | gunzip | (cd $3 ; cpio -idmuv) || exit +echo +echo "Extracted $rpm to $3!" +exit +else +usage +fi diff --git a/unrpm.c b/rpmunpack.c similarity index 90% rename from unrpm.c rename to rpmunpack.c index 26989e8b6..2178a247d 100644 --- a/unrpm.c +++ b/rpmunpack.c @@ -1,5 +1,5 @@ /* - * Mini unrpm implementation for busybox + * rpmunpack for busybox * * rpmunpack.c - Utility program to unpack an RPM archive * @@ -14,11 +14,7 @@ */ #include "busybox.h" -#include -#include -#include #include -#include /* * Some general definitions @@ -46,7 +42,7 @@ static void myread(int num) if (err < 0) perror(progname); else - fprintf(stderr, "unexpected end of input file\n"); + fprintf(stderr, "Unexpected end of input file!\n"); exit(1); } } @@ -54,7 +50,7 @@ static void myread(int num) /* * Main program */ -int unrpm_main(int argc, char **argv) +int rpmunpack_main(int argc, char **argv) { int len, status = 0; @@ -66,7 +62,7 @@ int unrpm_main(int argc, char **argv) /* Check for command line parameters */ if (argc>=2 && *argv[1]=='-') { - usage(unrpm_usage); + usage(rpmunpack_usage); } /* Open input file */ @@ -80,7 +76,7 @@ int unrpm_main(int argc, char **argv) /* Read magic ID and output filename */ myread(4); if (strncmp(buffer, RPM_MAGIC, 4)) { - fprintf(stderr, "input file is not in RPM format\n"); + fprintf(stderr, "Input file is not in RPM format!\n"); exit(1); } myread(6); /* Skip flags */ diff --git a/scripts/undeb b/scripts/undeb new file mode 100644 index 000000000..fa2bcb34c --- /dev/null +++ b/scripts/undeb @@ -0,0 +1,49 @@ +#!/bin/sh +# +usage() { +echo "Usage: undeb -c package.deb " +echo " undeb -l package.deb " +echo " undeb -x package.deb /foo/boo " +exit +} + +deb=$2 + +exist() { +if [ "$deb" = "" ]; then +usage +elif [ ! -s "$deb" ]; then +echo "Can't find $deb!" +exit +fi +} + +if [ "$1" = "" ]; then +usage +elif [ "$1" = "-l" ]; then +exist +type more >/dev/null 2>&1 && pager=more +type less >/dev/null 2>&1 && pager=less +trap "" 13 +(ar -p $deb control.tar.gz | gunzip -c | tar -x -O control ; echo -e "\nPress enter to scroll, q to Quit!\n" ; ar -p $deb data.tar.gz | gunzip -c | tar -t -v 2>/dev/null) | $pager +exit +elif [ "$1" = "-c" ]; then +exist +ar -p $deb control.tar.gz | gunzip -c | tar -x -O control +exit +elif [ "$1" = "-x" ]; then +exist +if [ "$3" = "" ]; then +usage +elif [ ! -d "$3" ]; then +echo "No such directory $3!" +exit +fi +ar -p $deb data.tar.gz | gunzip | (cd $3 ; tar -x -v -f -) || exit +echo +echo "Extracted $deb to $3!" +exit +else +usage +fi diff --git a/scripts/unrpm b/scripts/unrpm new file mode 100644 index 000000000..2cd1aa9c9 --- /dev/null +++ b/scripts/unrpm @@ -0,0 +1,43 @@ +#!/bin/sh +# +usage() { +echo "Usage: unrpm -l package.rpm " +echo " unrpm -x package.rpm /foo/boo " +exit +} + +rpm=$2 + +exist() { +if [ "$rpm" = "" ]; then +usage +elif [ ! -s "$rpm" ]; then +echo "Can't find $rpm!" +exit +fi +} + +if [ "$1" = "" ]; then +usage +elif [ "$1" = "-l" ]; then +exist +type more >/dev/null 2>&1 && pager=more +type less >/dev/null 2>&1 && pager=less +(echo -e "\nPress enter to scroll, q to Quit!\n" ; rpmunpack < $rpm | gunzip -c | cpio -tvf --quiet) | $pager +exit +elif [ "$1" = "-x" ]; then +exist +if [ "$3" = "" ]; then +usage +elif [ ! -d "$3" ]; then +echo "No such directory $3!" +exit +fi +rpmunpack < $rpm | gunzip | (cd $3 ; cpio -idmuv) || exit +echo +echo "Extracted $rpm to $3!" +exit +else +usage +fi