#! /bin/sh
### BEGIN INIT INFO
# Provides:          chipcardd
# Required-Start:    $syslog $remote_fs $local_fs $network
# Required-Stop:     $syslog $remote_fs $local_fs $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: daemon for smartcard access
# Description:       server that libchipcard3-based program can
#                    connect to
### END INIT INFO
#
# NOTE: The above assumes unix sockets are used (otherwise $network and 
#       $named might be wanted)
#
# Start and stop chipcardd, adapted by packager from skeleton by:
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian GNU/Linux
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#

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


PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/chipcardd4
PIDFILE=/var/run/chipcardd4.pid
DAEMON_ARGS="--pidfile $PIDFILE --exit-on-error"
NAME=chipcardd
DESC="libchipcard daemon"

test -x $DAEMON || exit 0

check_var_run() {
  if [ ! -d /var/run/chipcard ] ; then
    mkdir -p /var/run/chipcard
  fi
}

case "$1" in
  start)
	gprintf "Starting %s: " "$DESC"
	check_var_run
	daemon --pidfile $PIDFILE \
		$DAEMON "$DAEMON_ARGS" > /dev/null 2>&1
        RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
	       touch /var/lock/subsys/$NAME
	       success " "
        else
	       failure " "
        fi
        echo
	;;
  stop)
	gprintf "Stopping %s: " "$DESC"
	killproc -p $PIDFILE $NAME
        RETVAL=$?
	echo
	if [ $RETVAL -eq 0 ]; then
		rm -f /var/lock/subsys/$NAME
        	rm -f $PIDFILE
	fi
	;;
  reload)
	gprintf "Reloading %s configuration files.\n" "$DESC"
	killproc $NAME -1
        echo
	;;
  restart|force-reload)
	gprintf "Restarting %s: " "$DESC"
	killproc -p $PIDFILE $NAME
	sleep 1
	check_var_run
	daemon --pidfile $PIDFILE \
		$DAEMON $DAEMON_ARGS > /dev/null 2>&1
        RETVAL=$?
	echo
	if [ $RETVAL -eq 0 ]; then
		success " "
		touch /var/lock/subsys/$NAME
	else
		failure " "
	fi
	;;
  *)
	N=$0
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0
