#!/bin/bash
#
# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
TS_TOPDIR="${0%/*}/../.."
TS_DESC="fsck images"

. $TS_TOPDIR/functions.sh
ts_init "$*"

# inode contains UID and GID, use always UID=0 to get the same checksum
# TODO any mkfs should use UID=0 per default (custom uid optionally) like mk2fs
ts_skip_nonroot

ts_check_test_command "$TS_CMD_FSCKMINIX"
ts_check_test_command "$TS_HELPER_MKFS_MINIX"
ts_check_test_command "$TS_CMD_HEXDUMP"

# on big endian systems some of the subtests have different expected output
BYTE_ORDER=$($TS_HELPER_SYSINFO byte-order)
BE_EXT=$(test "$BYTE_ORDER" = "BE" && echo ".BE")

export MKFS_MINIX_TEST_SECOND_SINCE_EPOCH='1438460212'

check_minix_fs_type() {
	ts_init_subtest $1
	TS_EXPECTED+=$BE_EXT
	img=${TS_OUTPUT}.img
	dd if=/dev/zero bs=1024 count=16 of=$img >/dev/null 2>&1
	$TS_HELPER_MKFS_MINIX $2 $img >> $TS_OUTPUT 2>&1
	echo "mkfs return value: $?" >> $TS_OUTPUT
	$TS_CMD_FSCKMINIX $img >> $TS_OUTPUT 2>&1
	echo "fsck return value: $?" >> $TS_OUTPUT
	$TS_CMD_HEXDUMP -C $img >> $TS_OUTPUT 2>&1
	rm -f $img
	ts_finalize_subtest
}

check_minix_fs_type 'v1c14' '-1 -n 14'
check_minix_fs_type 'v1c30' '-1 -n 30'
check_minix_fs_type 'v2c14' '-2 -n 14'
check_minix_fs_type 'v2c30' '-2 -n 30'
check_minix_fs_type 'v3c60' '-3 -n 60'

bad="$TS_OUTDIR/${TS_TESTNAME}.badlist"
# TODO seems that mkfs produces non-sense if badblocks are greater than device.
echo -e "8\n9" > $bad

# NOTE, -c with -l ignores -l.
check_minix_fs_type 'check-blocks' "-l $bad -c"
check_minix_fs_type 'badblocks' "-l $bad"

rm -f $bad

# no more big endian tests below
if test "$BYTE_ORDER" = "BE"; then
	ts_finalize
fi

# NOTE this seems odd: a 2nd fsck run would again modify the FS
ts_init_subtest "auto-fix"
img=${TS_OUTPUT}.img
cp "$TS_SELF/broken-root" $img
$TS_CMD_FSCKMINIX -sav $img >> $TS_OUTPUT 2>&1
echo "fsck reports changed and uncorrected: $?" >> $TS_OUTPUT
$TS_CMD_HEXDUMP -C $img >> $TS_OUTPUT 2>&1
sed -i 's/Filesystem on .* is dirty/Filesystem auto-fix is dirty/' $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "bug.773892"
"$TS_CMD_FSCKMINIX" -f "$TS_SELF/debian.bug.773892" >>$TS_OUTPUT 2>&1 >/dev/null
echo "fsck reports uncorrected: $?" >> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "broken-root"
"$TS_CMD_FSCKMINIX" "$TS_SELF/broken-root" > $TS_OUTPUT 2>&1
echo "fsck reports uncorrected: $?" >> $TS_OUTPUT
ts_finalize_subtest

ts_finalize
