#!/bin/sh
#
# $Id$
#
# smsd			smsd
#
# chkconfig:	345 42 58
#
# description:	gnokii smsd daemon
#


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

# Get network config
. /etc/sysconfig/network

# Get service config
[ -f /etc/sysconfig/smsd ] && . /etc/sysconfig/smsd

# 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 smsd
		exit 1
	fi
else
	exit 0
fi

if [ "x$DBPASS" = "x" ]; then
	DB_PASS="-p $DBPASS";
fi

if [ "x$PHONES" = "x" ]; then
	PHONES=0;
fi

if [ "x$MAXSMS_IN_DUMB_MODE" = "x" ]; then
	MAXSMS="";
else
	MAXSMS="-s $MAXSMS_IN_DUMB_MODE"
fi

start() {
	# Check if the service is already running?
	if [ ! -f /var/lock/subsys/smsd ]; then
		first=yes;
		for number in $PHONES; do
			msg_starting "smsd (phone $number)"
			daemon --fork "/usr/sbin/smsd -u $DBUSER -p $DB_PASS -d $DBNAME -c $DBHOST -m $DBTYPE -i $INTERVAL $MAXSMS >/var/log/smsd/smsd_phone_$number 2>&1"
			if [ $? -ne 0 ]; then
				echo "Warning: smsd for phone $number could not start";
			fi
		done;
#		daemon /usr/bin/distccd --daemon --user distcc --log-file /var/log/distcc `for ip in $DISTCC_HOSTS_ALLOW; do echo -n "--allow $ip "; done` $DISTCC_OPTS
		RETVAL=$?
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/smsd
	else
		msg_already_running smsd
	fi
}

stop() {
	if [ -f /var/lock/subsys/smsd ]; then
		msg_stopping smsd
		killproc smsd
		rm -f /var/run/smsd.pid /var/lock/subsys/smsd >/dev/null 2>&1
	else
		msg_not_running smsd
	fi
}

RETVAL=0
# See how we were called.
case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
	stop
	start
	;;
  status)
	status smsd
	exit $?
	;;
  *)
	msg_usage "$0 {start|stop|restart|status}"
	exit 3
esac

exit $RETVAL
