#!/bin/sh

local_check_sum()
{
	if [ ! -f $1 ] || [ ! -f $2 ]; then
		return 1
	fi

	local file_cksum=$(/sbin/cksum $1)
	local file_crc=$(echo $file_cksum | cut -d ' ' -f 1)
	local file_size=$(echo $file_cksum | cut -d ' ' -f 2)

	local cksum_cksum=$(< $2)
	local cksum_crc=$(echo $cksum_cksum | cut -d ' ' -f 1)
	local cksum_size=$(echo $cksum_cksum | cut -d ' ' -f 2)

	if [ $file_crc = $cksum_crc ] && [ $file_size = $cksum_size ]; then
		return 0
	fi

	return 1
}

install_PKGs()
{
	local FLASH_TMP="/flashfs_tmp"

# check if the HAL subsystem exist
	if [ -x /sbin/hal_app ]; then
		local BOOT_DEV=$(/sbin/hal_app --get_boot_pd port_id=0)
	else
		local BOOT_DEV="/dev/sdx"
	fi

	local FLASH_RFS1=${BOOT_DEV}2
	local FLASH_RFS2=${BOOT_DEV}3
	local _INSTALL_PATH=$1
	
	local BOOT_CONF=$(< /etc/default_config/BOOT.conf)
	[ "x${BOOT_CONF}" = "xTS-NASX86" ] || return 0
	
	[ -d $FLASH_TMP ] || /bin/mkdir $FLASH_TMP
	/bin/mount $FLASH_RFS1 $FLASH_TMP -o ro
	[ -d ${_INSTALL_PATH} ] || /bin/mkdir ${_INSTALL_PATH}
	[ -d ${_INSTALL_PATH} ] || return 1
	local_check_sum "$FLASH_TMP/boot/qpkg.tar" "$FLASH_TMP/boot/qpkg.tar.cksum"

	if [ $? = 0 ]; then
		/bin/tar xf $FLASH_TMP/boot/qpkg.tar -C ${_INSTALL_PATH}
		/bin/umount $FLASH_RFS1
	else
		/bin/umount $FLASH_RFS1
		/bin/mount $FLASH_RFS2 $FLASH_TMP -o ro
		local_check_sum "$FLASH_TMP/boot/qpkg.tar" "$FLASH_TMP/boot/qpkg.tar.cksum"
		[ $? = 0 ] && /bin/tar xf $FLASH_TMP/boot/qpkg.tar -C ${_INSTALL_PATH}
		/bin/umount $FLASH_RFS2
	fi

	/bin/rmdir $FLASH_TMP
}

FindDefVol()
{
	VOLMPS="HDA_DATA HDB_DATA HDC_DATA HDD_DATA HDE_DATA HDF_DATA HDG_DATA HDH_DATA HDI_DATA HDJ_DATA HDK_DATA HDL_DATA HDM_DATA HDN_DATA HDO_DATA HDP_DATA MD0_DATA MD1_DATA MD2_DATA MD3_DATA MD4_DATA MD5_DATA"
	[ -x /usr/bin/dirname ] || /bin/ln -sf /bin/busybox /usr/bin/dirname
	_pdir=$(/sbin/getcfg Public path -f /etc/config/smb.conf)

	if [ ! -z $_pdir ] && [ -d $_pdir ]; then
		DEF_VOLMP=$(/usr/bin/dirname "$_pdir")
	else
		DEF_VOLMP=
	fi

	if [ -z $DEF_VOLMP ]; then
		PubShare=$(/sbin/getcfg SHARE_DEF defPublic -d Public -f /etc/config/def_share.info)
		for _vn in $VOLMPS; do
			[ -d "/share/$_vn/${PubShare}" ] && DEF_VOLMP="/share/$_vn"
		done
	fi

	if [ ! -z "$DEF_VOLMP" ] && [ -d "$DEF_VOLMP" ]; then
		/bin/grep "$DEF_VOLMP" /proc/mounts 1>/dev/null 2>/dev/null
		return $?
	fi

	return 1
}
