#!/bin/sh

IPADDR=172.21.98.33
GAD_TAR=gadgets.tar.bz2

usage ()
{
	echo "Gadgets version 1.0							2008/10/1"
	echo "Gadgets offers a lot of handy utilities. Now it includes:"
	echo "	1. busybox, that includes find, top, vi, ...."
	echo "	2. gdbserver"
	echo "Design ideas of gadgets:"
	echo "	It's easy to install Gadgets into these targets:"
	echo "		1. usbdisk"
	echo "		2. /tmp"
	echo "		3. some directory"
	echo "	After installing of gadgets, you can use the utilities it offers easily."
	echo "Usages of gadgets:"
	echo "	gadget install usb [disk] (ex: gadget install usb sda1):"
	echo "		Acquire tarball of gadgets from $IPADDR, and then install gadgets"
	echo "		into usbdisk \"[disk]\"."
	echo "	gadget install tmp:"
	echo "		Acquire tarball of gadgets from $IPADDR, and then install gadgets"
	echo "		into /tmp."
	echo "	gadget install dir [dir] (ex: gadget install dir /mnt/hda/tmp):"
	echo "		Acquire tarball of gadgets from $IPADDR, and then install gadgets"
	echo "		into the specified directory \"[dir]\"."
	echo "	gadget setup usb:"
	echo "		If some usbdisk already has gadgets, it will try to find out the"
	echo "		usbdisk that had gadgets, and then just do some setting for it."
	echo "	gadget setup dir [dir] (ex: gadget setup dir /mnt/hda/tmp):"
	echo "		If some directory already has gadgets, just do some setting for it."
	echo "		No need to install gadgets again."
}

if [ "$1" = "install" ]; then
	if [ "$2" = "usb" ] && [ $# = 3 ] && [ -d /mnt/usbmounts/$3 ]; then
		rm -rf /mnt/usbmounts/$3/gadgets
		if [ $? != 0 ]; then
			echo "Error! USB disk \"$3\" is not writable."
			exit
		fi
		mkdir -p /mnt/usbmounts/$3/gadgets
		cd /tmp; tftp -g -r $GAD_TAR $IPADDR
		cd /mnt/usbmounts/$3; tar xjvpf /tmp/$GAD_TAR
		mkdir -p /tmp/bin; rm -rf /tmp/bin/*
		cd /tmp/bin; tar xjvpf /mnt/usbmounts/$3/gadgets/gadgets_link.tar.bz2
		for ff in `find /tmp/bin`; do if [ "`basename \`readlink $ff\``" = "busybox" ]; then rm -f $ff && ln -s /mnt/usbmounts/$3/gadgets/busybox `basename $ff`; fi; done
		for ff in `find /mnt/usbmounts/$3/gadgets`; do if [ "`basename $ff`" != "busybox" ] && [ "`basename $ff`" != "gadgets_link.tar.bz2" ]; then ln -s $ff /tmp/bin; fi; done
	elif [ "$2" = "dir" ] && [ $# = 3 ] && [ -d /$3 ]; then
		rm -rf /$3/gadgets
		if [ $? != 0 ]; then
			echo "Error! Directory \"$3\" is not writable."
			exit
		fi
		mkdir -p /$3/gadgets
		cd /tmp; tftp -g -r $GAD_TAR $IPADDR
		cd /$3; tar xjvpf /tmp/$GAD_TAR
		mkdir -p /tmp/bin; rm -rf /tmp/bin/*
		cd /tmp/bin; tar xjvpf /$3/gadgets/gadgets_link.tar.bz2
		for ff in `find /tmp/bin`; do if [ "`basename \`readlink $ff\``" = "busybox" ]; then rm -f $ff && ln -s /$3/gadgets/busybox `basename $ff`; fi; done
		for ff in `find /$3/gadgets`; do if [ "`basename $ff`" != "busybox" ] && [ "`basename $ff`" != "gadgets_link.tar.bz2" ]; then ln -s $ff /tmp/bin; fi; done
	elif [ "$2" = "tmp" ] && [ $# = 2 ]; then
		mkdir -p /tmp/bin; rm -rf /tmp/bin/*
		cd /tmp; tftp -g -r $GAD_TAR $IPADDR
		tar xjvpf /tmp/$GAD_TAR; cd /tmp/bin; tar xjvpf /tmp/gadgets/gadgets_link.tar.bz2; rm /tmp/gadgets/gadgets_link.tar.bz2; cp /tmp/gadgets/* /tmp/bin/
		rm -rf /tmp/gadgets; rm -rf /tmp/$GAD_TAR
	else
		echo Command error! Type \"$0\" to see help.
		exit
	fi
	/tmp/bin/sh
	exit
elif [ "$1" = "setup" ]; then
	mkdir -p /tmp/bin; rm -rf /tmp/bin/*
	if [ "$2" = "usb" ] && [ $# = 2 ]; then
		for dir in `ls /mnt/usbmounts/`;
		do
			if [ -f /mnt/usbmounts/$dir/gadgets/gadgets_link.tar.bz2 ]; then
				cd /tmp/bin; tar xjvpf /mnt/usbmounts/$dir/gadgets/gadgets_link.tar.bz2
				for ff in `find /tmp/bin`; do if [ "`basename \`readlink $ff\``" = "busybox" ]; then rm -f $ff && ln -s /mnt/usbmounts/$dir/gadgets/busybox `basename $ff`; fi; done
				for ff in `find /mnt/usbmounts/$dir/gadgets`; do if [ "`basename $ff`" != "busybox" ] && [ "`basename $ff`" != "gadgets_link.tar.bz2" ]; then ln -s $ff /tmp/bin; fi; done
				break
			fi
		done
	elif [ "$2" = "dir" ] && [ $# = 3 ]; then
		if [ -f /$3/gadgets/gadgets_link.tar.bz2 ]; then
			cd /tmp/bin; tar xjvpf /$3/gadgets/gadgets_link.tar.bz2
			for ff in `find /tmp/bin`; do if [ "`basename \`readlink $ff\``" = "busybox" ]; then rm -f $ff && ln -s /$3/gadgets/busybox `basename $ff`; fi; done
			for ff in `find /$3/gadgets`; do if [ "`basename $ff`" != "busybox" ] && [ "`basename $ff`" != "gadgets_link.tar.bz2" ]; then ln -s $ff /tmp/bin; fi; done
			break
		fi
	else
		echo Command error! Type \"$0\" to see help.
		exit
	fi
	/tmp/bin/sh
	exit
elif [ $# -gt 0 ]; then
	echo Command error! Type \"$0\" to see help.
	exit
else
	usage
fi




