#!/bin/sh
#
# dictd:	Starts the Dictionary Daemon
#
# chkconfig:	345 90 10
# description:	This is a daemon for the Dictionary Server Protocol (DICT), \
#               a TCP transaction based query/response protocol that allows \
#               a client to access dictionary definitions from a set of \
#		natural language dictionary databases.
# processname:	dictd
# config:	/etc/dictd.conf 
# config:       /etc/dictd/*

DAEMON_FILE=dictd
DAEMON_NAME="Dictionary Daemon"  
DAEMON_CONF=/etc/dictd.conf

generate_dictdconf() {
    umask 022
    if ls /etc/dictd/*.dictconf >/dev/null 2>&1; then 
	echo "# DO NOT EDIT! This file is autogenerated by $0." >$DAEMON_CONF
	echo "# To configure dictd edit /etc/dictd/* files and restart daemon"\
          >>$DAEMON_CONF
	cat /etc/dictd/dictd-main.conf /etc/dictd/*.dictconf >>$DAEMON_CONF
	return 0
    fi 

    echo "$0: no dictionaries found"
    return 1	
}

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

# Get network config
. /etc/sysconfig/network

if is_no "${NETWORKING}"; then
	msg_network_down ${DAEMON_FILE}
        exit 1
fi

# Get sysconfig
[ -f /etc/sysconfig/${DAEMON_FILE} ] && . /etc/sysconfig/${DAEMON_FILE}

RETVAL=0
# See how we were called.
case "$1" in
    start)
	[ -x /usr/sbin/${DAEMON_FILE} ] || exit 0
	if [ ! -f /var/lock/subsys/${DAEMON_FILE} ]; then
		if generate_dictdconf; then 
		    msg_starting ${DAEMON_NAME}
		    daemon ${DAEMON_FILE} ${DICTD_OPTS}
		    pidofproc ${DAEMON_FILE} >/dev/null 2>&1
		    RETVAL=$?
		    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${DAEMON_FILE}
		else  
		    exit 1
		fi    
	else
		msg_already_running ${DAEMON_NAME}
		exit 1
	fi
        ;;
    stop)
	if [ -f /var/lock/subsys/${DAEMON_FILE} ]; then
		msg_stopping ${DAEMON_NAME}
		busy
		killproc /usr/sbin/${DAEMON_FILE} 
		rm -f /var/lock/subsys/${DAEMON_FILE} >/dev/null 2>&1
	else
		msg_not_running ${DAEMON_NAME}
		exit 1
	fi	
	;;
  status)
        status ${DAEMON_FILE}
        ;;
  restart|reload)
        $0 stop
        $0 start
        ;;
    *)
	msg_usage "$0 {start|stop|status|restart|reload}"
	exit 1
	;;
esac

exit $RETVAL
