#!/bin/sh
#$Id: shak_dog_v 1.5 1996/07/22 02:12:44 jhl Exp $
# A watch dog timer
# The shell variable $sickdelay is already set to number of seconds

othervar=0
sickdelay="${sickdelay-${othervar}}"

if [ "${sickdelay}" = "0" ]; then
	"$@"
	exit $?
fi

"$@" &
cmdpid="$!"

trap 'kill -s SIGTERM $cmdpid; exit 1' 1 2 15

(

    sleeppid=
    trap  "[ -n \"\${sleeppid}\" ] && kill -TERM \"\${sleeppid}\" 2>/dev/null; exit" 15
    sleep "${sickdelay}" &
    sleeppid="$!"
    wait "${sleeppid}"
    ${SHAK_LIBPATH}/shak_sick "$@" &
    kill -HUP "${cmdpid}" 2>/dev/null
    
) &

dogpid="$!"
wait "${cmdpid}"
retval="$?"

# Race condition exists, a timeout indication may be a false timeout.
kill -TERM "${dogpid}" 2>/dev/null
exit $retval

