#!/bin/bash

case $1 in
	""|"-h"|--help)
		cat << EOF
`basename $0` (C) 1999-2002 Salmaso Raffaele, 2006-2021 PaulTT
This program is distribuited under the GNU General Public License
You are not allowed to remove the copyright notice

  usage: `basename $0` file [file2 ... filen] [target-dir]
    - file* = a list of files to be uncompressed
    - target-dir = where the uncompressed files have to go

`basename $0` can recognize these extensions = 
    .tar.bz .bz .tar.bz2 .bz2 .tar.Z .taz .Z .tz .tar.gz .tgz
    .tar.xz .xz .7z .rom .bpp .etheme .edj  .gz .tar .deb .dsc .ipk
    .rpm .zip (.exe) .xpi .cbr .rar .ace .cab .jar .xar .lha .lhz
EOF
		exit 0
		;;
esac

export IFS=$'\n\t'

for pkg in $@
do
	if [ -f "$pkg" ]; then
		# BEWARE: between $PKGS and $pkg there must
		#         be a damn'd tab character
		PKGS="$PKGS	$pkg"
	else
		DEST="$pkg"
	fi
done

#set target dir
SOURCE="`pwd`"
if [ ! "$DEST" = "" ]; then
	if [ ! -d $DEST ]; then
		mkdir -p $DEST
	fi
	cd $DEST
fi

for pkg in $PKGS
do
	pkg=$SOURCE/$pkg

	shopt -s nocasematch
	case "$pkg" in
		*.7z)      7z x "$pkg" -o"`basename \"$pkg\" .7z`";;
		*.7z.001)  7z x "$pkg" -o"`basename \"$pkg\" .7z.001`";;
		*.tar.bz)  bzip -cd "$pkg" | tar xvf - ;;
		*.bz)      bzip "$pkg" ;;
		*.tar.bz2) bzip2 -cd "$pkg" | tar xvf - ;;
		*.bz2)     bzip2 -d "$pkg" ;;
		*.tar.Z|*.taz)
		           tar Zxvf "$pkg" ;;
		*.Z)       gunzip "$pkg" ;;
		*.tar.gz|*.tgz|*.bpp|*.etheme|*.tz)
		           tar zxvf "$pkg" ;;
		*.gz)      gunzip "$pkg" ;;
		*.tar)     tar xvf "$pkg" ;;
		*.zip)
		           unzip -d"`basename \"$pkg\" .zip`" "$pkg" ;;
		*.cbz|*.xpi|*.exe)
		           unzip "$pkg" ;;
		*.edj)     edje_decc "$pkg" ;;
		*.deb)     alien -t -c -g "$pkg" ;;
		*.ipk)
		           basepkg=`basename "$pkg"` ;
		           ln -s "$basepkg" /tmp/"$basepkg"$$.deb && \
		           alien -t -c -g /tmp/"$basepkg"$$.deb && \
		           rm /tmp/"$basepkg"$$.deb ;
		           ;;
		*.rpm)     alien -t -c -g "$pkg" ;;
		*.dsc)     dpkg-source -x "$pkg" ;;
		*.rom)     unzip -L "$pkg" ;;
		*.cbr|*.rar)
		           unrar x "$pkg"  ;;
		*.ace)     unace e "$pkg" ;;
		*.cab)     cabextract "$pkg" ;;
		*.cpio)
		           basepkg=`basename "$pkg" .cpio` ;
		           mkdir "$basepkg" && \
		           cd "$basepkg" && \
		           cpio -idv <  "$pkg" ;;
		*.jar)     jar xvf "$pkg" ;;
		*.xar|*.pkg)     xar -xvf "$pkg" ;;
		*.lha|*.lhz)     lha x "$pkg" ;;
		*.tar.xz)   tar Jxvf "$pkg" ;;
		*.xz)      xz -d "$pkg" ;;
		*)         echo "`basename $0`: archive type not supported" ;;
	esac
	shopt -u nocasematch
done

exit $?

