#! /bin/sh -e
### BEGIN INIT INFO
# Provides:          uuidd
# Required-Start:    $time $local_fs $remote_fs
# Required-Stop:     $time $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: uuidd daemon
# Description:       Init script for the uuid generation daemon
### END INIT INFO
#
# Author:	"Theodore Ts'o" <tytso@mit.edu>
#
set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/uuidd
UUIDD_USER=uuidd
UUIDD_GROUP=uuidd
UUIDD_DIR=@localstatedir@/uuidd
PIDFILE=$UUIDD_DIR/uuidd.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
  start)
	log_daemon_msg "Starting uuid generator" "uuidd"
	if ! test -d $UUIDD_DIR; then
		mkdir -p $UUIDD_DIR
		chown -R $UUIDD_USER:$UUIDD_GROUP $UUIDD_DIR
	fi
	start_daemon -p $PIDFILE $DAEMON
	log_end_msg $?
    ;;
  stop)
	log_daemon_msg "Stopping uuid generator" "uuidd"
	killproc -p $PIDFILE $DAEMON
	log_end_msg $?
    ;;
  status)
	if pidofproc -p $PIDFILE $DAEMON >/dev/null 2>&1; then
	    echo "$DAEMON is running";
	    exit 0;
	else
	    echo "$DAEMON is NOT running";
	    if test -f $PIDFILE; then exit 2; fi
	    exit 3;
	fi
    ;;
  force-reload|restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/uuidd {start|stop|restart|force-reload}"
    exit 1
    ;;
esac

exit 0
