#!/bin/sh
#
### BEGIN INIT INFO
# Provides: osafdtmd
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Should-Start: 
# Should-Stop: 
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts/stops the osafdtmd daemon
# Description: starts/stops the osafdtmd daemon
### END INIT INFO

osafdirfile=/etc/opensaf/osafdir.conf
osafprog="osafdtmd"
initscript=`basename $0`

# Source LSB functions library
. /lib/lsb/init-functions


if [ ! -r $osafdirfile ]; then
	logger -s -t $osafprog "can't read $osafdirfile, exiting."
	exit 6
else
	. $osafdirfile
	. $pkgsysconfdir/dtmd.conf
	. $pkgsysconfdir/nid.conf
fi

binary=$pkglibdir/$osafprog
pidfile=$pkgpiddir/$osafprog.pid
lockfile=$lockdir/$initscript

RETVAL=0

start() {
	export LD_LIBRARY_PATH=$pkglibdir:$LD_LIBRARY_PATH
	if ! [ -x $binary ] ; then
		return 5
	fi

	echo -n "Starting $osafprog: "
	start_daemon -p $pidfile $binary  $args
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		touch $lockfile
		log_success_msg
	else
		log_failure_msg
	fi
	return $RETVAL
}

stop() {
	echo -n "Stopping $osafprog: "
	killproc -p $pidfile $osafprog
	RETVAL=$?
	if [ $RETVAL -eq 0 ] || [ $RETVAL -eq 7 ]; then
		rm -f $lockfile
		log_success_msg
		RETVAL=0
	else
		log_failure_msg
	fi
	return $RETVAL
}

restart() {
	stop
	start
}

tryrestart() {
	[ -e $lockfile ] && restart
	return 0
}

reload() {
	echo -n "Reloading $osafprog: "
	log_warning_msg
	logger -t $osafprog "reloading configuration is currently an unimplemented LSB feature"
	return 3
}

forcereload() {
	reload
	restart
	return 0
}

status() {
	pid=`pidofproc -p ${pidfile} ${binary}`
	ret=$?
	if [ $ret -eq 0 ]; then
		log_success_msg "$osafprog is running"
		return $ret
	elif [ $ret -eq 1 ]; then
		log_warning_msg "$osafprog is dead and /var/run pid file exists"
	elif [ $ret -eq 2 ]; then
		log_warning_msg "$osafprog is dead and /var/lock lock file exists"
	elif [ $ret -eq 3 ]; then
		echo "$osafprog is not running"
	elif [ $ret -eq 4 ]; then
		log_warning_msg "$osafprog or service status is unknown"
	fi
	return $ret
}

case "$1" in
  start)
	start
	RETVAL=$?
	;;
  stop)
	stop
	RETVAL=$?
	;;
  restart)
	restart
	RETVAL=$?
	;;
  try-restart|condrestart)
	tryrestart
	RETVAL=$?
	;;
  reload)
	reload
	RETVAL=$?
	;;
  force-reload)
	forcereload
	RETVAL=$?
	;;
  status)
	status
	RETVAL=$?
	;;
  *)
	echo "Usage: $0 {start|stop|restart|try-restart|reload|force-reload|status}"
	RETVAL=2
esac

exit $RETVAL
