#!/bin/sh
#
# NOTE:    This script is not configurable! 
#

# proc PATH
trap "" 1 2 3 13 15
SRA_BIN=`dirname $0`
CLP_DIR=`cd ${SRA_BIN}; cd ../../..; pwd`
SRM_DIR=${CLP_DIR}/ha/sra/bin
SRM_LOGDIR=${CLP_DIR}/log/ha/sra
SRM_DATDIR=${CLP_DIR}/ha/sra/data
SRM_CONFDIR=${CLP_DIR}/ha/sra/local/conf
SRM_LOCALLOGDIR=${CLP_DIR}/ha/sra/local/log
SRM_PROC=${SRM_DIR}/clpsrad
SRM_INITCONF=${SRM_DIR}/clpsra_makeconf
SRM_TIMEOUT=500
ulimit -c unlimited
cd /

AWK=/bin/awk
[ -x /bin/awk ] || AWK=/usr/bin/awk

GetNamedProcIds()
{
	(export COLUMNS=512; /bin/ps -ef) | ${AWK} -v mypid=$$ -v pname=$1		\
		'{						\
			if($8 == pname){				\
				if (($2 != mypid) && ($3 != mypid))	\
					print $2			\
			}						\
		}'								
}

start_daemon ()
{

        if [ ! -d $SRM_LOGDIR ]
        then
        mkdir -p $SRM_LOGDIR
                chmod 755 $SRM_LOGDIR
        fi

        if [ ! -d $SRM_DATDIR ]
        then
        mkdir -p $SRM_DATDIR
                chmod 755 $SRM_DATDIR
        fi
        if [ ! -d $SRM_CONFDIR ]
        then
        mkdir -p $SRM_CONFDIR
                chmod 755 $SRM_CONFDIR
        fi
        if [ ! -d $SRM_LOCALLOGDIR ]
        then
        mkdir -p $SRM_LOCALLOGDIR
                chmod 755 $SRM_LOCALLOGDIR
        fi

	if [ -x /bin/ps -a -x ${AWK} ]
	then
		pid=`GetNamedProcIds "${SRM_PROC}"`
		if [ "${pid}" != "" ]
		then
			echo "clpsrad is already running."
			exit 0
		fi

		if [ -x $SRM_PROC ]
		then
			$SRM_INITCONF

			(cd $SRM_DIR; $SRM_PROC)
			/bin/sleep 2
		else
			exit 1
		fi
	else
		exit 1
	fi

	return 0
}

halt_daemon ()
{
	if [ -x /bin/ps -a -x ${AWK} ]
	then
		pid=`GetNamedProcIds "${SRM_PROC}"`
		if [ "${pid}" = "" ]
		then
			return 0
		fi

		if [ -x /bin/kill ]
		then
			
			/bin/kill -HUP ${pid} 1>/dev/null 2>&1
			count=0
			while [ $count -le ${SRM_TIMEOUT} ]
			do
				pid=`GetNamedProcIds "${SRM_PROC}"`
				if [ "${pid}" = "" ]
				then
					return 0
				fi

				sleep 1
				count=`expr "${count}" + 1`
			done
			/bin/kill -KILL ${pid} 1>/dev/null 2>&1
		else
			exit 1
		fi
	else
		exit 1
	fi

	return 0
}

case $1 in

'start')
	start_daemon
	/bin/touch /var/lock/subsys/clpsrad
	;;
'stop')
	halt_daemon
	/bin/rm -f /var/lock/subsys/clpsrad
	;;
'restart')
	halt_daemon
	/bin/rm -f /var/lock/subsys/clpsrad
	/bin/sleep 1
	start_daemon
	/bin/touch /var/lock/subsys/clpsrad
	;;
*)
	echo "usage: ${SRM_PROC} {start|stop|restart}"
	exit 1
	;;
esac

exit 0
