From ca808bf8a20219b556ba0bd829d25b21ba81ab20 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Mon, 1 Apr 2013 09:51:00 -0600 Subject: [PATCH] include tarcat in the package --- debian/changelog | 2 ++ debian/rules | 1 + debian/tarcat | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 debian/tarcat diff --git a/debian/changelog b/debian/changelog index 7669dfa1..961f213f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ tar (1.26+dfsg-5) UNRELEASED; urgency=low [ 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 Mon, 01 Apr 2013 09:17:04 -0600 diff --git a/debian/rules b/debian/rules index d978367b..241026ed 100755 --- a/debian/rules +++ b/debian/rules @@ -63,6 +63,7 @@ install: build 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 diff --git a/debian/tarcat b/debian/tarcat new file mode 100644 index 00000000..5c2671a1 --- /dev/null +++ b/debian/tarcat @@ -0,0 +1,42 @@ +#! /bin/sh +# Usage: tarcat volume1 volume2 ... +# concatenates a GNU tar multi-volume archive into a single tar archive. +# Author: Bruno Haible , Sergey Poznyakoff + +# 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 + -- 2.30.2