#!/bin/sh

export LC_ALL=POSIX
export LC_CTYPE=POSIX

prefix=${1}
if [ -z "$prefix" ]; then
	echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--scriptwrapper]"
	exit 1;
fi
h=`sort busybox.links | uniq`
scriptwrapper="n"
cleanup="0"
noclobber="0"
case "$2" in
	--hardlinks)     linkopts="-f";;
	--symlinks)      linkopts="-fs";;
	--scriptwrapper) scriptwrapper="y";swrapall="y";;
	--sw-sh-hard)    scriptwrapper="y";linkopts="-f";;
	--sw-sh-sym)     scriptwrapper="y";linkopts="-fs";;
	--cleanup)       cleanup="1";;
	--noclobber)     noclobber="1";;
	"")              h="";;
	*)               echo "Unknown install option: $2"; exit 1;;
esac

if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then
	# get the target dir for the libs
	# assume it starts with lib
	libdir=$($CC -print-file-name=libc.so | \
		 sed -n 's%^.*\(/lib[^\/]*\)/libc.so%\1%p')
	if test -z "$libdir"; then
		libdir=/lib
	fi

	mkdir -p $prefix/$libdir || exit 1
	for i in $DO_INSTALL_LIBS; do
		rm -f $prefix/$libdir/$i || exit 1
		if [ -f $i ]; then
			cp -a $i $prefix/$libdir/ || exit 1
			chmod 0644 $prefix/$libdir/$i || exit 1
		fi
	done
fi

if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/busybox" ]; then
	inode=`ls -i "$prefix/bin/busybox" | awk '{print $1}'`
	sub_shell_it=`
	cd "$prefix"
	for d in usr/sbin usr/bin sbin bin; do
		pd=$PWD
		if [ -d "$d" ]; then
			cd $d
			ls -iL . | grep "^ *$inode" | awk '{print $2}' | env -i xargs rm -f
		fi
		cd "$pd"
	done
	`
	exit 0
fi

rm -f $prefix/bin/busybox || exit 1
mkdir -p $prefix/bin || exit 1
install -m 755 busybox $prefix/bin/busybox || exit 1

for i in $h; do
	appdir=`dirname $i`
	mkdir -p $prefix/$appdir || exit 1
	if [ "$scriptwrapper" = "y" ]; then
		if [ "$swrapall" != "y" ] && [ "$i" = "/bin/sh" ]; then
			ln $linkopts busybox $prefix$i || exit 1
		else
			rm -f $prefix$i
			echo "#!/bin/busybox" > $prefix$i
			chmod +x $prefix/$i
		fi
		echo "	$prefix$i"
	else
		if [ "$2" = "--hardlinks" ]; then
			bb_path="$prefix/bin/busybox"
		else
			case "$appdir" in
			/)
				bb_path="bin/busybox"
			;;
			/bin)
				bb_path="busybox"
			;;
			/sbin)
				bb_path="../bin/busybox"
			;;
			/usr/bin|/usr/sbin)
				bb_path="../../bin/busybox"
			;;
			*)
			echo "Unknown installation directory: $appdir"
			exit 1
			;;
			esac
		fi
		if [ "$noclobber" = "0" ] || [ ! -e "$prefix$i" ]; then
			echo "  $prefix$i -> $bb_path"
			ln $linkopts $bb_path $prefix$i || exit 1
		else
			echo "  $prefix$i already exists"
		fi
	fi
done

exit 0
