RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Bernhard Rosenkraenzer
Root: /v/rpm/cvs Email: bero@rpm5.org
Module: rpm Date: 12-Oct-2007 21:50:37
Branch: HEAD Handle: 2007101220503601
Modified files:
rpm CHANGES
rpm/scripts rpm2cpio
Log:
Make rpm2cpio handle packages with non-gzip payloads
Submitted by: bero
Summary:
Revision Changes Path
1.1677 +1 -0 rpm/CHANGES
1.3 +14 -1 rpm/scripts/rpm2cpio
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1676 -r1.1677 CHANGES
--- rpm/CHANGES 12 Oct 2007 18:55:57 -0000 1.1676
+++ rpm/CHANGES 12 Oct 2007 19:50:36 -0000 1.1677
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - bero: Make rpm2cpio work for packages with payloads other than gzip
- jbj: change to hRET_t for existing headerGetExtension uses.
- bero: Add %optional flag on files (packages a file if it is there,
but doesn't error out if it isn't there)
@@ .
patch -p0 <<'@@ .'
Index: rpm/scripts/rpm2cpio
============================================================================
$ cvs diff -u -r1.2 -r1.3 rpm2cpio
--- rpm/scripts/rpm2cpio 25 May 2007 18:34:16 -0000 1.2
+++ rpm/scripts/rpm2cpio 12 Oct 2007 19:50:37 -0000 1.3
@@ -23,4 +23,17 @@
hdrsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $hdrsize`
-dd if=$pkg ibs=$o skip=1 2>/dev/null | gunzip
+COMPRESSION=`(dd if=$pkg ibs=$o skip=1 |file -) 2>/dev/null`
+if echo $COMPRESSION |grep -q gzip; then
+ DECOMPRESSOR=gunzip
+elif echo $COMPRESSION |grep -q bzip2; then
+ DECOMPRESSOR=bunzip2
+elif echo $COMPRESSION |grep -q cpio; then
+ DECOMPRESSOR=cat
+else
+ # Most versions of file don't support LZMA, therefore we assume
+ # anything not detected is LZMA
+ DECOMPRESSOR="lzmash -d -c"
+fi
+
+dd if=$pkg ibs=$o skip=1 2>/dev/null | $DECOMPRESSOR
@@ .
Received on Fri Oct 12 21:50:37 2007