#!/bin/bash
# gunzip and bunzip2 script capabilities
# included tar options
# version 0.11
# TODO : add save path and save information for tar information
# 14 November 2005
# Duckz
#
# 23 November 2005
# Version update = ver 0.11
# added automatic file type selection for .tar .gz/.tgz and .bz2
#
# 24 November 2005
# Version update = ver 0.12
# added .zip functionality


E_NOARGS=65
ZIPSAVEPATH=$1_dir # this will save path to zipname_dir, you can specify other path.
OPTS=xf  # you can use xvf option for verbose or xf for clean layout.
FILENAME=choice # temporary filename for sorting purposes
FILE1=.gz # file extension trap 1
FILE2=.bz2 # file extension trap 2
FILE3=.tar # file extension trap 3
FILE4=.zip # file extension trap 4

if [ -z "$1" ]

then
        echo " Usage : `basename $0` filename"
        exit $E_NOARGS

else
	echo $1 > $FILENAME
	cat $FILENAME | grep $FILE1 &> /dev/null

		if [ "$?" = "0" ]
	then 
 	g=1
	else

	cat $FILENAME | grep $FILE2 &> /dev/null

		if [ "$?" = "0" ]
		then 
		b=1
		else
		
		cat $FILENAME | grep $FILE3 &> /dev/null
		if [ "$?" = "0" ]
			then 
			t=1
			
			else
			
			cat $FILENAME | grep $FILE4 &> /dev/null
			
			if [ "$?" = "0" ] 
			then

			zip=1
			else
			w=1
#			fi
	
rm -f $FILENAME
	fi
fi
fi
fi 

if [ "$g" = "1" ] 

	then

	echo "Found $FILE1 type, starting extracting $1"
	
        tar -z$OPTS $1 &> /dev/null # remove &> /dev/null for displaying tar error messages, FIXME= can put save information to file.

		if [ "$?" = "0" ]
			then	
        			
        			echo "Finished extracting $1"
			else
    			   	
    			   	echo "Error extracting $1" 
    		
		fi
rm -f $FILENAME
exit $E_NOARGS

fi

if [ "$b" = "1" ]
	then
	
	echo "Found $FILE2 type, starting extracting $1"
	
		
        tar -j$OPTS $1 &> /dev/null # remove &> /dev/null for displaying tar error messages, FIXME= can put save information to file.
        
        	if [ "$?" = "0" ]

		then
        		
			echo "Finished extracting $1"
		
		else
        		
        		echo "Error extracting $1"
		fi
rm -f $FILENAME
exit $E_NOARGS
fi

if [ "$t" = "1" ]
	then
	
	echo "Found $FILE3 type file, starting extracting $1"
	
		
        tar -$OPTS $1 &> /dev/null # remove &> /dev/null for displaying tar error messages, FIXME= can put save information to file.
        
        	if [ "$?" = "0" ]

		then
        		
			echo "Finished extracting $1"
		
		else
        		
        		echo "Error extracting $1"
		fi
rm -f $FILENAME
exit $E_NOARGS
fi

#Start Code for zip

if [ "$zip" = "1" ]
	then
	
	echo "Found $FILE4 type file, starting extracting $1"
	
		
        unzip -d $ZIPSAVEPATH $1 &> /dev/null # remove &> /dev/null for displaying tar error messages, FIXME= can put save information to file.
        
        	if [ "$?" = "0" ]

		then
        		
			echo "Finished extracting $1 to $ZIPSAVEPATH"
		
		else
        		
        		echo "Error extracting $1"
		fi
rm -f $FILENAME
exit $E_NOARGS


else
	if [ "$w" = "1" ] ; then 
		
		echo "Wrong file type" 
		echo "Only supports $FILE1, $FILE2, $FILE3 and $FILE4 file type"
		echo "Error extracting $1"
		
		else
		
		echo "File error"
		echo "Support only $FILE1, $FILE2, $FILE3 and $FILE4 file type"
		echo "Error extracting $1"
	fi
		
rm -f $FILENAME
exit $E_NOARGS
fi
fi

