#! /bin/sh
#
# rcS
#
# Call all S??* scripts in /etc/rcS.d/ in numerical/alphabetical order
#

do_create_snapshot()
{
	if [ -e /sys/power/boot ]; then
		read BOOT_MODE < /sys/power/boot
		if [ "$BOOT_MODE" = "n" ]; then
			return 0
		fi
	fi

	if [ -e /mnt/ubi1/fw/snapshot ]; then
		return 1
	fi
	
	return 0
}

mount -a
mount -t sysfs sysfs /sys
mdev -s

#insmod /usr/lib/dw_mmc_sdcard-pltfm.ko
insmod /usr/lib/exfat_core.ko
insmod /usr/lib/exfat_fs.ko
echo 1 > /sys/devices/platform/dw_mmc_sdcard.0/support_card

# attach/mount rw partition.
if [ ! -e /dev/ubi1_0 ]; then
	ubiattach -p /dev/mtd6 -d 1
	mdev -s
fi
mkdir -p /mnt/ubi1
mount -t ubifs /dev/ubi1_0 /mnt/ubi1

do_create_snapshot
CREATE_SNAPSHOT=$?

# enable upgrade gui
if [ $CREATE_SNAPSHOT -eq 1 ]; then
	fw_upgrade_display on
fi

# attach/mount adj partition.
if [ ! -e /dev/ubi2_0 ]; then
	ubiattach -p /dev/mtd7 -d 2
	mdev -s
fi
mkdir -p /mnt/ubi2
mount -t ubifs /dev/ubi2_0 /mnt/ubi2

# link /pref to rw partition.
mkdir -p /mnt/ubi1/pref
if [ "`readlink /pref`" != "/mnt/ubi1/pref" ]; then
	ln -s /mnt/ubi1/pref /pref
fi

# link /adj to rw partition.
if [ "`readlink /adj`" != "/mnt/ubi2" ]; then
	ln -s /mnt/ubi2 /adj
fi

# path of rw_volume
datapath=/mnt/ubi1/data
orgpath=/org

if [ ! -e $orgpath ]; then
	mkdir -p $orgpath
fi

# move some directory to rw partition.
rwvar="/var/lib \
       /data/misc/wifi \
       /opt/dbspace \
       /opt/apps/com.samsung.browser/data \
       /opt/var/cache/fontconfig \
       /opt/var/kdb/db/setting"

for i in $rwvar; do	
	if [ ! -L $i ]; then
		mkdir -p $datapath/$i
		cp -a --parents $i $datapath
		cp -a --parents $i $orgpath
		rm -rf $i
		ln -sf `realpath $datapath/$i` $i
	fi
done

# This is used before hibernation.
xclvar="/opt/dbspace/.app_info.db \
        /opt/dbspace/.app_info.db-journal"
		
for i in $xclvar; do
	if [ ! -L $i ]; then
		rm -rf $i
		ln -sf `realpath $orgpath/$i` $i
	fi
done

# load home to /var/tmp from /opt/home_org
mkdir -p /var/tmp/home
cp -a /opt/home_org/* /var/tmp/home
if [ "`readlink /opt/home`" != "/var/tmp/home" ]; then
	rm -rf /opt/home
	ln -sf /var/tmp/home /opt/home
fi
if [ ! -L "/home" ]; then
	rm -rf /home
	ln -sf /opt/home /home
fi

# create sym link for /var/cache/fontconfig
ln -sf /opt/var/cache/fontconfig /var/cache/fontconfig

# efl
if [ -e /root/.e/e/config/profile.1.cfg ]; then
	mv /root/.e/e/config/profile.1.cfg /root/.e/e/config/profile.cfg
fi

# Xorg
if [ ! -e /opt/etc/X11/xorg.conf.d ]; then
	ln -s /opt/etc/X11/xorg.conf.d.default /opt/etc/X11/xorg.conf.d
fi

# audio
NX300_sound_initializer -i

#rtc
/usr/bin/rtc_s

# system
/etc/init.d/vconf-init
/etc/init.d/sendsigs start
/etc/init.d/system_server.sh

# application
/etc/rc.d/rc3.d/S04dbus-daemon_run

# power manager
/usr/bin/pmctrl start

#sensor framework
#/etc/init.d/sfsvc

# inhouse
chmod -R 777 /dev/*
chown -R root:app /sys/devices/*
chmod -R 777 /sys/devices/*
chmod -R 777 /sys/*
chmod 777 /sys/class/gpio/unexport

chmod -R 777 /opt/home/app
chmod -R 777 /opt/apps/com.samsung.browser/data

# load sysctrl.conf
sysctl -p > /dev/null

# Activate network interfaces
/sbin/ifup -a

# init/load all pref objects (not daemon)
/usr/bin/prefman.sh --start

# init Adjustment Data to default value.(in case 'there is no adjsutment data')
/usr/bin/production-mode -c

# mount iLinker cd image 
# mkdir -p /mnt/cdrom

# create /data/misc/wifi/mac.info file.
if [ -f /data/misc/wifi/mac.info ]; then
	echo "mac.info file is exist!"
	# cat /data/misc/wifi/mac.info
else
	#echo "mac.info file is not exist!!"
	/usr/bin/production-mode -m > /data/misc/wifi/mac.info
fi

# create snapshot image if the flag is set by firmware upgrade.
if [ $CREATE_SNAPSHOT -eq 1 ]; then
	echo 1 > /sys/devices/platform/leds-gpio/leds/af/brightness
	echo 1 > /sys/devices/platform/leds-gpio/leds/card/brightness

	read BOOT_COUNT < /mnt/ubi1/fw/snapshot
	BOOT_COUNT=`expr $BOOT_COUNT + 1`
	echo $BOOT_COUNT > /mnt/ubi1/fw/snapshot
	sync
	
	export DISPLAY=":0"
	export TSLIB_TSDEVICE=/dev/event1
	export USER=root
	export HOSTNAME=nx300
	export LD_LIBRARY_PATH=/usr/lib:./lib
	export HOME=/root
	export E_LIB_DIR=/usr/lib
	export E_BIN_DIR=/usr/bin
	export SLP_BUFMGR_MODULE=gem
	export KDB_DIR=/opt/var/kdb
	export OMX_CONFIG=/opt/etc/gst-openmax.conf
	export E_PREFIX=/usr
	export BINDIR=/usr/bin
	export LIBDIR=/usr/lib
	export TERM=xterm
	export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin:/usr/local/bin:/usr/scripts
	export DISPLAY=:0
	export LANG=en_US.UTF-8
	export XMODIFIERS=@im=Ami
	export PREFIX=/usr
	export SHELL=/bin/sh
	export DATADIR=/usr/share/enlightenment
	export PWD=/opt/home/root
	export ELM_NO_FINGER_WAGGLING=0.8.0.0
	export E_DATA_DIR=/usr/share/enlightenment
	export ELM_THEME=tizen-hd
	
	# set flag to initialize rtc time.
#	FW_UPGRADE_CHECK=`prefman info 1 | grep APPPREF_FW_UPGRADE_CHECK | awk '{print $1}'`
#	prefman set 1 $FW_UPGRADE_CHECK l 1

	hib2.sh

else
	echo off > /sys/power/led
fi


export MMF_DEBUG=0

