#! /bin/sh

###############################################################################
###									    ###
###			GNU Interactive Tools unpack script	    	    ###
###	 Copyright (C) 1997-2000, 2006-2007 Free Software Foundation, Inc.  ###
###		    Written by Tudor Hulubei and Viorel Anghel.		    ###
###									    ###
###############################################################################


# We can have one or two arguments.
if test "$#" -lt 2; then
    echo "usage: $0 destdir archives..."
    exit 1
fi

destdir="$1"
srcdir=`pwd`

cd "$destdir" 2> /dev/null
if test "$?" -ne 0; then
    gitmkdirs "$destdir"
    if test "$?" -ne 0; then
	exit 1;
    fi

    cd "$destdir"
    if test "$?" -ne 0; then
	exit 1;
    fi
fi

exit_code=0
while true; do
    archive=$2

    if test -d "$archive"; then
	echo "$0: $archive: not a regular file" >&2
	exit_code=1
    else
	# `ln' will fail if $destdir is the same as $srcdir.
	ln -s "$srcdir/$archive" "$archive" 2> /dev/null
	link_created=$?

	case "$archive" in
	*.[tT][aA][rR])                  tar -xvf "$archive";;
	*.[tT][aA][rR].[bB][zZ])         bzip -dc "$archive"|tar -xvf -;;
	*.[tT][aA][rR].[bB][zZ]2)        bzip2 -dc "$archive"|tar -xvf -;;
	*.[tT][aA][rR].[gG][zZ])         gzip -dc -- "$archive"|tar -xvf -;;
	*.[tT][aA][rR].[zZ])             uncompress -dc "$archive"|tar -xvf -;;
	*.[cC][pP][iI][oO])		 cat "$archive"|cpio -i -d;;
	*.[cC][pP][iI][oO].[bB][zZ])     bzip -dc "$archive"|cpio -i -d;;
	*.[cC][pP][iI][oO].[bB][zZ]2)    bzip2 -dc "$archive"|cpio -i -d;;
	*.[cC][pP][iI][oO].[gG][zZ])     gzip -dc -- "$archive"|cpio -i -d;;
	*.[cC][pP][iI][oO].[zZ])         uncompress -dc "$archive"|cpio -i -d;;
	*.[tT][gG][zZ])                  gzip -dc -- "$archive"|tar -xvf -;;
	*.[tT][aA][zZ])                  uncompress -dc "$archive"|tar -xvf -;;
	*.[tT][rR][zZ])                  uncompress -dc "$archive"|tar -xvf -;;
	*.[jJ][aA][rR])                  jar -xvf "$archive";;
	*.[zZ][iI][pP])                  unzip -o "$archive";;
	*.[aA][rR][jJ]|*.[aA][0-9][0-9]) unarj x "$archive";;
	*.[rR][aA][rR]|*.[rR][0-9][0-9]) rar x -y -r -v "$archive";;
	*.[lL][hH][aA]) 		 lha -xvf "$archive";;
	*.[lL][zZ][hH])		         lha -xvf "$archive";;
	*.[zZ])			         uncompress "$archive";;
	*.[bB][zZ])			 bzip -d "$archive";;
	*.[bB][zZ]2)		         bzip2 -d "$archive";;
	*.[gG][zZ])			 gunzip "$archive";;
	*.[sS][hH][aA][rR])		 sh "$archive";;
	*.[uU][uU])			 uudecode "$archive";;
	*.[rR][pP][mM])		         rpm2cpio "$archive"|cpio -v -i -d;;
	*.[dD][eE][bB])		         ar -xv "$archive";;
	*.[aA])			         ar -xv "$archive";;
	*) echo "$0: $archive: unknown archive type" >&2
	   exit_code=1
	esac

	if test $? -ne 0; then
	    exit_code=$?
	fi

	if test "$link_created" -eq 0; then
	    rm "$archive"
	fi
    fi

    shift
    if test $# -eq 1; then
	exit $exit_code
    fi
done
