#!/bin/bash
# Return codes:
#   1- copy failed
#   2- media not mounted
#   3- no upgrade data
#   4- upgrade currently mounted 
#   5- upgrade partition not present or cannot be mounted
#   6- compare failed
#
# 5/2008 WML Add USB Key support by allowing mount point to be passed in
cleanup()
{
   cd /
   for i in $cpl
   do
     /bin/rm -f $UPGR_MOUNT/$i
   done
   /bin/rm -f $UPGR_MOUNT/doRestore
   /bin/rm -f $UPGR_MOUNT/upgrade.dat
   umount /mnt/upgrade
   exit $?
}
if [ "$1" != "" ]; then
   MOUNT_POINT="$1"
else
   MOUNT_POINT=/media/cdrom
fi
mount | grep -q "$MOUNT_POINT" 
if [ $? -ne 0 ]; then
   exit 2
fi
if [[ ! -f $MOUNT_POINT/SaveHSCSystemUpgradeData.tar ||
     ! -f $MOUNT_POINT/SaveCCFWUpgradeData.tar ||
     ! -f $MOUNT_POINT/SaveProfileDataUpgrade.tar ||
     ! -f $MOUNT_POINT/ACMSaveData.tar ||
     ! -f $MOUNT_POINT/RSCTSaveUpgrade.tar ]]; then
   exit 3
fi

UPGR_MOUNT=/mnt/upgrade
mount $UPGR_MOUNT 2>/dev/null
if [ $? -ne 0 ]; then
  mount | grep -q "$UPGR_MOUNT"
  if [ $? -eq 0 ]; then
     exit 4
  else
     exit 5 
  fi
fi
for i in $MOUNT_POINT/*.tar
do
  f=`/usr/bin/basename $i`
  cp -p $MOUNT_POINT/$f $UPGR_MOUNT/
  if [ $? -ne 0 ]; then
     cleanup 1
  fi
  cpl=$cpl" "$f
  sum1=`/usr/bin/sum $UPGR_MOUNT/$f | cut -d' ' -f1`
  sum2=`/usr/bin/sum $MOUNT_POINT/$f | cut -d' ' -f1`
  if [ "$sum1" != "$sum2" ]; then
     cleanup 6
  fi
done
/usr/bin/touch $UPGR_MOUNT/doRestore
/usr/bin/touch $UPGR_MOUNT/upgrade.dat
umount $UPGR_MOUNT
exit 0   
