#!/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="options"

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

ts_check_test_command "$TS_CMD_KILL"
ts_check_test_command "$TS_HELPER_SIGRECEIVE"

. "$TS_SELF/kill_functions.sh"

all_ok=true

HELPER_SYMLINK="$(mktemp "${TS_OUTDIR}/opXXXXXXXXXXXXX")"
ln -sf "$TS_HELPER_SIGRECEIVE" "$HELPER_SYMLINK"

try_option()
{
	"$HELPER_SYMLINK" >> "$TS_OUTPUT" 2>&1 &
	TEST_PID=$!
	check_test_sigreceive $TEST_PID
	[ $? -eq 1 ] || echo "${HELPER_SYMLINK##*/} helper did not start" >> "$TS_OUTPUT"

	"$TS_CMD_KILL" "$@" $TEST_PID >> "$TS_OUTPUT" 2>&1
	if [ $? -ne 0 ]; then
		echo "kill $@ did not work" >> "$TS_OUTPUT"
		all_ok=false
	fi
	wait $TEST_PID
	if [ $? -ne 1 ]; then
		echo "wait $TEST_PID for $@ did not work" >> "$TS_OUTPUT"
		all_ok=false
	fi
}

try_option -s 1
try_option --signal 1
try_option --signal HUP
try_option --signal SIGHUP
try_option -1
try_option -HUP
try_option -SIGHUP

if $all_ok; then
	echo 'all ok' >> "$TS_OUTPUT"
fi
rm -f "$HELPER_SYMLINK"

ts_finalize
