#!/bin/sh
#
# exim		This shell script takes care of starting and stopping Exim.
#
# chkconfig:	2345 80 30
# description:	Exim is a Mail Transport Agent, which is the program \
#		that moves mail from one machine to another.
# processname:	exim
# config:	/etc/exim.cf
# pidfile:	/var/spool/exim/exim-daemon.pid

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

# Source networking configuration.
. /etc/sysconfig/network

QUEUE=1h

# Source exim configureation.
if [ -f /etc/sysconfig/exim ]; then
	. /etc/sysconfig/exim
fi

# Check that networking is up.
if is_yes "${NETWORKING}"; then
	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
		msg_network_down "Exim"
		exit 1
	fi
else
	exit 0
fi

start() {
	# Start daemons.
	if [ -f /var/lock/subsys/exim ]; then
		msg_already_running "Exim"
		return
	fi

	msg_starting "Exim"
	daemon /usr/bin/exim \
		$( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \
		$( [ -n "$QUEUE" ] && echo -q$QUEUE )
	for CONFIG in $EXIM_EXTRA_CONFIGS; do
			msg_starting "Exim ($CONFIG)"
			daemon exim \
				$( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \
				$( [ -n "$QUEUE" ] && echo -q$QUEUE ) \
				-C $CONFIG
	done
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/exim
}

stop() {
	# Stop daemons.
	if [ ! -f /var/lock/subsys/exim ]; then
		msg_not_running "Exim"
		return
	fi

	msg_stopping "Exim"
	killproc --pidfile /var/spool/exim/exim-daemon.pid exim
	rm -f /var/lock/subsys/exim /var/spool/exim/exim-daemon.pid >/dev/null 2>&1
}

condrestart() {
	if [ ! -f /var/lock/subsys/exim ]; then
		msg_not_running "Exim"
		RETVAL=$1
		return
	fi

	stop
	start
}

reload() {
	if [ ! -f /var/lock/subsys/exim ]; then
		msg_not_running "Exim"
		RETVAL=7
		return
	fi

	run_cmd "Checking exim configuration" /usr/bin/exim -bV
	if [ $? -eq 0 ]; then
		msg_reloading "Exim"
		killproc exim -HUP
		RETVAL=$?
	fi
}

RETVAL=0
# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	stop
	start
	;;
  try-restart)
	condrestart 0
	;;
  reload|force-reload)
	reload
	;;
  checkconfig|configtest)
	exim -bV
	RETVAL=$?
	;;
  status)
	status exim
	exit $?
	;;
  *)
	msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|status}"
	exit 3
esac

exit $RETVAL
