#!/bin/sh
#
# Start or stop the apmiser daemon
#
# This script is part of the tpctl package
#
# Aug 2003, July 2005: Written by Thomas Hood

# Don't use set -e; check return status instead

NAME=apmiser
DESC="automatic power miser daemon"
PATH=/bin:/usr/bin:/sbin:/usr/sbin

. /lib/lsb/init-functions

# $1 EXITSTATUS
log_end_msg_and_exit()
{
	log_end_msg "$1"
	exit $1
}

APMISER_OPTS=""
[ -f /etc/default/apmiser ] && . /etc/default/apmiser

DAEMON=/usr/sbin/apmiser
PIDFILE=/var/run/apmiser.pid

test -s "$DAEMON" || exit 0

start()
{
	# Return success if daemon was successfully started
	start-stop-daemon --start --startas "$DAEMON" --quiet --pidfile "$PIDFILE" -- --daemon $APMISER_OPTS
}

stop()
{
	# Return success if daemon was indeed stopped
	start-stop-daemon --stop --retry=HUP/3/KILL/3 --quiet --pidfile "$PIDFILE"
}

force_stop()
{
	PIDOF_APMISER="$(pidof -x -o "$$" -o "$PPID" apmiser)"
	[ "$PIDOF_APMISER" ] && kill "$PIDOF_APMISER" 2>/dev/null || :
	rm -f "$PIDFILE"
	return 0
}

case "$1" in
start)
	log_daemon_msg "Starting $DESC" "$NAME"
	start
	case "$?" in
		0) log_end_msg_and_exit 0 ;;
		1) log_progress_msg "(already running)" ; log_end_msg_and_exit 0 ;;
		*) log_end_msg_and_exit 1 ;;
	esac
	;;
stop)
	log_daemon_msg "Stopping $DESC" "$NAME"
	stop
	force_stop
	log_end_msg_and_exit 0
	;;
try-restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	stop
	case "$?" in
		0)
			# The daemon has been stopped
		 	force_stop
			start
			case "$?" in
				0) log_end_msg_and_exit 0 ;;
				1) log_progress_msg "(old process was not stopped)" ; log_end_msg_and_exit 1 ;;
				*) log_progress_msg "(error on start)" ; log_end_msg_and_exit 1 ;;
			esac
			;;
		1)
		 	force_stop
			log_progress_msg "(not running)"
			log_end_msg_and_exit 0
			;;
		2)
		 	force_stop
			log_progress_msg "(error on stop; forced stop)"
			log_end_msg_and_exit 1
			;;
	esac
	;;
restart|force-reload)
	$0 stop
	$0 start
	exit $?
	;;
*)
	echo "Usage: /etc/init.d/apmiser {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac
