#!/bin/sh
#
# chkconfig: 345 31 69
# description: NDMPD implements NDMP control protocol for backup/restore ops
# processname: ndmpd
# config: /etc/ndmpd.conf

# we require the /etc/ndmpd.conf file and matching binary
[ -f /etc/ndmpd.conf ] || exit 0
[ -x /sbin/ndmpd ] || exit 0

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

# My function to find the pid of a program
my_pidofproc() {
        base=`basename $1`

        # Test syntax.
        if [ $# = 0 ] ; then
                echo "Usage: pidofproc {program}"
                return 1
        fi

        # First try "/var/run/*.pid" files
        if [ -f /var/run/${base}.pid ] ; then
                pid=`cat /var/run/${base}.pid | { read foo ; echo $foo ; }`
                if [ "$pid" != "" ] ; then
                        echo $pid
                        return 0
                fi
        fi

        # Next try "pidof"
        pid=`pidof -o $$ -o $PPID -o %PPID -x ${base}`
        if [ "$pid" != "" ] ; then
                echo $pid
                return 0
        fi
}

# My function to start a program.
my_daemon() {
        # Test syntax.
        gotbase=
        daemon_user=
        nicelevel=0
        while [ "$1" != "${1##-}" -o "$1" != "${1##+}" ]; do 
          case $1 in
            '')    echo '$0: Usage: daemon [+/-nicelevel] {program}'
                   return 1;;
            --check)
                   shift
                   base=$1
                   gotbase="yes"
                   shift
                   ;;
            --user)
                   shift
                   daemon_user=$1
                   shift
                   ;;
            -*|+*) nicelevel=$1
                   shift
                   ;;
             *)    nicelevel=0
                   ;;
          esac
        done

        # Save basename.
        [ -z $gotbase ] && base=`basename $1`

        # See if it's already running.
        pidlist=`my_pidofproc $1`

        pid=
        for apid in $pidlist ; do
           [ -d /proc/$apid ] && pid="$pid $apid"
        done

        if [ -n "$pid" ]; then
        	[ "$BOOTUP" = "verbose" ] && echo -n " $base"
		[ "$BOOTUP" != "verbose" ] && echo_success
		return 0
	fi

        # make sure it doesn't core dump anywhere; while this could mask
        # problems with the daemon, it also closes some security problems
#        ulimit -S -c 0 >/dev/null 2>&1

        # Echo daemon
        [ "$BOOTUP" = "verbose" ] && echo -n " $base"

        # And start it up.
        if [ -z "$daemon_user" ]; then 
           nice -n $nicelevel initlog $INITLOG_ARGS -c "$*" && success "$base startup" || failure "$base startup"
        else
           nice -n $nicelevel initlog $INITLOG_ARGS -c "su $daemon_user -c \"$*\"" && success "$base startup" || failure "$base startup"
        fi
}


RETVAL=0

start() {
	echo -n $"Starting up NDMP daemon: "
        my_daemon /sbin/ndmpd -background -pidfile /var/run/ndmpd.pid
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/ndmpd
	echo
}

stop() {
	echo -n $"Shutting down NDMP daemon: "
	killproc ndmpd
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ndmpd
	echo
}

dostatus() {
	status ndmpd
	RETVAL=$?
}

restart() {
	stop
	start
	RETVAL=$?
}

condrestart() {
	[ -e /var/lock/subsys/ndmpd ] && restart || :
}

cd /core

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
	dostatus
	;;
  restart|reload)
	restart
	;;
  condrestart)
	condrestart
	;;
  *)
	echo "Usage: spinndmpd {start|stop|status|restart|reload|condrestart}"
	exit 1
esac

exit $RETVAL
