#! /bin/sh
#
# chkconfig: 12345 02 98
# description: A software watchdog
# rc file author: Marc Merlin <marcsoft@merlins.org>
#                 Henning P. Schmiedehausen <hps@tanstaafl.de>
# Note that even though chkconfig says that this should be run at runlevel 1,
# RH by default won't do this, so the RPM applies an ugly patch to 
# /etc/rc.d/init.d/single so that if you go from RL 3 to RL 1, watchdog is
# restarted anyway (if it's not, it can cause the kernel to reboot your machine
# depending on whether your kernel was compiled with CONFIG_WATCHDOG_NOWAYOUT)
#
# I have filed a bug with RH about this, and I hope they will change their
# single script to allow for other scripts to be run in RL 1.

# Source function library.
. /etc/rc.d/init.d/functions

[ -x /usr/sbin/watchdog -a -e /etc/watchdog.conf ] || exit 0

VERBOSE="no"
if [ -f /etc/sysconfig/watchdog ]; then
    . /etc/sysconfig/watchdog
fi

# See how we were called.
case "$1" in
  start)
  	if [ ! -f /var/lock/subsys/watchdog ]; then
		msg_starting watchdog
		# For some people it is a module, for others not. We force it because
		# for kernels < 2.1, we need kerneld, and it's not running yet.

		modprobe softdog &>/dev/null
		modprobe pcwd &>/dev/null
		modprobe acquirewdt &>/dev/null

		if [ ${VERBOSE}="yes" ]; then
			daemon watchdog -v
		else
			daemon watchdog
	        fi
		echo
		RETVAL=$?
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/watchdog
	else
		msg_already_running watchdog
	fi
	;;
  stop)
  	if [ -f /var/lock/subsys/watchdog ]; then
		msg_stopping watchdog
		killproc watchdog
        # If you compiled your kernel with CONFIG_WATCHDOG_NOWAYOUT, you may
        # not want  to remove the module  as sometimes /etc/rc.d/init.d/halt
        # will hang on umounting some remote nfs partition or for some other
        # reason, and you may then want the kernel to reboot by itself.
        # However, this means that if you stop watchdog, your system has one
        # minute to reboot cleanly, or it will be rebooted by the kernel. If
        # this behavior  isn't what you  want, just uncomment  the following
        # lines
	rmmod softdog &>/dev/null
	rmmod pcwd &>/dev/null
	rmmod acquirewdt &>/dev/null
		rm -f /var/lock/subsys/watchdog >/dev/null 2>&1
	else
		msg_not_running watchdog
		exit 1
	fi
	;;
  status)
	status watchdog
	;;
  restart|reload)
	/etc/rc.d/init.d/watchdog stop
	/etc/rc.d/init.d/watchdog start
	;;
  *)
	echo "Usage: watchdog {start|stop|status|restart|reload}"
	exit 1
	;;
esac

exit 0
