Commit 6a6cfc01 authored by Guillem Jover's avatar Guillem Jover Committed by Colin Watson

Add uncompressed and xz control.tar deb member support

These are currently not accepted by the Debian archive, but are
supported since dpkg 1.17.6, and they do not incur any additional
dependency from the host system. This is mostly for completeness'
sake, as Debian base packages with uncompressed or xz control.tar
members are probably not going to be used at all.
parent c0f8fb8b
......@@ -805,10 +805,22 @@ extract_dpkg_deb_data () {
extract_ar_deb_field () {
local pkg="$1"
local field="$2"
local tarball=$(ar -t "$pkg" | grep "^control\.tar")
ar -p "$pkg" control.tar.gz | zcat |
tar -O -xf - control ./control 2>/dev/null |
grep -i "^$field:" | sed -e 's/[^:]*: *//' | head -n 1
case "$tarball" in
control.tar.gz) cat_cmd=zcat ;;
control.tar.xz) cat_cmd=xzcat ;;
control.tar) cat_cmd=cat ;;
*) error 1 UNKNOWNCONTROLCOMP "Unknown compression type for %s in %s" "$tarball" "$pkg" ;;
if type $cat_cmd >/dev/null 2>&1; then
ar -p "$pkg" "$tarball" | $cat_cmd |
tar -O -xf - control ./control 2>/dev/null |
grep -i "^$field:" | sed -e 's/[^:]*: *//' | head -n 1
error 1 UNPACKCMDUNVL "Extracting %s requires the %s command, which is not available" "$pkg" "$cat_cmd"
extract_ar_deb_data () {
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment