#!/system/bin/sh
#
# Malez @2010
#
# check if freespace is enough to copy
# apps and dalvik from $1 to $2
#SOURCE=$1
#DEST=$2
#

usage (){
	echo "Check if freespace is enough to copy"
	echo "specified directories from MOUNTPOINT1 to MOUNTPOINT2"
	echo "with a least more than EXTRASIZE Ko free"
	echo "Directories must exist"
	echo ""
	echo "EXTRASE is in Ko"
	echo "ex $0 /system/sd /data 10000 app app-private"
	echo "usage :"
	echo "$0 MOUTPOINT1 MOUNTPOINT2 EXTRASIZE dir1 dir2"
	exit 1
}


if [ a$3 == "a" ] || [ ! -d $1 ] || [ ! -d $2 ]; then
usage 
fi

SOURCE=$1
DEST=$2
EXTRA=$3

shift
shift
shift

CTRL=""
for i in $@
do
	if [ -d $SOURCE/${i} ]
	then
		CTRL="$SOURCE/${i} $CTRL"
	#
	else 
	    # usage 
	    echo " $SOURCE/${i} does not exist"
	fi
	shift
done

#echo "LIST=$CTRL"

NEEDED=$(du -sk $CTRL |awk \
  'BEGIN {sigma=0}\
  {sigma=sigma+$1 } \
  END {printf ("%d", sigma)}')


AVAILABLE=$(df | grep "^${DEST}:" | awk \
  '{printf ("%d", $6)}')

echo "$SOURCE -> $DEST"
echo "Needed real : $NEEDED K"
echo "Needed extra : $EXTRA K"
NEEDED=$(( $NEEDED + $EXTRA ))
echo "Needed total : $NEEDED K"

echo "Available : $AVAILABLE K"

if [ $NEEDED -gt $AVAILABLE ]; then
	echo "WARNING : not enough free space in $DEST"
	echo "Need $NEEDED K has $AVAILABLE K available"
	exit 1
else	
	echo "Free space OK"
	exit 0
fi
