#!/bin/sh
#
# messagebus:   The D-BUS systemwide message bus
#
# chkconfig: 345 22 85
# description:  This is a daemon which broadcasts notifications of system events \
#               and other messages. See http://www.freedesktop.org/software/dbus/
#
# processname: dbus-daemon
# pidfile: @DBUS_SYSTEM_PID_FILE@
#
### BEGIN INIT INFO
# Provides: messagebus
# Required-Start: $syslog $local_fs
# Required-Stop: $syslog $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: The D-Bus systemwide message bus
# Description: This is a daemon which broadcasts notifications of system 
#  events and other messages. See http://www.freedesktop.org/software/dbus
### END INIT INFO

# Sanity checks.
[ -x @EXPANDED_BINDIR@/dbus-daemon ] || exit 0

# Source function library.
. @EXPANDED_SYSCONFDIR@/rc.d/init.d/functions

# so we can rearrange this easily
processname=dbus-daemon
servicename=messagebus

RETVAL=0

start() {
    echo -n $"Starting system message bus: "
    if [ -x @EXPANDED_BINDIR@/dbus-uuidgen ] ; then
        @EXPANDED_BINDIR@/dbus-uuidgen --ensure
    fi

    daemon --check $servicename $processname --system
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch @EXPANDED_LOCALSTATEDIR@/lock/subsys/$servicename
}

stop() {
    echo -n $"Stopping system message bus: "

    ## we don't want to kill all the per-user $processname, we want
    ## to use the pid file *only*; because we use the fake nonexistent 
    ## program name "$servicename" that should be safe-ish
    killproc $servicename -TERM
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ]; then
        rm -f @EXPANDED_LOCALSTATEDIR@/lock/subsys/$servicename
        rm -f @DBUS_SYSTEM_PID_FILE@
    fi
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $servicename
        RETVAL=$?
        ;;
    restart)
        stop
        start
        ;;
    condrestart)
        if [ -f @EXPANDED_LOCALSTATEDIR@/lock/subsys/$servicename ]; then
            stop
            start
        fi
        ;;
    reload)
        echo "Message bus can't reload its configuration, you have to restart it"
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
        ;;
esac
exit $RETVAL
