#!/bin/sh
#
# VDR Shutdown Script  - Tobias Grimm <tg@e-tobi.net>
# -------------------
#
# see README.Debian
#

SHUTDOWN_HOOKS_DIR=/usr/share/vdr/shutdown-hooks/

log="logger -t vdr-shutdown"
svdrpsend="/usr/lib/vdr/svdrpsend.pl"
osdmsg="$svdrpsend MESG"

MAX_TRY_AGAIN=0
SHUTDOWNCMD="/etc/init.d/vdr stop ; sleep 1 ; /sbin/shutdown -h now"

shutdownhooks=`find $SHUTDOWN_HOOKS_DIR -maxdepth 1 -xtype f | sort`

for shutdownhook in $shutdownhooks; do
    TRY_AGAIN=0

    if [ -x $shutdownhook ]; then
	$log "executing $shutdownhook"
	result_data=`$shutdownhook $*`
    else
	$log "executing $shutdownhook as shell script"
	result_data=`/bin/sh $shutdownhook $*`
    fi
    result=$?
    eval $result_data
    if [ $result -ne 0 ] ; then 
	$log "Shutdown aborted by $shutdownhook with exitcode $result"
	$osdmsg "Shutdown abgebrochen / Shutdown aborted!" &
	[ -z $ABORT_MESSAGE ] || $osdmsg $ABORT_MESSAGE &
	exit $result
    fi

    if [ $TRY_AGAIN -gt 0 ]
    then
	$log "$shutdownhook requests to try again in $TRY_AGAIN minutes" 
	if [ $MAX_TRY_AGAIN -lt $TRY_AGAIN ]
	then
	    MAX_TRY_AGAIN=$TRY_AGAIN
	fi
    fi
done 

if [ $MAX_TRY_AGAIN -gt 0 ]
then
  $log "Will try again shutdown in $MAX_TRY_AGAIN minutes."
  echo "$svdrpsend HITK Power" | at now
  $osdmsg "Shutdown aborted. Retry in $MAX_TRY_AGAIN minutes." &
  exit 0
fi

eval $SHUTDOWNCMD
