#!/bin/sh
#  
# Startup script for neccmcd
# 
# This should be customized for distribution standards
# (using rc_status etc.)
# The paths are hardcoded and are not automatically adjusted
# for different prefix
#
### BEGIN INIT INFO
# Provides:		neccmcd 
# chkconfig: - 41 61
# Default-Start:	3 5
# Default-Stop:		0 1 2 6
# Short-Description:	
# Description:           
### END INIT INFO
# pull in settings
[ -f /etc/sysconfig/neccmcinitd ] && . /etc/sysconfig/neccmcinitd
NECCMCD_MODE=daemon

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

# private settings
NECCMCD=${NECCMCD:-/opt/nec/neccmcd/neccmcd}
LOCKFILE="/var/lock/subsys/neccmcinitd"
NECCMCDLOCKFILE="/var/opt/nec/neccmcd_lock"
NECLOGDIR="/var/opt/nec"
SELINUX=`getenforce`
NECCMCDPID="/var/run/neccmcd.pid"

local_killproc() {
	pid=`cat $1`
	if checkpid $pid ; then
		kill -TERM $pid
		usleep 100000
		try=0
		while [ $try -lt 30 ] ; do
			checkpid $pid || break
			sleep 1
			let try+=1
		done
		if checkpid $pid ; then
			kill -KILL $pid >/dev/null 2>&1
			usleep 100000
		fi
	fi
	checkpid $pid
	RC=$?
	if [ "$RC" -eq 0 ]; then
		echo_failure
	else
		echo_success
	fi
}

case "$NECCMCD_MODE" in
daemon)
	;;
*)
	echo "Unknown neccmcd mode $NECCMCD_MODE. Valid daemon"
	exit 1
esac

case "$1" in
start)

	if [ -f $LOCKFILE ]; then
		if ps aux | awk '{print $2,$11}' | grep -q neccmcd
		then
			echo "neccmcd already running."
			exit 0
		fi
	fi

    exec 9>>$NECCMCDLOCKFILE
    flock -n 9
    if [ $? -ne 0 ] ; then
            echo "/etc/rc.d/init.d/neccmcinitd start already running."
            exit 0
    fi
	if [ "$SELINUX" != "Disabled" ]; then
		chcon -t var_log_t $NECLOGDIR -R
		chcon -t var_log_t $NECCMCDLOCKFILE -R
	fi
	if [ ! -e $NECCMCD ] ; then
		echo -n $NECCMCD " was not found." 
		echo_failure
		echo
		flock -u 9
		rm -f $NECCMCDLOCKFILE
		exit 1
	fi
	if [ ! -d $NECLOGDIR ] ; then
		echo -n $NECLOGDIR " was not found." 
		echo_failure
		echo
		flock -u 9
		rm -f $NECCMCDLOCKFILE
		exit 1
	fi

	if [ "$NECCMCD_MODE" = "daemon" ] ; then
		echo -n "Starting neccmcd daemon"
		daemon $NECCMCD
		if [ "$SELINUX" != "Disabled" ]; then
			chcon -t var_log_t /var/opt/nec/neccmcd -R
		fi
		touch $LOCKFILE
	else
		echo "No capacity neccmcd capability" 
	fi
	echo
	flock -u 9
	;;
stop)
	if ! ps aux | awk '{print $2,$11}' | grep -q neccmcd
	then
		echo "neccmcd already stopped."
		exit 0
	fi
	if [ ! -e $LOCKFILE ]; then
		echo "neccmcd already stopped."
		exit 0
	fi

    exec 9>>$NECCMCDLOCKFILE
    flock -n 9
    if [ $? -ne 0 ] ; then
            echo "/etc/rc.d/init.d/neccmcinitd stop already running."
            exit 0
    fi
	if [ "$SELINUX" != "Disabled" ]; then
		chcon -t var_log_t $NECCMCDLOCKFILE -R
	fi

	if [ "$NECCMCD_MODE" = "daemon" ] ; then
		echo -n "Stopping neccmcd"
		local_killproc $NECCMCDPID
	else
		echo neccmcd not running
	fi
	flock -u 9
	rm -f $NECCMCDLOCKFILE
	rm -f $LOCKFILE
	echo
	;;
try-restart)
	$0 status > /dev/null && $0 restart
	;;
restart)
	$0 stop
	$0 start
	;;
reload)
	$0 try-restart
	;;
force-reload)
	$0 try-restart
	;;
status)
	if [ "$NECCMCD_MODE" = "daemon" ] ; then
		echo "Checking for neccmcd"
		status $NECCMCD
	fi
	;;
*)
	echo "Usage: $0 {start|stop|try-restart|restart|status|force-reload|reload}"
	exit 1
esac


