#!/bin/sh
#
# Script args:
# $0: full path to script
# $1: full path to top level package dir, no trailing slash
# $2: full path to installed location
# $3:  ????? Path to install Volume????
# $4:  ?????

current_dir=$(dirname $0)
$current_dir/UpdateWizardServer &
$current_dir/uninstall_script

update_extension_10_6()
{

    kextload -t /System/Library/Extensions/MBBFCDataCardACMData.kext

    sleep 5

    PID=`ps -axc | grep kextd | perl -e '($a,$r,$z)=split /  */, <>; print $r;'`
    kill -HUP $PID

    if sw_vers -productVersion |grep -c 10.6; then
    touch /System/Library/Extensions
    fi

}

update_extension()
{
	os_higher_ver=`(sw_vers -productVersion) | awk -F '.' '{if (($1 + 0) > 10 || (($1 + 0) == 10 && ($2  + 0) >= 9)) {print "true"} else {print "false"}}'`
	if [ $os_higher_ver = "true" ]; then
		kextload -t /Library/Extensions/MBBFCDataCardACMData_10_9.kext
	else
		kextload -t /System/Library/Extensions/MBBFCDataCardACMData.kext
	fi
    PID=`ps -axc | grep kextd | perl -e '($a,$r,$z)=split /  */, <>; print $r;'`
    kill -HUP $PID

    touch /System/Library/Extensions

}

update_driver()
{
    echo "path is :"
    echo $1
	os_higher_ver=`(sw_vers -productVersion) | awk -F '.' '{if (($1 + 0) > 10 || (($1 + 0) == 10 && ($2  + 0) >= 9)) {print "true"} else {print "false"}}'`
	if [ $os_higher_ver = "true" ]; then
        rm -Rf /System/Library/Extensions/MBBFCDataCardACMData.kext
        rm -Rf /Library/Extensions/MBBFCDataCardACMData_10_9.kext

		cp -Rf "$1" /Library/Extensions/MBBFCDataCardACMData_10_9.kext
		
        chown -R root:wheel /Library/Extensions/MBBFCDataCardACMData_10_9.kext
        chmod -R 755 /Library/Extensions/MBBFCDataCardACMData_10_9.kext	
	else
		rm -Rf /System/Library/Extensions/MBBFCDataCardACMData.kext
		cp -Rf "$1" /System/Library/Extensions/MBBFCDataCardACMData.kext
	 
		chown -R root:wheel /System/Library/Extensions/MBBFCDataCardACMData.kext
		chmod -R 755 /System/Library/Extensions/MBBFCDataCardACMData.kext
		chown -R root:wheel /System/Library/Extensions/USBExpressCardCantWake_Huawei.kext
		chmod -R 755 /System/Library/Extensions/USBExpressCardCantWake_Huawei.kext
	fi
		rm /System/Library/Extensions.kextcache
		kextcache -k /System/Library/Extensions
		rm -Rf /System/Library/Caches
		touch /System/Library/Extensions

		if sw_vers -productVersion |grep -c 10.6; then
			update_extension_10_6
		else
			update_extension
		fi
}
install_driver()
{
    VERSIONVOL=3
    OLD_FILE="/System/Library/Extensions/MBBFCDataCardACMData.kext"
	NEW_FILE="$1/Contents/Info.plist"
	OLD_VERSIONLINE=$[ $(cat -n $OLD_FILE/Contents/Info.plist |grep "CFBundleShortVersionString" |cut -d \< -f1)+1 ]
	NEW_VERSIONLINE=$[ $(cat -n $NEW_FILE |grep "CFBundleShortVersionString" |cut -d \< -f1)+1 ]
    if [ "$(ls /System/Library/Extensions/ |grep MBBFCDataCardACMData)" != "" ]
    then
		NEED_UPDATE=0
        EXT_VERSION=$(cat -n $OLD_FILE/Contents/Info.plist |head -n 20 |grep $OLD_VERSIONLINE |cut -f $VERSIONVOL |cut -d \< -f2 |cut -d \> -f2)
        VERSION=$(cat -n $NEW_FILE |head -n 20 |grep $NEW_VERSIONLINE |cut -f $VERSIONVOL |cut -d \< -f2 |cut -d \> -f2)
		
		
		EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $4}'` 
        if [ "$(echo $EXT_TEMP)" != "" ]
		then
		    TEMP=`echo $VERSION |awk -F '.' '{print $4}'`
		    COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
		    if [ $COMPARE = "0" ] 
		    then
			    EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $1}'`
		        TEMP=`echo $VERSION |awk -F '.' '{print $1}'`
                COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
                if [ $COMPARE -lt "0" ]
		        then
		            echo "COMPARE < 0" #packet is old
			        NEED_UPDATE=0
		        else
			        if [ $COMPARE = "0" ]
		            then
				        EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $2}'`
		                TEMP=`echo $VERSION |awk -F '.' '{print $2}'`
                        COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
				        if [ $COMPARE -lt "0" ]
				        then
				            NEED_UPDATE=0 #packet is old
				        else
				            if [ $COMPARE = "0" ]
					        then
						        EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $3}'`
		                        TEMP=`echo $VERSION |awk -F '.' '{print $3}'`
                                COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
						        if [ $COMPARE -le "0" ]
						        then
						            NEED_UPDATE=0 #packet is old
						        else
						            NEED_UPDATE=1
						        fi
					        else
					            NEED_UPDATE=1
					        fi
				        fi
		            else
			            NEED_UPDATE=1
			        fi
		        fi
		    else
		        NEED_UPDATE=1
		    fi
		else
			NEED_UPDATE=1
	    fi
        if [ $NEED_UPDATE = "0" ]
        then
		    echo "NEED_UPDATE = 0"
            #rm -Rf /System/Library/MBBFCDataCardACMData.kext
            #rm -Rf /System/Library/USBExpressCardCantWake_Huawei.kext
        else
            update_driver "$1"
        fi
    else
        update_driver "$1"
    fi
}
install_driver "$1"
exit 0
