#!/bin/sh

TEMP_WORK_DIR=tmp_mkdreambox_1
TEMP_WORK_FILE1=tmp_mkdreambox_2
TEMP_WORK_FILE2=tmp_mkdreambox_3
TEMP_WORK_FILE3=tmp_mkdreambox_4

## some tool checks
TOOL_MKCRAMFS="${0%mkdreamboxfs*}mkcramfs"
if [ ! -x "$TOOL_MKCRAMFS" ]; then
  echo "Need the mkcramfs tool in same dir as mkdreamboxfs"
  echo "See original package"
  exit 0
fi
TOOL_MKSQUASHFS="${0%mkdreamboxfs*}mksquashfs"
if [ ! -x "$TOOL_MKSQUASHFS" ]; then
  echo "Need the mksquashfs tool in same dir as mkdreamboxfs"
  echo "See original package"
  exit 0
fi

if [ ! -e "/dev/zero" ]; then
  echo "Need the /dev/zero device"
  exit 0
fi

##check command line
if [ "$1" = "" -o "$2" = "" ]; then
  echo "Simple mkdreamboxfs script/tool for PPC/DB"
  echo "http://t-hydron.verkoyen.be"
	echo ""
  echo "Usage:"
  echo "mkdreamboxfs inputdir out.img"
  echo "Example:"
  echo "mkdreamboxfs my_dir cool.img"
  exit 0
fi

if [ ! -e "$1" ]; then
  echo "Input directory does not exist!"
  exit 0
fi

if [ -e "$2" ]; then
  echo "Output image already exists!"
  exit 0
fi

## first make the cramfs file part
rm -rf $TEMP_WORK_DIR
mkdir $TEMP_WORK_DIR
cp -a $1/root $TEMP_WORK_DIR/
rm -f $TEMP_WORK_FILE1
$TOOL_MKCRAMFS -bb $TEMP_WORK_DIR $TEMP_WORK_FILE1

ls -lsa $TEMP_WORK_FILE1 > $TEMP_WORK_FILE3
read DUMMY1 DUMMY2 DUMMY3 DUMMY4 DUMMY5 SIZE DUMMYREST < $TEMP_WORK_FILE3
THEREST=$(( 1179648 - $SIZE ))
THEREST_CHECK=$(( (1179648 - $SIZE) < 0 ))

if [ "$THEREST_CHECK" = "1" ]; then
  rm -rf $TEMP_WORK_DIR
  rm -f $TEMP_WORK_FILE1
  rm -f $TEMP_WORK_FILE3
  echo "CRAMFS image part too big!"
  exit 0
fi

rm -f $TEMP_WORK_FILE3
dd if=/dev/zero of=$TEMP_WORK_FILE3 bs=1 count=$THEREST

## now make the squashfs file part
rm -rf $TEMP_WORK_DIR
cp -a $1 $TEMP_WORK_DIR
rm -rf $TEMP_WORK_DIR/root
rm -f $TEMP_WORK_FILE2
echo "Ready to make the squashFS part! This can take 1 or 2 minutes!"
$TOOL_MKSQUASHFS $TEMP_WORK_DIR $TEMP_WORK_FILE2 -be

## now bring them together!
cat $TEMP_WORK_FILE1 $TEMP_WORK_FILE3 $TEMP_WORK_FILE2 > $2

## clean
rm -rf $TEMP_WORK_DIR
rm -f $TEMP_WORK_FILE1
rm -f $TEMP_WORK_FILE2
rm -f $TEMP_WORK_FILE3

ls -lsa $2 > $TEMP_WORK_FILE3
read DUMMY1 DUMMY2 DUMMY3 DUMMY4 DUMMY5 SIZE DUMMYREST < $TEMP_WORK_FILE3
SIZE_CHECK=$(( $SIZE > 6291456 ))

if [ "$SIZE_CHECK" = "1" ]; then
  rm -f $TEMP_WORK_FILE3
  rm -f $2
  echo "SQUASHFS image part too big (total image-size would be: $SIZE bytes)!"
  exit 0
fi

rm -f $TEMP_WORK_FILE3

echo "Done!"
