#!/bin/sh
# chkconfig: 2345 22 78
### BEGIN INIT INFO
# Provides:          dbus
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbus at boot time
# Description:       Enable service provided by dbus.
# X-Start-Before:    x fb
# X-Stop-After:      x fb
# X-Timesys-Start-Number:  22
# X-Timesys-Stop-Number:  78
### END INIT INFO


PATH=/usr/bin:/bin:/usr/sbin:/sbin
DAEMON="dbus-daemon --system"
PID_FILE=/var/run/dbus/pid
DESC="Message bus daemon"
LOGFILE=/tmp/`basename $0`.log

case "$1" in
    start)
	mkdir -p /var/run/dbus
        if ! grep ^messagebus /etc/passwd > /dev/null; then
            echo "$0: Creating system user 'messagebus' with generic settings.  Review and modify as required."
            yes '' | adduser messagebus >/dev/null 2>&1 || yes '' | useradd messagebus >/dev/null 2>&1
        fi
        if [ -e $PID_FILE ]; then
            PIDDIR=/proc/$(cat $PID_FILE)
            if [ -d ${PIDDIR} -a -n "$(readlink -f ${PIDDIR}/exe 2>/dev/null)" ]; then
                echo "$DESC already started; not starting." >> $LOGFILE 2>&1
                exit  
            else
                echo "Removing stale PID file $PID_FILE." >> $LOGFILE 2>&1
                rm -f $PID_FILE
            fi
        fi
        dbus-uuidgen --ensure
        echo -n "Starting dbus: "
        $DAEMON --fork >> $LOGFILE 2>&1 && \
          echo '[ OK ]' || echo '[FAIL]'
    ;;
    stop)
        if [ -f $PID_FILE ]; then
            echo -n "Stopping dbus: "
            read PID < $PID_FILE
            kill $PID >> $LOGFILE 2>&1 && \
              echo '[ OK ]' || echo '[FAIL]'
            rm $PID_FILE
        else
            echo "pid file not found... is dbus running?"
        fi
    ;;
    restart)
	$0 stop
	$0 start
    ;;
    *)
        echo "usage: $0 [ start | stop | restart ]"
    ;;
esac
