#! /bin/sh
### BEGIN INIT INFO
# Provides:          system-tools-backends
# Required-Start:    $local_fs dbus
# Required-Stop:     $local_fs dbus
# Should-Start:	     $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      1
# Short-Description: Gnome System Tools Backends
# Description:       The Gnome System Tools Backends daemon handles root-needed
#                    operations to configure your machine with the Gnome System
#		     Tools.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/system-tools-backends
PIDDIR=/var/run
PIDFILE=$PIDDIR/system-tools-backends.pid
NAME=system-tools-backends
DESC="System Tools Backends"

test -x $DAEMON || exit 0

set -e

do_start() {
    echo "Starting $DESC"
    start-stop-daemon --start --startas $DAEMON --quiet --pidfile $PIDFILE
}

do_stop() {
    echo "Stopping $DESC"
    start-stop-daemon --stop --oknodo --quiet --pidfile $PIDFILE --startas $DAEMON
}

case "$1" in
  start)
    do_start
    ;;
  stop)
    do_stop
    ;;
  #reload)
    #
    # If the daemon can reload its config files on the fly
    # for example by sending it SIGHUP, do it here.
    #
    # If the daemon responds to changes in its config file
    # directly anyway, make this a do-nothing entry.
    #
    # echo "Reloading $DESC configuration files."
    # start-stop-daemon --stop --signal 1 --quiet --pidfile \
    #   /var/run/$NAME.pid --exec $DAEMON
  #;;
  restart|force-reload)
    #
    #   If the "reload" option is implemented, move the "force-reload"
    #   option to the "reload" entry above. If not, "force-reload" is
    #   just the same as "restart".
    #
    do_stop
    sleep 5
    do_start
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
    exit 1
    ;;
esac

exit 0

