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

. "$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}/prXXXXXXXXXXXXX")"
ln -sf "$TS_HELPER_SIGRECEIVE" "$HELPER_SYMLINK"

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

KILL_PID=$("$TS_CMD_KILL" -p ${HELPER_SYMLINK##*/} 2>> "$TS_OUTPUT" 2>&1)
if [ $? -ne 0 ]; then
	echo "kill -p did not work" >> "$TS_OUTPUT"
	all_ok=false
fi
if [ "x$TEST_PID" != "x$KILL_PID" ]; then
	echo "jobs -p $TEST_PID != kill -p $KILL_PID" >> "$TS_OUTPUT"
	all_ok=false
fi

"$TS_CMD_KILL" -1 $TEST_PID
wait $TEST_PID
if [ $? -ne 1 ]; then
	echo "wait $TEST_PID returned ${?}" >> "$TS_OUTPUT"
	all_ok=false
fi

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

ts_finalize
