#!/bin/sh

export LC_ALL=POSIX
export LC_CTYPE=POSIX

prefix=$1
if [ -z "$prefix" ]; then
	echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--binaries/--scriptwrapper]"
	exit 1
fi

# Source the configuration
. ./.config

h=`sort busybox.links | uniq`

sharedlib_dir="0_lib"

linkopts=""
scriptwrapper="n"
binaries="n"
cleanup="0"
noclobber="0"
case "$2" in
	--hardlinks)     linkopts="-f";;
	--symlinks)      linkopts="-fs";;
	--binaries)      binaries="y";;
	--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
			echo "   Installing $i to the target at $prefix/$libdir/"
			cp -pPR "$i" "$prefix/$libdir/" || exit 1
			chmod 0644 "$prefix/$libdir/`basename $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"`
	app=`basename "$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"
	elif [ "$binaries" = "y" ]; then
		# Copy the binary over rather
		if [ -e $sharedlib_dir/$app ]; then
			if [ "$noclobber" = "0" ] || [ ! -e "$prefix/$i" ]; then
				echo "   Copying $sharedlib_dir/$app to $prefix/$i"
				cp -pPR $sharedlib_dir/$app $prefix/$i || exit 1
			else
				echo "  $prefix/$i already exists"
			fi
		else
			echo "Error: Could not find $sharedlib_dir/$app"
			exit 1
		fi
	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
