#!/bin/sh
#
# Spawn a fcgi processes
#
# chkconfig: - 48 52
# description: Spawn a fcgi processes
# processname: /usr/bin/spawn-fcgi
# config: /etc/sysconfig/spawn-fcgi
# pidfile: /var/run/spawn-fcgi.pid

WITHOUT_RC_COMPAT=1

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

PIDFILE=/var/run/spawn-fcgi/spw-cgi.pid
LOCKFILE=/var/lock/subsys/spawn-fcgi

# Source config
SourceIfNotEmpty /etc/sysconfig/spawn-fcgi

################## no config below this line

RETVAL=0
PROG=`basename $FCGIPROGRAM`

start ()
{
		if test x$PHP_FCGI_CHILDREN = x; then
				PHP_FCGI_CHILDREN=5
		fi

		export PHP_FCGI_MAX_REQUESTS
		export FCGI_WEB_SERVER_ADDRS

		ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"

		if test x$UID = x0; then
				EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -P $PIDFILE -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN"
		else
				EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -P $PIDFILE -C $PHP_FCGI_CHILDREN"
		fi

		chown root:$GROUPID /var/run/spawn-fcgi
		chmod 1770 /var/run/spawn-fcgi
		# copy the allowed environment variables
		E=
		
		for i in $ALLOWED_ENV; do
				E="$E $i=${!i}"
		done

		# clean environment and set up a new one

		start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user $USERID --name $PROG -- env - $E $EX
		RETVAL=$?
		return $RETVAL
}

stop ()
{
		stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user $USERID -- $PROG
		RETVAL=$?
		return $RETVAL
		# for sanity.- FIXME
		sleep 30
}
			
case "$1" in
		start)
			start
			;;
		stop)
			stop
			;;
		restart)
			stop
			start
			;;
		condrestart)
			if [ -f "$LOCKFILE" ]; then
				stop
				start
			fi
			;;
		status)
			status --pidfile "$PIDFILE" --expect-user $USERID -- $PROG
			RETVAL=$?
			;;
		*)
		msg_usage "${0##*/} {start|stop|restart|condrestart|status}"
		RETVAL=1
esac

exit $RETVAL
