#! /bin/sh
CRAMFS_TOOLS=/mnt/dev/sda13/LaCinema/bin

do_unpack () {
rm -rf ./unpacked tmp.cramfs
tail -c +33 $1 > tmp.cramfs
$CRAMFS_TOOLS/cramfsck -b 16384 -x unpacked tmp.cramfs
rm tmp.cramfs
}

do_md5sum()
{
  cd unpacked
  FILES=`mktemp` 
  find . -type f |grep -v ./md5sum.txt |sort > $FILES
  OLDFILES=`mktemp` 
  cut -d\  -f3- ./md5sum.txt | sort > $OLDFILES
  cut -d\  -f3- ./md5sum.txt |while read a ; do md5sum "$a" ; done > newmd5sum.txt

  NEWFILES=`mktemp`
  diff -u $OLDFILES $FILES  |fgrep +./ |cut -c2- > $NEWFILES
  if [ -s $NEWFILES ] ; then
    cat $NEWFILES | while read a ; do md5sum "$a" ; done >> newmd5sum.txt
  fi

  touch -r md5sum.txt newmd5sum.txt
  chown 1000:232 newmd5sum.txt
  mv newmd5sum.txt md5sum.txt
  rm -f $FILES $OLDFILES $NEWFILES
  cd -
}

do_pack () {
rm -f newFW.bin
do_md5sum
$CRAMFS_TOOLS/mkcramfs -b 16384 -g unpacked newFW.bin
md5sum newFW.bin | head -c 32 > new_$1
cat newFW.bin >> new_$1
rm -f newFW.bin tmp.cramfs
}

do_clean () {
rm -fR newFW.bin tmp.cramfs unpacked
}


case "$1" in
  pack)
        do_pack ${2:-mini_hd.bin}
        ;;
  unpack)
        do_unpack ${2:-mini_hd.bin}
        ;;
  clean)
        do_clean
        ;;
  *)
        echo "Usage: $0 [pack|unpack|clean]" >&2
        exit 3
        ;;
esac

:

