#! /bin/bash
#
# squeezed          Start/Stop the fork/exec daemon
#
# chkconfig: 2345 21 78
# description: Fork/exec daemon
# processname: fe
# pidfile: /var/run/fe.pid

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

# Memory ballooning daemon

# location of the executable:
DAEMON="/opt/xensource/libexec/fe"

# pidfile:
PID_FILE="/var/run/fe.pid"

# lock file
SUBSYS_FILE="/var/lock/subsys/fe"

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

start() {
	echo -n $"Starting the fork/exec daemon: "
	
	if [ -e ${SUBSYS_FILE} ]; then
		if [ -e ${PID_FILE} ] && [ -e /proc/`cat ${PID_FILE}` ]; then
			echo -n $"cannot start fe: already running."
			failure $"cannot start fe: already running."
			echo
			return 1
		fi
	fi
	
	${DAEMON} -daemon -pidfile ${PID_FILE} >/dev/null 2>&1 </dev/null

	MAX_RETRIES=30
	RETRY=0
	while [ ${RETRY} -lt ${MAX_RETRIES} ]; do
        	PID=$(cat ${PID_FILE} 2>/dev/null)
		kill -0 ${PID} 2> /dev/null
		if [ $? -eq 0 ]; then
			touch ${SUBSYS_FILE}
			success
			echo
			return 0
		fi
		sleep 1
		echo -n .
		RETRY=$(( ${RETRY} + 1 ))
	done
	echo -n $"failed to start fe."
	failure $"failed to start fe."
	killproc fe
	rm -f ${SUBSYS_FILE} ${PID_FILE}
	echo
	return 1
}

stop() {
	echo -n $"Stopping the fork/exec daemon: "

	if [ ! -e ${SUBSYS_FILE} ]; then
		echo -n $"cannot stop fe: fe is not running."
		failure $"cannot stop fe: fe is not running."
		echo
		return 1;
	fi

	killproc fe
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f ${SUBSYS_FILE}
	return $RETVAL
}

restart() {
	stop
	start
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		restart
		;;
	*)
		echo $"Usage: $0 {start|stop|restart}"
		exit 1
esac
