#!/bin/sh
echo $#
if [ $# -ne 3 ]; then
    echo "---------err1---------"
	echo "should have three params: 1:sda,sdb,... 2:add or remove 3:utf8,gb2312 "
    exit 1
fi

echo "UDEV = $1 ACTION = $2 CHARSET_TMP = $3"

UDEV=$1
ACTION=$2
CHARSET_TMP=$3

if [ "$CHARSET_TMP" == "utf8" ];then
	CHARSET=utf8
elif [ "$CHARSET_TMP" == "gb2312" ];then
	CHARSET=cp936
elif [ "$CHARSET_TMP" == "iso8859-1" ];then
	CHARSET=iso8859-1
else
	CHARSET=""
fi

echo -e "\n CHARSET=$CHARSET"
USBBASE=/storage

MOUNTDEVS=`mount | grep sd | awk '{print $1}' | awk -F / '{print $3}'`
echo "MOUNTDEVS=$MOUNTDEVS"
for dev in $MOUNTDEVS
do
	if [ -n "`cat /proc/partitions | grep $dev`" ];then
		continue
	fi

	echo -e "\n Umount Dev ==== $dev"
	RMDIR=`mount | grep /dev/$dev | awk '{print $3}'`
	if [ -n "$RMDIR" ];then
		umount $RMDIR
		echo -e "\n RMDIR=$RMDIR"
		rmdir $RMDIR && echo "rmdir [OK]" || echo "rmdir [FAIL]"
	fi
done


if [ "$ACTION" == "add" ];then
	DEVNUM=`cat /proc/partitions | grep $UDEV | wc -l`
	echo "Partition num = [$DEVNUM-1]"
	if [ $DEVNUM -gt 1 ]; then
		j=2
		echo "j=$j"
		for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
		do
		    echo $i
		    if [ ${j} -gt $DEVNUM ];then
	        	break
		    fi

			DEVPATH=`fdisk -l | grep $UDEV${i} | awk '{print $1}' | sed -n '1p'`
			echo "DEVPATH=$DEVPATH"
			if [ -z $DEVPATH  ]; then
				continue
			else
				j=`expr $j + 1`
			fi

			BOOTFLAG=`fdisk -l | grep $DEVPATH | awk '{print $2}' | sed -n '1p'`
			if [ "$BOOTFLAG" = "*" ]; then
			     DEVTYPE=`fdisk -l | grep $DEVPATH | awk '{print $6}' | sed -n '1p' `
			else
	             DEVTYPE=`fdisk -l | grep $DEVPATH | awk '{print $5}' | sed -n '1p'`
	        fi

			if [ "$DEVTYPE" =  "5" ] || [ "$DEVTYPE" = "f" ] || [ "$DEVTYPE" =  "85" ]
			then
			    echo "FileSysten [EXTENDED] mount [NoNeed]"
			    MOUNT_FLAG=0
			else
				MOUNT_FLAG=1
			fi

		    if [ $MOUNT_FLAG -eq 1 ];then
		     	if [ "$DEVTYPE" = "4" ] || [ "$DEVTYPE" = "6" ] || [ "$DEVTYPE" = "b" ] || [ "$DEVTYPE" = "c" ] || [ "$DEVTYPE" = "e" ] || [ "$DEVTYPE" = "ef" ];then
					echo -n "FileSysten [FAT16 or FAT32 ]"
				  	for U_WIN_DIR in c d e f g h i j k l m n o p q r #C D E F G H I J K L
					do
						MOUNTPATH=`mount |grep sd | grep $USBBASE/$U_WIN_DIR | awk '{print $3}'`
						MOUNTDEV=`mount | grep sd | grep $USBBASE/$U_WIN_DIR | awk '{print $1}' | awk -F / '{print $3}'`

						if [ -z "$MOUNTPATH" ];then
							break;
						elif [ -n "$MOUNTDEV" ];then
#							echo "MOUNTPATH=$MOUNTPATH"
#							echo "MOUNTDEV=$MOUNTDEV"
							DEVSNUM=0
							UNFIND=0
							for TempDev in $MOUNTDEV
							do
								DEVSNUM=`expr $DEVSNUM + 1`
								if [ -z "`cat /proc/partitions | grep $TempDev`" ];then
									UNFIND=`expr $UNFIND + 1`
								fi
							done
							if [ $UNFIND == $DEVSNUM ];then
								echo -e "\nCover the disk: $U_WIN_DIR\n"
								break;
							fi
					 	fi
					done

					echo "U_WIN_DIR======== $U_WIN_DIR"
					if [ ! -d $USBBASE/$U_WIN_DIR ];then
						echo "Creat disk $U_WIN_DIR"
				    	mkdir -p "$USBBASE/$U_WIN_DIR"
					fi

					if [ "$CHARSET" != "" ];then
		               mount -t vfat -o shortname=mixed -o iocharset=$CHARSET  "$DEVPATH" "$USBBASE/$U_WIN_DIR" && echo "mount OK" || mount -t tntfs  "$DEVPATH" "$USBBASE/$U_WIN_DIR"
                    else
					   mount -t vfat -o shortname=mixed "$DEVPATH" "$USBBASE/$U_WIN_DIR"  &&  echo " mount [OK]" || mount -t tntfs  "$DEVPATH" "$USBBASE/$U_WIN_DIR"
					fi

				elif [ "$DEVTYPE" = "7" ];then
				    echo -n "FileSysten [NTFS]"
				  	for U_WIN_DIR in c d e f g h i j k l m n o p q r #C D E F G H I J K L
					do
						MOUNTPATH=`mount |grep sd | grep $USBBASE/$U_WIN_DIR | awk '{print $3}'`
						MOUNTDEV=`mount | grep sd | grep $USBBASE/$U_WIN_DIR | awk '{print $1}' | awk -F / '{print $3}'`

						if [ -z "$MOUNTPATH" ];then
							break;
						elif [ -n "$MOUNTDEV" ];then
#							echo "MOUNTPATH=$MOUNTPATH"
#							echo "MOUNTDEV=$MOUNTDEV"
							DEVSNUM=0
							UNFIND=0
							for TempDev in $MOUNTDEV
							do
								DEVSNUM=`expr $DEVSNUM + 1`
								if [ -z "`cat /proc/partitions | grep $TempDev`" ];then
									UNFIND=`expr $UNFIND + 1`
								fi
							done

							if [ $UNFIND == $DEVSNUM ];then
								echo "Cover the disk: $U_WIN_DIR"
								break;
							fi
					 	fi
					done

					echo "U_WIN_DIR======== $U_WIN_DIR"
					if [ ! -d $USBBASE/$U_WIN_DIR ];then
						echo "Creat disk $U_WIN_DIR"
				    	mkdir -p "$USBBASE/$U_WIN_DIR"
					fi


					if [ "$CHARSET" != "" ];then
						mount -t tntfs -o iocharset=$CHARSET  "$DEVPATH" "$USBBASE/$U_WIN_DIR" || mount "$DEVPATH" "$USBBASE/$U_WIN_DIR" && echo "mount OK" ||echo "mount FAIL"
					else
					 	mount -t tntfs  "$DEVPATH" "$USBBASE/$U_WIN_DIR" || mount "$DEVPATH" "$USBBASE/$U_WIN_DIR" && echo "mount OK" ||echo "mount FAIL"
					fi

				elif [ "$DEVTYPE" = "82" ]  ||  [ "$DEVTYPE" = "83" ]  ||  [ "$DEVTYPE" = "8e" ];then
				    echo -n "FileSysten [  EXT2 or EXT3 ]"
				  	for U_WIN_DIR in c d e f g h i j k l m n o p q r #C D E F G H I J K L
					do
						MOUNTPATH=`mount |grep sd | grep $USBBASE/$U_WIN_DIR | awk '{print $3}'`
						MOUNTDEV=`mount | grep sd | grep $USBBASE/$U_WIN_DIR | awk '{print $1}' | awk -F / '{print $3}'`

						if [ -z "$MOUNTPATH" ];then
							break;
						elif [ -n "$MOUNTDEV" ];then
#							echo "MOUNTPATH=$MOUNTPATH"
#							echo "MOUNTDEV=$MOUNTDEV"
							DEVSNUM=0
							UNFIND=0
							for TempDev in $MOUNTDEV
							do
								DEVSNUM=`expr $DEVSNUM + 1`
								if [ -z "`cat /proc/partitions | grep $TempDev`" ];then
									UNFIND=`expr $UNFIND + 1`
								fi
							done

							if [ $UNFIND == $DEVSNUM ];then
								echo -e "\nCover the disk: $U_WIN_DIR\n"
								break;
							fi
					 	fi
					done

					echo "U_WIN_DIR======== $U_WIN_DIR"
					if [ ! -d $USBBASE/$U_WIN_DIR ];then
						echo "Creat disk $U_WIN_DIR"
				    	mkdir -p "$USBBASE/$U_WIN_DIR"
					fi

					if [ "$CHARSET" != "" ];then
				    	mount  "$DEVPATH" "$USBBASE/$U_WIN_DIR" && echo " mount [OK]" || echo " mount [FAIL]"
					else
						mount  "$DEVPATH" "$USBBASE/$U_WIN_DIR" && echo " mount [OK]" || echo " mount [FAIL]"
					fi
				fi
	        fi
		done
	fi
else
	RMDIR=`mount | grep /dev/$UDEV | awk '{print $3}'`
	if [ -n "$RMDIR" ];then
		echo -e "\n RMDIR=$RMDIR"
		umount $RMDIR
		rmdir $RMDIR && echo "rmdir [OK]" || echo "rmdir [FAIL]"
	fi
fi
