#!/bin/sh
#
# Start/Stop/Restart the PC/SC-lite smart card daemon.
#

PIDFILE=/var/run/pcscd/pcscd.pid

# Get $PCSCD_OPTS:
if [ -r /etc/default/pcscd ]; then
  . /etc/default/pcscd
fi

# Start
pcscd_start() {
  if [ -x /usr/sbin/pcscd ]; then
    if [ -e "$PIDFILE" ]; then
      echo "PC/SC-lite daemon already started!"
    else
      echo "Starting PC/SC-lite smart card daemon:  /usr/sbin/pcscd $PCSCD_OPTS"
      /usr/sbin/pcscd $PCSCD_OPTS
    fi
  fi
}

# Stop
pcscd_stop() {
  echo "Stopping PC/SC-lite smart card daemon..."
  if [ -e "$PIDFILE" ]; then
    kill $(cat $PIDFILE | tr -d '\0')
    rm -f $PIDFILE 2>&1 >/dev/null
  else
     killall --ns $$ pcscd 2>&1 >/dev/null
  fi
}

# Restart
pcscd_restart() {
  pcscd_stop
  sleep 3
  pcscd_start
}

# Status
pcscd_status() {
  if [ -e "$PIDFILE" ]; then
    echo "pcscd is running."
  else
    echo "pcscd is stopped."
  fi
}

case "$1" in
'start')
  pcscd_start
  ;;
'stop')
  pcscd_stop
  ;;
'restart')
  pcscd_restart
  ;;
'status')
  pcscd_status
  ;;
*)
  echo "usage: $0 start|stop|restart|status"
esac
