#!/bin/sh
#211022 sfs
#bvv 13.02.15(добавлена возможность работы с deb-пакетами
#  с разным сжатием, которое понимает "ar")
#DPKG_DEB=dpkg-deb

if [ ! "`which bsdtar 2>/dev/null`" ] ;then
	var=`ar -t "$2"|grep 'data.tar'|cut -f 3 -d '.'`
else
	var=`bsdtar -tf "$2"|grep 'data.tar'|cut -f 3 -d '.'`
fi
	[ "$var" = "gz" ] && v=z || v=J
	[ "$var" = "zst" ] && v=" --zstd -" 

mcdpkg_deb_list () {

#$DPKG_DEB -xOf "$1" data.tar.gz |tar -tvvzf - | awk '
#ar p "$1" data.tar.$var |tar -t"$v"vf -  |awk '{print "#"$1"#"$2"#"$3"#"$4"#"$5"#"$6" "$7" "$8" "$9"}' | awk '
if [ "`which bsdtar 2>/dev/null`" ] ;then
#	bsdtar -xOf "$1" data.tar.$var |tar -t"$v"vf - | awk '
	bsdtar -xOf "$1" data.tar.$var |tar -t${v}vf - | awk '
{
	sub("/", " ", $2)
	date = substr($4, 6, 2) "-" substr($4, 9, 2) "-" substr($4, 1, 4) " " $5
	name = $6
	{if($7 != ""){name = name " " $7}}
	{if($8 != ""){name = name " " $8}}
	{if($9 != ""){name = name " " $9}}
	{if($10 != ""){name = name " " $10}}
	{if($11 != ""){name = name " " $11}}
	{if($12 != ""){name = name " " $12}}
	{if($13 != ""){name = name " " $13}}
	printf "%s 1 %s %s %s %s\n", $1, $2, $3, date, name
}'
else
ar p "$1" data.tar.$var |tar -t"$v"vf - | awk '
{
	sub("/", " ", $2)
	date = substr($4, 6, 2) "-" substr($4, 9, 2) "-" substr($4, 1, 4) " " $5
	name = $6
	{if($7 != ""){name = name " " $7}}
	{if($8 != ""){name = name " " $8}}
	{if($9 != ""){name = name " " $9}}
	{if($10 != ""){name = name " " $10}}
	{if($11 != ""){name = name " " $11}}
	{if($12 != ""){name = name " " $12}}
	{if($13 != ""){name = name " " $13}}
	printf "%s 1 %s %s %s %s\n", $1, $2, $3, date, name
}'
fi
}

mcdpkg_deb_copyout () {
	TMP_DIR="`mktemp -d`"
if [ "`which bsdtar 2>/dev/null`" ] ;then
#	bsdtar -x $1 $TMP_DIR > /dev/null
	cd $TMP_DIR
	bsdtar -xOf $1 data.tar.$var |tar -x"$v"f -  > /dev/null
else
	cd $TMP_DIR
#ar p "$1" data.tar.gz |tar -xzf - 
ar p "$1" data.tar.$var |tar -x"$v"f - ./"$2"
fi
	mv "$TMP_DIR"/"$2" "$3"
	[ -d "$TMP_DIR" ] && rm -r "$TMP_DIR"
}

LC_ALL=C

cmd="$1"
shift

case "$cmd" in
  list)
    mcdpkg_deb_list "$@" | sed 's# \.# # ; s# /$##' |grep "/" ;
    exit 0;;
  copyout)
    mcdpkg_deb_copyout "$@";
    exit 0;;
esac
exit 1
