#!/bin/sh
#
# This is a LTP test library for shell
#

export LTP_RET_VAL=0
export LTP_TST_CNT=1

# Exit values map
tst_flag2mask()
{
	case "$1" in
	TPASS) return 0;;
	TFAIL) return 1;;
	TBROK) return 2;;
	TWARN) return 4;;
	TRETR) return 8;;
	TINFO) return 16;;
	TCONF) return 32;;
	*) tst_brkm TBROK "Invalid resm type '$1'";;
	esac
}

tst_resm()
{
	tst_flag2mask "$1"
	local mask=$?
	LTP_RET_VAL=$((LTP_RET_VAL|mask))
	echo "$TCID $LTP_TST_CNT $1 : $2"
	LTP_TST_CNT=$((LTP_TST_CNT+1))
}

tst_brkm()
{
	case "$1" in
	TFAIL) ;;
	TBROK) ;;
	TCONF) ;;
	TRETR) ;;
	*) tst_brkm TBROK "Invalid tst_brkm type '$1'";;
	esac

	tst_resm "$1" "$2"
	tst_exit
}

tst_require_root()
{
	if [ "$(id -ru)" != 0 ]; then
		tst_brkm TBROK "Must be super/root for this test!"
	fi
}

tst_exit()
{
	if [ -n "$TST_CLEANUP" ]; then
		$TST_CLEANUP
	fi

	exit $LTP_RET_VAL
}

tst_tmpdir()
{
	if [ -z "$TMPDIR" ]; then
		export TMPDIR="/tmp"
	fi

	TST_TMPDIR=$(mktemp -d "$TMPDIR/$TCID.XXXXXXXXXX")

	cd "$TST_TMPDIR"
}

tst_rmdir()
{
	cd "$LTPROOT"
	rm -r "$TST_TMPDIR"
}

#
# Checks if coomands passed as arguments exists
#
tst_check_cmds()
{
	for cmd in $*; do
		if ! command -v $cmd > /dev/null 2>&1; then
			tst_brkm TCONF "'$cmd' not found"
		fi
	done
}

# Check that test name is set
if [ -z "$TCID" ]; then
	echo "TCID not defined"
fi

# Setup LTPROOT, default to current directory if not set
if [ -z "$LTPROOT" ]; then
	export LTPROOT="$PWD"
fi
