summaryrefslogtreecommitdiffstats
path: root/source.local/a/rpm2tgz
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2013-03-22 16:47:17 -0700
committer Eric Hameleers <alien@slackware.com>2013-03-22 16:47:17 -0700
commit69dd99f961988fa15da8d7f0d63b62f3385419c3 (patch)
treed57eb3e85e1d08e7815787de26946ee42c398b66 /source.local/a/rpm2tgz
downloadalienarm-69dd99f961988fa15da8d7f0d63b62f3385419c3.tar.gz
alienarm-69dd99f961988fa15da8d7f0d63b62f3385419c3.tar.xz
Initial commit of a Slackware cross-arch bootstrap framework.
Diffstat (limited to 'source.local/a/rpm2tgz')
-rw-r--r--source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gzbin0 -> 567 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gzbin0 -> 651 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gzbin0 -> 521 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gzbin0 -> 707 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gzbin0 -> 792 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gzbin0 -> 755 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gzbin0 -> 969 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gzbin0 -> 674 bytes
-rw-r--r--source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gzbin0 -> 1057 bytes
-rw-r--r--source.local/a/rpm2tgz/rpm2targz232
-rw-r--r--source.local/a/rpm2tgz/rpm2targz.README18
-rwxr-xr-xsource.local/a/rpm2tgz/rpm2tgz.SlackBuild97
-rw-r--r--source.local/a/rpm2tgz/rpmoffset.c25
-rw-r--r--source.local/a/rpm2tgz/slack-desc19
14 files changed, 391 insertions, 0 deletions
diff --git a/source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz b/source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz
new file mode 100644
index 0000000..2eea9d2
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz b/source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz
new file mode 100644
index 0000000..3464dd2
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz b/source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz
new file mode 100644
index 0000000..046dfc2
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz b/source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz
new file mode 100644
index 0000000..6f6f94b
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz b/source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz
new file mode 100644
index 0000000..0e47ea1
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz b/source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz
new file mode 100644
index 0000000..9ccdcf2
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz b/source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz
new file mode 100644
index 0000000..8238281
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz b/source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz
new file mode 100644
index 0000000..d6c1a08
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz b/source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz
new file mode 100644
index 0000000..58a345b
--- /dev/null
+++ b/source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz
Binary files differ
diff --git a/source.local/a/rpm2tgz/rpm2targz b/source.local/a/rpm2tgz/rpm2targz
new file mode 100644
index 0000000..5c91c64
--- /dev/null
+++ b/source.local/a/rpm2tgz/rpm2targz
@@ -0,0 +1,232 @@
+#!/bin/sh
+# Copyright 1997, 1998 Patrick Volkerding, Moorhead, MN USA
+# Copyright 2002, 2004 Slackware Linux, Inc., Concord, CA USA
+# Copyright 2006, 2009 Patrick Volkerding, Sebeka, MN USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+CWD=$(pwd)
+
+# Breaking the help out into it's own deal
+usage() {
+ echo "$0: Converts RPM format to standard GNU tar + GNU zip format."
+ echo " (view converted packages with \"less\", install and remove"
+ echo " with \"installpkg\", \"removepkg\", \"pkgtool\", or manually"
+ echo " with \"tar\")"
+ echo
+ if [ "$(basename $0)" = "rpm2tgz" ]; then
+ echo "Usage: $0 [OPTION] <file.rpm>"
+ echo " (Outputs \"file.tgz\")"
+ echo
+ echo " -s extract the install scripts to /usr/doc/\$PRGNAM-\$VERSION/"
+ echo " for review."
+ echo " -S extracts the install scripts to be executed on package installation"
+ echo " (only pre-install and post-install scripts used)"
+ echo " USE WITH CAUTION! "
+ echo " -n name the output package using the rpm's metadata"
+ echo " -r extract what the rpm's \"requires\" (dependencies)"
+ echo " as documention to /usr/doc/\$PRGNAM-\$VERSION/"
+ echo " -d attempt a wellformed slack-desc from the rpm meta data"
+ echo
+ else
+ echo "Usage: $0 <file.rpm>"
+ echo " (Outputs \"file.tar.gz\")"
+ fi
+ exit 1;
+}
+
+# Create a new temporary directory with a secure filename:
+make_temp_dir() {
+ if [ -x "$(which mcookie)" ]; then
+ tempd=/tmp/tmp.$(mcookie)
+ mkdir -p -m 0755 $tempd
+ elif [ -x "$(which openssl)" ]; then
+ tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | openssl dgst -md5)
+ mkdir -p -m 0755 $tempd
+ elif [ -x "$(which md5)" ]; then
+ tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | md5)
+ mkdir -p -m 0755 $tempd
+ elif [ -x "$(which mktemp)" ]; then
+ tempd=$(mktemp -d)
+ chmod 755 $tempd
+ ## Uncomment for insecure use, but don't blame me:
+ #else
+ # tempd=/tmp/tmp.$$
+ # mkdir -p -m 0755 $tempd
+ fi
+ if [ -d $tempd ]; then # success, return the name of the directory:
+ echo $tempd
+ else
+ echo "ERROR: Could not find mcookie, openssl, or md5."
+ echo " Exiting since a secure temporary directory could not be made."
+ exit 1
+ fi
+}
+
+# Get the meta data off of the rpm
+get_meta_data() {
+ RPM=$1
+ PRGNAM=$(rpm -qp --qf %{NAME} $RPM )
+ ARCH=$(rpm -qp --qf %{ARCH} $RPM )
+ VERSION=$(rpm -qp --qf %{VERSION} $RPM )
+ BUILD=$(rpm -qp --qf %{RELEASE} $RPM )
+}
+
+if [ "$1" = "" ]; then
+ usage
+fi
+
+ARGS=$(getopt "hsSndr" $* )
+set -- ${ARGS}
+for i; do
+ case "$1" in
+ -s)
+ DOC_SCRIPTS="true"
+ shift
+ ;;
+ -S)
+ INSTALL_SCRIPTS="true"
+ shift
+ ;;
+ -r)
+ DOC_REQUIRES="true"
+ shift
+ ;;
+ -d)
+ DESC="true"
+ shift
+ ;;
+ -n)
+ META_NAME="true"
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ esac
+done
+
+
+for i in $* ; do
+
+ # Determine if this is a source or binary RPM.
+ # If we have getrpmtype, use that. Otherwise, try "file".
+ if which getrpmtype 1> /dev/null 2> /dev/null; then
+ if getrpmtype -n $i | grep source 1> /dev/null 2> /dev/null ; then
+ isSource=1
+ else
+ isSource=0
+ fi
+ else # use file. This works fine on Slackware, and is the default.
+ if file $i | grep RPM | grep -w src 1> /dev/null 2> /dev/null ; then
+ isSource=1
+ else
+ isSource=0
+ fi
+ fi
+
+ # Create a temporary directory:
+ TMPDIR=$(make_temp_dir)
+
+ # Extract the RPM:
+ ofn=$TMPDIR/$(basename $i .rpm).cpio
+ if which rpm2cpio 1> /dev/null 2> /dev/null ; then
+ rpm2cpio $i > $ofn 2> /dev/null
+ if [ ! $? = 0 ]; then
+ echo "ERROR: rpm2cpio failed. (maybe $i is not an RPM?)"
+ rm -rf $TMPDIR
+ continue
+ fi
+ else # less reliable than rpm2cpio...
+ ( dd ibs=$(rpmoffset < $i) skip=1 if=$i 2> /dev/null | gzip -dc > $ofn 2>/dev/null ) || \
+ ( dd ibs=$(rpmoffset < $i) skip=1 if=$i 2> /dev/null | bzip2 -dc > $ofn 2>/dev/null )
+ fi
+ DEST=$TMPDIR
+ if [ "$isSource" = "1" ]; then
+ DEST=$DEST/$(basename $(basename $i .rpm) .src)
+ fi
+ mkdir -p $DEST
+ ( cd $DEST
+ cpio -i -m -d < $ofn 1> /dev/null 2> /dev/null
+ rm -f $ofn
+ find . -type d -perm 700 -exec chmod 755 {} \;
+ )
+
+ # Save the scripts in the rpm as documentation
+ if [ "$DOC_SCRIPTS" = "true" ]; then
+ get_meta_data $i
+ mkdir -p $TMPDIR/usr/doc/$PRGNAM-$VERSION/
+ for state in PREIN POSTIN PREUN POSTUN ; do
+ if [ "$(rpm -qp --qf %{$state} $i )" != '(none)' ] ; then
+ rpm -qp --qf %{$state} $i > $TMPDIR/usr/doc/$PRGNAM-$VERSION/$state.script
+ fi
+ done
+ fi
+
+ # Save the scripts in the rpm to be installed
+ if [ "$INSTALL_SCRIPTS" = "true" ]; then
+ mkdir -p $TMPDIR/install
+ echo '#!/bin/sh' > $TMPDIR/install/doinst.sh
+ for state in PREIN POSTIN ; do
+ if [ "$(rpm -qp --qf %{$state} $i )" != '(none)' ] ; then
+ rpm -qp --qf %{$state} $i > $TMPDIR/install/doinst.sh
+ echo "" >> $TMPDIR/install/doinst.sh
+ fi
+ done
+ fi
+
+ # Save the rpm's requires (dependencies) as documentation
+ if [ "$DOC_REQUIRES" = "true" ]; then
+ get_meta_data $i
+ mkdir -p $TMPDIR/usr/doc/$PRGNAM-$VERSION/
+ rpm -qp --qf %{REQUIRES} $i > $TMPDIR/usr/doc/$PRGNAM-$VERSION/README-$PRGNAM-rpm-dependencies.txt
+ fi
+
+ # Save the rpm's summary and description as the slack-desc
+ if [ "$DESC" = "true" ]; then
+ mkdir -p $TMPDIR/install
+ rpm -qp --qf %{SUMMARY} $i | sed -l 70 -r "s/^(.*)/$PRGNAM: $PRGNAM - \1\n/" > $TMPDIR/install/slack-desc
+ rpm -qp --qf %{DESCRIPTION} $i | sed -l 70 -r "s/^/$PRGNAM: /" >> $TMPDIR/install/slack-desc
+ fi
+
+ # If this program was called as "rpm2targz", then repack as a plain
+ # tar+gz archive. If it was called as "rpm2tgz", use Slackware's
+ # makepkg to produce the .tgz:
+ if [ "$(basename $0)" = "rpm2tgz" ]; then
+ (
+ cd $TMPDIR
+ if [ "$META_NAME" = "true" ]; then
+ get_meta_data $CWD/$i
+ makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz
+ else
+ makepkg -l y -c n $CWD/$(basename $i .rpm).tgz
+ fi
+ )
+ else
+ ( cd $TMPDIR ; tar cf - . ) > $(basename $i .rpm).tar
+ gzip -9 $(basename $i .rpm).tar
+ fi
+
+ # Remove temporary directory:
+ rm -rf $TMPDIR
+
+done
+
diff --git a/source.local/a/rpm2tgz/rpm2targz.README b/source.local/a/rpm2tgz/rpm2targz.README
new file mode 100644
index 0000000..2ce141c
--- /dev/null
+++ b/source.local/a/rpm2tgz/rpm2targz.README
@@ -0,0 +1,18 @@
+
+This package contains 'rpm2targz', a simple utility to convert Red Hat-style
+RPM packages into standard tar.gz archives. Converted binary packages can then
+be installed/removed using the 'installpkg/removepkg' commands, or 'pkgtool'.
+
+It's advisable to at least examine the converted package with 'less' to make
+sure it won't do anything too crazy to your system. If it does, Patrick
+Volkerding and David Cantrell are not responsible, so use this at your own
+risk. :-)
+
+By default, rpm2targz will attempt to use "file" to detect source RPMS, and will
+put the contents into a subdirectory in the resulting package. This may not be
+portable to other operating systems -- if you're trying to run rpm2targz on an
+OS that doesn't have a file that knows RPM types, and you care about this source
+RPM feature, you can compile and install David Cantrell's standalone getrpmtype
+utility. The getrpmtype.tar.gz source archive can be found in Slackware's
+source tree in source/a/rpm2tgz/.
+
diff --git a/source.local/a/rpm2tgz/rpm2tgz.SlackBuild b/source.local/a/rpm2tgz/rpm2tgz.SlackBuild
new file mode 100755
index 0000000..74d820f
--- /dev/null
+++ b/source.local/a/rpm2tgz/rpm2tgz.SlackBuild
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Modified 2012 by Eric Hameleers <alien at slackware.com> for ARM port.
+
+
+VERSION=1.2.2
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+MARCH=$( uname -m )
+if [ -z "$ARCH" ]; then
+ case "$MARCH" in
+ i?86) export ARCH=i486 ;;
+ armv7hl) export ARCH=$MARCH ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$MARCH ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-rpm2tgz
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+echo "+===========+"
+echo "| rpm2targz |"
+echo "+===========+"
+cd $TMP
+mkdir -p $PKG/usr/bin
+cc -o $PKG/usr/bin/rpmoffset $CWD/rpmoffset.c
+cat $CWD/rpm2targz > $PKG/usr/bin/rpm2targz
+
+# Apply some patches:
+( cd $PKG/usr/bin
+ # These are all against "rpm2tgz", so mv it until we are done patching:
+ mv rpm2targz rpm2tgz
+ zcat $CWD/patches/0001-fix-d-handling.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0004-produce-more-compliant-slack-desc.patch.gz | patch -p1 || exit 1
+ # Not applied. Rationale: We do not want to alter the files in the RPM.
+ #zcat $CWD/patches/0005-gzip-man-info-pages.patch.gz | patch -p1 || exit 1
+ # Not applied. Rationale: .tgz works with all versions of Slackware.
+ # Translated RPMs may be targeting systems with no .txz support.
+ #zcat $CWD/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz | patch -p1 || exit 1
+ # OK, I will take this version of the patch, as it doesn't change the
+ # default behaviour of rpm2tgz.
+ # mv the script back (wow, this is rather random ;-)
+ mv rpm2tgz rpm2targz
+ zcat $CWD/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0008-Avoid-none-values-in-slack-desc.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz | patch -p1 || exit 1
+) || exit 1
+
+( cd $PKG/usr/bin ; ln -sf rpm2targz rpm2tgz )
+( cd $PKG/usr/bin ; ln -sf rpm2targz rpm2txz )
+
+chmod 755 $PKG/usr/bin/{rpmoffset,rpm2targz}
+mkdir -p $PKG/usr/doc/rpm2targz
+cp -a $CWD/rpm2targz.README $PKG/usr/doc/rpm2targz/rpm2targz.README
+chown root:root $PKG/usr/doc/rpm2targz/rpm2targz.README
+chmod 644 $PKG/usr/doc/rpm2targz/rpm2targz.README
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/rpm2tgz-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source.local/a/rpm2tgz/rpmoffset.c b/source.local/a/rpm2tgz/rpmoffset.c
new file mode 100644
index 0000000..fd09e62
--- /dev/null
+++ b/source.local/a/rpm2tgz/rpmoffset.c
@@ -0,0 +1,25 @@
+
+/* Find how deeply inside an .RPM the real data is */
+/* kept, and report the offset in bytes */
+
+/* Wouldn't it be a lot more sane if we could just untar these things? */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+/* These offsets keep getting bigger, so we're going to just bite a 2MB */
+/* chunk of RAM right away so that we have enough. Yeah, horrible */
+/* quick and dirty implementation, but hey -- it gets the job done. */
+
+#define RPMBUFSIZ 2097152
+
+main()
+{
+ char *buff = malloc(RPMBUFSIZ),*eb,*p;
+ for (p = buff, eb = buff + read(0,buff,RPMBUFSIZ); p < eb; p++)
+ if ((*p == '\037' && p[1] == '\213' && p[2] == '\010') ||
+ (*p == 'B' && p[1] == 'Z' && p[2] == 'h' && '1' <= p[3] && p[3] <= '9' ))
+ printf("%d\n",p - buff),
+ exit(0);
+ exit(1);
+}
diff --git a/source.local/a/rpm2tgz/slack-desc b/source.local/a/rpm2tgz/slack-desc
new file mode 100644
index 0000000..8f8861b
--- /dev/null
+++ b/source.local/a/rpm2tgz/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+rpm2tgz: rpm2tgz (a tool for converting an RPM archive into a tar+gz one)
+rpm2tgz:
+rpm2tgz: Converts RPM format to Slackware's GNU tar + GNU zip format. (view
+rpm2tgz: converted packages with "less", install and remove with "installpkg",
+rpm2tgz: "removepkg", "pkgtool", or manually with "tar").
+rpm2tgz:
+rpm2tgz: Converted packages come with no warranty. ;-)
+rpm2tgz:
+rpm2tgz:
+rpm2tgz:
+rpm2tgz: