if [ $(uname -s) = "FreeBSD" ]; then
       # creates a 96GB filesystem
       echo "$test_name: $DESCRIPTION: skipped for FreeBSD (no sparse files)"
       return 0
fi

if [ $(uname -s) = "Darwin" ]; then
	# creates a 96GB filesystem
	echo "$test_name: $DESCRIPTION: skipped for HFS+ (no sparse files)"
	return 0
fi

if ! test -x $RESIZE2FS_EXE -o ! -x $DEBUGFS_EXE; then
	echo "$test_name: $test_description: skipped (no debugfs/resize2fs)"
	return 0
fi

FSCK_OPT=-yf
OUT=$test_name.log
if [ -f $test_dir/expect.gz ]; then
	EXP=$test_name.tmp
	gunzip < $test_dir/expect.gz > $EXP1
else
	EXP=$test_dir/expect
fi

dd if=/dev/zero of=$TMPFILE bs=1k count=512 > /dev/null 2>&1

echo mke2fs -q -F -o Linux -b 1024 -i 1024 -O ^resize_inode -t ext4 test.img 1024000 > $OUT
$MKE2FS -q -F -o Linux -b 1024 -i 1024 -O ^resize_inode -t ext4 \
	$TMPFILE 1024000 >> $OUT 2>&1

echo resize2fs -p test.img 100000000 >> $OUT
$RESIZE2FS -p $TMPFILE 100000000 >> $OUT 2>&1

$FSCK $FSCK_OPT  -N test_filesys $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT

$DEBUGFS -R "set_super_value lastcheck 0" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value hash_seed null" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value mkfs_time 0" -w $TMPFILE >/dev/null 2>&1
$TUNE2FS -c 20 -U clear $TMPFILE  >/dev/null 2>&1

echo dumpe2fs -h test.img >> $OUT
$DUMPE2FS -h $TMPFILE >> $OUT 2>&1
sed -f $cmd_dir/filter.sed -e '/Block bitmap.*$/N;s/\n  Inode bitmap/, Inode bitmap/g' < $OUT > $OUT.new
mv $OUT.new $OUT
rm -f $TMPFILE

cmp -s $OUT $EXP
status=$?

if [ "$status" = 0 ] ; then
	echo "$test_name: $test_description: ok"
	touch $test_name.ok
else
	echo "$test_name: $test_description: failed"
	diff $DIFF_OPTS $EXP $OUT > $test_name.failed
	rm -f $test_name.tmp
fi

unset IMAGE FSCK_OPT OUT EXP
