[ Bdale Garbee ]
* update mailcap entries to use %s, closes: #681302
+ * include the http://www.gnu.org/software/tar/utils/tarcat script for use
+ with multi-volume archives, closes: #492036
-- Bdale Garbee <bdale@gag.com> Mon, 01 Apr 2013 09:17:04 -0600
libexecdir=`pwd`/debian/tar/usr/sbin
install -m 755 debian/rmt.sh debian/tar/etc/rmt
mv debian/tar/usr/sbin/rmt debian/tar/usr/sbin/rmt-tar
+ install -m 755 debian/tarcat debian/tar/usr/sbin/tarcat
# Build architecture-independent files here.
binary-indep: build install
--- /dev/null
+#! /bin/sh
+# Usage: tarcat volume1 volume2 ...
+# concatenates a GNU tar multi-volume archive into a single tar archive.
+# Author: Bruno Haible <bruno@clisp.org>, Sergey Poznyakoff <gray@gnu.org.ua>
+
+# dump_type FILE [N]
+# Print type character from block N (default 0) of tar archive FILE
+dump_type() {
+ dd if="$1" skip=${2:-0} bs=512 count=1 2>/dev/null |
+ tr '\0' ' ' |
+ cut -c157
+}
+
+case `dump_type "$1"` in
+ [gx]) PAX=1;;
+esac
+
+cat "$1"
+shift
+for f
+do
+ SKIP=0
+ T=`dump_type "$f"`
+ if [ -n "$PAX" ]; then
+ if [ "$T" = "g" ]; then
+ # Global extended header.... 2 blocks
+ # Extended header........... 2 blocks
+ # Ustar header.............. 1 block
+ # FIXME: This calculation is will fail for very long file names.
+ SKIP=5
+ fi
+ else
+ if [ "$T" = "V" ]; then
+ T=`dump_type "$f" 1`
+ fi
+ if [ "$T" = "M" ]; then
+ SKIP=$(($SKIP + 1))
+ fi
+ fi
+ dd skip=$SKIP if="$f"
+done
+