#!/sbin/sh

OUTFD=$2
ZIP=$3
CURDIR=$(pwd)

ui_print() {
  echo -n -e "ui_print $1\n" > /proc/self/fd/$OUTFD
  echo -n -e "ui_print\n" > /proc/self/fd/$OUTFD
}

ui_print " ";
ui_print " - mounting system partition"
mount /system

ui_print " - mounting data partition"
mount /data

ui_print " - flashing boot.img"
unzip -p $ZIP boot.img > /dev/block/platform/15570000.ufs/by-name/BOOT 2>/dev/null

ui_print " - removing Knox"
cd /system

rm -rf *app/Bridge*
rm -rf *app/ContainerAgent*
rm -rf *app/ContainerEventsRelayManager*
rm -rf *app/DiagMonAgent*
rm -rf *app/ELMAgent*
rm -rf *app/FotaClient*
rm -rf *app/FWUpgrade*
rm -rf *app/HLC*
rm -rf *app/KLMSAgent*
rm -rf *app/Knox*
rm -rf *app/KNOX*
rm -rf *app/LocalFOTA*
rm -rf *app/RCPComponents*
rm -rf *app/SecKids*
rm -rf *app/SecurityLogAgent*
rm -rf *app/SPDClient*
rm -rf *app/UniversalMDMClient*
rm -rf container/Knox*

sed -i -e '/ro.securestorage.knox/c\ro.securestorage.knox=false' build.prop
sed -i -e '/ro.securestorage.support/c\ro.securestorage.support=false' build.prop
sed -i -e '/ro.config.timaversion/d' build.prop
sed -i -e '/ro.config.tima/c\ro.config.tima=0' build.prop
sed -i -e '/ro.config.knox/c\ro.config.knox=0' build.prop

cd $CURDIR

if [ ! -e /system/swapfile ]; then
	ui_print " - creating /system/swapfile"
	FREE=$(busybox df -k /system | busybox grep "/system" | busybox awk '{print $3}')
	SWAPSIZE=$((($FREE - 102400) / 131072 * 128))
	if [ "$SWAPSIZE" -ge "1" ]; then
        	ui_print "   creating $SWAPSIZE MB swap"
	        busybox dd if=/dev/zero of=/system/swapfile bs=1048576 count=$SWAPSIZE > /dev/null 2>&1
	else
        	ui_print "   insufficient /system available space!"
	fi
fi

ui_print " - tuning file systems"
fstrim -v /system > /dev/null 2>&1
fstrim -v /data   > /dev/null 2>&1
fstrim -v /cache  > /dev/null 2>&1

ui_print " - unmounting partition /data"
umount /data > /dev/null 2>&1

ui_print " - unmounting partition /system"
umount /system > /dev/null 2>&1

ui_print " "
ui_print "finished"
sync
