#!/bin/sh
#
# avahi:       Starts the Avahi Daemon
#
# chkconfig: 345 50 05
# description: This is a daemon which runs on client machines to perform \
#              Zeroconf service discovery on a network. avahi-daemon must be \
#              running on systems  that use Avahi for service discovery. \
#              Avahi-daemon should not be running otherwise.
# processname: avahi-daemon
# config: 

WITHOUT_RC_COMPAT=1

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

RETVAL=0
DAEMON=/usr/sbin/avahi-daemon
LOCKFILE=/var/lock/subsys/avahi
WRKUSER=_avahi
ARGS_START=" -D"
ARGS_STOP=" -k"
ARGS_RELOAD=" -r"

start() {
    if [ ! -f /etc/avahi/avahi-daemon.conf -a -f /etc/avahi/avahi-daemon.conf.default ]; then
	printf "Generating config file for avahi service"
	HOSTNAME=`cat /etc/HOSTNAME| sed "s|\..*||"`
	[ -n "$HOSTNAME" ] || HOSTNAME=localhost
	DOMAINNAME=`cat /etc/HOSTNAME| sed "s|[A-Za-z0-9]*\.\(.*\)|\1|"`
	[ -n "$DOMAINNAME" ] || DOMAINNAME=localdomain
	cat /etc/avahi/avahi-daemon.conf.default | \
	    sed -e "s|\s*[#]*\s*host-name\s*=.*|host-name=$HOSTNAME|" \
		-e "s|\s*[#]*\s*domain-name\s*=.*|domain-name=$DOMAINNAME|" \
		-e "s|\s*[#]*\s*browse-domains\s*=.*|browse-domains=$DOMAINNAME|" \
		>/etc/avahi/avahi-daemon.conf
	echo_passed
	echo
    fi
    msg_starting $"Avahi mDNS/DNS-SD"
    start_daemon \
	--lockfile "$LOCKFILE" \
	--no-announce \
	--expect-user root \
	-- $DAEMON $ARGS_START
    RETVAL=$?
    return $RETVAL
}

stop() {
    msg_stopping $"Avahi mDNS/DNS-SD"
        stop_daemon \
        --lockfile "$LOCKFILE" \
	--no-announce \
        --expect-user $WRKUSER \
        -- $DAEMON
    RETVAL=$?
    return $RETVAL
}

reload() {
	action "Reloading Avahi mDNS/DNS-SD service:" $DAEMON $ARGS_RELOAD
	echo
	return $RETVAL
}

restart() {
    stop
    sleep 1
    start
}

case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    restart)
	restart
	;;
    reload)
	reload
	;;
    status)
	status --expect-user $WRKUSER -- $DAEMON
	RETVAL=$?
	;;
    condstart)
	if ! [ -f "$LOCKFILE" ]; then
	    start
	fi
	;;
    condstop)
	if [ -f "$LOCKFILE" ]; then
	    stop
	fi
	;;
    condrestart)
	if [ -f "$LOCKFILE" ]; then
	    restart
	fi
	;;
    *)
	msg_usage "${0##*/} {start|stop|status|restart|reload|condstart|condstop|condrestart}"
	RETVAL=1
	;;
esac
exit $RETVAL
