#!/bin/sh

# old distros are missing "truncate", emulate it with "dd"
truncate()
{
	[ "$1" = "-s" ] && size=$2 && shift 2

	dd if=/dev/zero of=$1 bs=1 count=0 seek=$size >> $LOG 2>&1
}

resize_test () {
DBG_FLAGS=63

echo $test_description starting > $LOG
rm -f $TMPFILE
touch $TMPFILE

# Verify that the $TMP filesystem handles $SIZE_2 sparse files.
# If that fails, try the local filesystem instead.
if truncate -s $SIZE_2 $TMPFILE 2> /dev/null; then
	echo "using $TMPFILE" >> $LOG
else
	rm $TMPFILE
	export TMPFILE=$(mktemp ./$test_name.tmp.XXXXXX)
	touch $TMPFILE
	echo "using $TMPFILE" >> $LOG
	if ! truncate -s $SIZE_2 $TMPFILE >> $LOG 2>&1; then
		rm $TMPFILE
		return 111
	fi
fi
> $TMPFILE

echo $MKE2FS $FEATURES -qF $TMPFILE $SIZE_1 >> $LOG
$MKE2FS $FEATURES -qF $TMPFILE $SIZE_1 >> $LOG

OUT_TMP=$(mktemp ${TMPDIR:-/tmp}/csum-tmp.XXXXXX)

date > $OUT_TMP
cat $E2FSCK >> $OUT_TMP
echo $CRCSUM $OUT_TMP >> $LOG 2>&1
CSUM_1=$($CRCSUM $OUT_TMP)
echo Checksum is $CSUM_1 >> $LOG

echo Setting up file system >> $LOG
$DEBUGFS -w $TMPFILE  >> $LOG 2>&1 << EOF
mkdir test
cd test
write $OUT_TMP e2fsck
ls /test
stat /test/e2fsck
quit
EOF
echo " " >> $LOG

rm -f $OUT_TMP

echo $FSCK -fy $TMPFILE >> $LOG 2>&1 
$FSCK -fy $TMPFILE >> $LOG 2>&1 

echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS $TMPFILE $SIZE_2 >> $LOG 2>&1
if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS $TMPFILE $SIZE_2 >> $LOG 2>&1
then
	return 1
fi

echo $FSCK -fy $TMPFILE >> $LOG 2>&1
if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
then
	$DUMPE2FS $TMPFILE >> $LOG
	return 1
fi

echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1

echo $CRCSUM $OUT_TMP >> $LOG 2>&1
CSUM_2=$($CRCSUM $OUT_TMP)
echo Checksum is $CSUM_2 >> $LOG

if test "$CSUM_1" != "$CSUM_2"
then
	return 1
fi

# Uncomment to grab extra debugging image
#
#mv $TMPFILE /tmp/foo.img
#return 0

echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
then
	return 1
fi

echo $FSCK -fy $TMPFILE >> $LOG 2>&1
if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
then
	$DUMPE2FS $TMPFILE >> $LOG
	return 1
fi

echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1

echo $CRCSUM $OUT_TMP >> $LOG 2>&1
CSUM_2=$($CRCSUM $OUT_TMP)
echo Checksum is $CSUM_2 >> $LOG

if test "$CSUM_1" != "$CSUM_2"
then
	return 1
fi

echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
then
	return 1
fi

echo $FSCK -fy $TMPFILE >> $LOG 2>&1
if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
then
	$DUMPE2FS $TMPFILE >> $LOG
	return 1
fi

echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1

echo $CRCSUM $OUT_TMP >> $LOG 2>&1
CSUM_2=$($CRCSUM $OUT_TMP)
echo Checksum is $CSUM_2 >> $LOG

if test "$CSUM_1" != "$CSUM_2"
then
	return 1
fi

echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
then
	return 1
fi

echo $FSCK -fy $TMPFILE >> $LOG 2>&1
if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
then
	$DUMPE2FS $TMPFILE >> $LOG
	return 1
fi

echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1

echo $CRCSUM $OUT_TMP >> $LOG 2>&1
CSUM_2=$($CRCSUM $OUT_TMP)
echo Checksum is $CSUM_2 >> $LOG

rm $OUT_TMP
unset OUT_TMP

rm -f $TMPFILE

if test "$CSUM_1" != "$CSUM_2"
then
	return 1
fi

return 0

}
