#!/bin/sh

# write_rootfs.sh

. "$(dirname "$0")"/prmsg.sh

echo "write_rootfs.sh"

MP=/mnt/inactive_rootfs
mkdir -p $MP

img_tar=$1
img=/data/update/tmp/rootfs.ubi
next_rootfs_num=$2
next_boot_switch=$3

mkdir -p $(dirname $img)

echo "Entpacke $img_tar nach $(dirname $img) ..."
displayMsg "Unpack $img_tar" "$(dirname $img)"
if ! tar x -C $(dirname $img) -vf $img_tar
then
	echo "Konnte $img_tar nicht in $(dirname $img) entpacken"
    displayMsg "Unpack $img_tar" "failed!"
	exit 1
fi
echo "  Fertig entpackt: $img_tar nach $(dirname $img) ..."

if ! [ -f "$img" ]
then
	echo "Wider Erwarten existert nun $img nicht!"
	exit 1
fi

# TODO remove the following block after testing

if [ "$next_rootfs_num" != "$(fw_printenv -n my_rootfs0_num)" -a "$next_rootfs_num" != "$(fw_printenv -n my_rootfs1_num)" ]
then
	echo "ERROR: Unerwarteter berechneter Wert fuer naechste rootfs-Partition: $next_rootfs_num"
	exit 1
fi

echo "umount & ubidetach"
displayMsg "umount & ubidetach" "..."
umount $MP &>/dev/null
ubidetach -m ${next_rootfs_num} &>/dev/null

if ! ubiformat -y /dev/mtd${next_rootfs_num} -s 2048 -O 2048 -f ${img}
then
	echo "ERROR: Konnte rootfs nicht formatieren auf /dev/mtd${next_rootfs_num}"
	exit 1
fi


if ! ubiattach /dev/ubi_ctrl -m ${next_rootfs_num} -O 2048
then
	echo "ERROR: Konnte /dev/mtd${next_rootfs_num} nicht attachen!"
	exit 1
fi

if ubinfo /dev/ubi2 &> /dev/null
then
	if ! mount -t ubifs ubi2:rootfs $MP
	then
		echo "ERROR: Konnte /dev/mtd${next_rootfs_num} nicht mounten auf $MP"
		exit 1
	fi
else
if ! mount -t ubifs ubi1:rootfs $MP
	then
		echo "ERROR: Konnte /dev/mtd${next_rootfs_num} nicht mounten auf $MP"
		exit 1
	fi
fi

#echo "tar last rootfs"
#displayMsg "tar last rootfs" "..."
#if ! tar -c -C $(dirname $img) -v -zf /data/update/last_rootfs${next_boot_switch}.ubi.tgz $(basename $img)
##if ! cp "$img" /data/update/last_rootfs${next_boot_switch}
#then
#	echo "ERROR: Konnte image $img nicht sichern als /data/update/last_rootfs${next_boot_switch}.ubi.tgz"
#	exit 1
#fi
