#! /bin/sh

PATH=.:/bin:/sbin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib

if [ -f "/home/pidfile" ]; then
	cd /
else

if [ ! -e /home/shellpid ] ; then
if [ $HOME == "/" ] ; then

# create static device nodes under /dev dir
/etc/static_dev_nodes
#sleep 1

ROOTFS=`/bin/awk "\\$1==\"/dev/root\" {print \\$3}" /proc/mounts`
if [ "$ROOTFS" == "" ] ; then
	echo "==================== INITRAM_FS ===================="
elif [ "$ROOTFS" != "nfs" ] ; then 
	# awk[\042=" \047=']
	MTDDEV=`/bin/awk "\\$4==\"\042app_pri\042\" {print \\$1}" /proc/mtd`
	
	# init env variables
	APP_PRT=no
	CFG_PRT=no
	loop=0
	
	if [ "$MTDDEV" == "mtd13:" ] ; 
	then 

		if [ "$KRN_PRT" = "pri" ]
		then
		
			# try app pri: /dev/mtd13
			/usr/sbin/mount_ubifs_prt.sh 13 1 /dav
			if [ "$?" = "0" ]
			then
				/usr/sbin/check_dir /dav
				if [ "$?" = "0" ]
				then
					APP_PRT=pri
				else
					/usr/sbin/umount_ubifs_prt.sh /dav 1
				fi
			fi
		
			if [ "$APP_PRT" = "no" ]
			then
				# try app second partition: /dev/mtd14
				/usr/sbin/mount_ubifs_prt.sh 14 2 /dav
				if [ "$?" = "0" ]
				then
					/usr/sbin/check_dir /dav
					if [ "$?" = "0" ]
					then
						APP_PRT=sec
						# recover app_pri partition
						/bin/echo "Recovering app_pri partition ..."
						/bin/mkdir -p /dav_rcy
						/usr/sbin/format_ubifs_prt.sh 13 1 app_pri
						/bin/mount -t ubifs /dev/ubi1_0 /dav_rcy
						/bin/cp -a /dav/* /dav_rcy/
						/usr/sbin/umount_ubifs_prt.sh /dav_rcy 1
						/bin/rm -rf /dav_rcy
						/bin/echo "Done!"
					else
						/usr/sbin/umount_ubifs_prt.sh /dav 2
					fi
				fi
			fi
			
			if [ "$APP_PRT" = "no" ]
			then
				# app_pri and app_sec are all broken! enter recovery mode?
				/bin/echo "Fatal error: app partitions are broken!"
			fi

		else # KRN_PRT == sec
		
			# try app second partition: /dev/mtd14
			/usr/sbin/mount_ubifs_prt.sh 14 2 /dav
			if [ "$?" = "0" ]
			then
				/usr/sbin/check_dir /davinci
				if [ "$?" = "0" ]
				then
					APP_PRT=sec
				else
					/usr/sbin/umount_ubifs_prt.sh /dav 2
				fi
			fi
			
			if [ "$APP_PRT" = "no" ]
			then
				# try app pri partition: /dev/mtd13
				/usr/sbin/mount_ubifs_prt.sh 13 1 /dav
				if [ "$?" = "0" ]
				then
					/usr/sbin/check_dir /dav
					if [ "$?" = "0" ]
					then
						APP_PRT=pri
						# recover app_sec partition
						/bin/echo "Recovering app_sec partition ..."
						/bin/mkdir -p /dav_rcy
						/usr/sbin/format_ubifs_prt.sh 14 2 app_sec
						/bin/mount -t ubifs /dev/ubi2_0 /dav_rcy
						/bin/cp -a /dav/* /dav_rcy/
						/usr/sbin/umount_ubifs_prt.sh /dav_rcy 2
						/bin/rm -rf /dav_rcy
						/bin/echo "Done!"
					else
						/usr/sbin/umount_ubifs_prt.sh /dav 1
					fi
				fi
			fi
			
			if [ "$APP_PRT" = "no" ]
			then
				# app_pri and app_sec are all broken! enter recovery mode?
				/bin/echo "Fatal error: app partitions are broken!"
			fi
			
		fi # end of "$KRN_PRT" == "pri"

		
		# process cfg partition
		cfg_pri_need_rcy=0
		
		# try cfg pri: /dev/mtd15
		/usr/sbin/mount_ubifs_prt.sh 15 3 /davinci
		if [ "$?" = "0" ]
		then
			/usr/sbin/check_dir /davinci
			if [ "$?" = "0" ]
			then
				CFG_PRT=pri
			else
				/usr/sbin/umount_ubifs_prt.sh /davinci 3
			fi
		fi
		
		if [ "$CFG_PRT" = "no" ]
		then
			/bin/echo "format cfg pri partition and mount"
			/usr/sbin/format_ubifs_prt.sh 15 3 cfg_pri
			/bin/mount -t ubifs /dev/ubi3_0 /davinci
			cfg_pri_need_rcy=1
		fi
		
		#process cfg sec: /dev/mtd16
		/usr/sbin/mount_ubifs_prt.sh 16 4 /config
		if [ "$?" = "0" ]
		then
			/usr/sbin/check_dir /config
			if [ "$?" = "0" ]
			then
				CFG_PRT=sec
			else
				/usr/sbin/umount_ubifs_prt.sh /config 4
			fi
		fi
		
		if [ "$CFG_PRT" != "sec" ]
		then
			/bin/echo "format cfg sec partition and mount"
			/usr/sbin/format_ubifs_prt.sh 16 4 cfg_sec
			/bin/mount -t ubifs /dev/ubi4_0 /config
			/bin/cp -a /davinci/* /config/
		fi
		
		if [ "$cfg_pri_need_rcy" = "1" ]
		then
			/bin/echo "recover cfg pri partition"
			/bin/cp -a /config/* /davinci/
		fi
		
		export APP_PRT
		export CFG_PRT
	
	fi
else 
	echo "==================== NFS ROOT_FS ===================="
fi 

if [ -e /dav/initrun.sh ] ; then
	cp /dav/initrun.sh /home/initrun.sh
	/bin/chmod 777 /home/initrun.sh
	
	echo "Hit Ctrl+c to stop and exec /home/initrun.sh to continue"
	sleep 1
	
	/usr/sbin/guard.sh&
	
	/home/initrun.sh
	echo "1" > /home/shellpid
fi

fi # end check $HOME is COM 
fi # not need run this script again

fi # end check pidfile
#/bin/route add default gw 192.0.0.200
