#! /bin/sh
#
# diald		Startup file for diald
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian GNU/Linux
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#		Modified for diald by several parties, most recently
#		Jeff Licquia <licquia@debian.org>.
#
# This file was automatically customized by dh-make on Sat, 30 Oct 1999 13:05:49 -0500

set -e

DIALD_CACHE=/var/cache/diald

check_provider ()
{
  if [ ! -e $DIALD_CACHE/options.$PROVIDER -o \
       $DIALD_CACHE/options.$PROVIDER -ot /etc/ppp/peers/$PROVIDER ]
  then
    cvt-pppconfig /etc/ppp/peers/$PROVIDER \
      > $DIALD_CACHE/options.$PROVIDER
    echo -n "config-regenerated "
  fi
}  

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/diald
NAME=diald
DESC=diald
FIFO=""

test -f $DAEMON || exit 0
test -f /etc/diald/diald.provider || exit 0
. /etc/diald/diald.provider
if [ "$PROVIDER" != "old-config" ]; then
  test -f /etc/ppp/peers/$PROVIDER || exit 0
  PROVIDER_FILE=$DIALD_CACHE/options.$PROVIDER
else
  test -f /etc/diald/diald.options || exit 0
  PROVIDER_FILE=/etc/diald/diald.options
fi

# Look for fifo in config file
NEW_FIFO=`egrep '^[[:space:]]*fifo[[:space:]]+[^[:space:]]+'\
	/etc/diald/diald.defaults | sed -e 's/^[[:space:]]*fifo[[:space:]]*//'`
if [ "$NEW_FIFO" != "" ]; then
    # The user location exists, and is a named pipe.
    FIFO="$NEW_FIFO";
fi

case "$1" in
  start)
	echo -n "Starting $DESC: "

        if [ "$FIFO" != "" ] ; then
          if test -p $FIFO ; then
            rm -f $FIFO
          fi
          mknod --mode=0660 $FIFO p
          chown root.dialout $FIFO
          if test -p $FIFO ; then
            echo -n "fifo-created "
          fi
        fi

	check_provider

	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON -- -f $PROVIDER_FILE
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
        if [ "$FIFO" != "" ] ; then
          if test -p $FIFO ; then
            rm -f $FIFO
            echo -n "fifo-removed "
          fi
        fi
	start-stop-daemon --stop --quiet --oknodo \
		--pidfile /var/run/$NAME.pid --exec $DAEMON
	echo "$NAME."
	;;
  reload|force-reload)
	#echo "Reloading $DESC configuration files."
        if [ "$FIFO" != "" ] ; then
          if test -p $FIFO ; then
	    check_provider
            echo "reset" > $FIFO
            echo "Diald configuration reloaded."
          else
            echo "Cannot reload diald configuration: $FIFO not found."
            exit 2
          fi
        else
          echo "Cannot reload diald configuration: "
          echo "  need a fifo statement in /etc/diald/diald.options."
          exit 2
        fi
	# start-stop-daemon --stop --signal 1 --quiet --pidfile \
	#	/var/run/$NAME.pid --exec $DAEMON
  ;;
  restart)
	echo -n "Restarting $DESC: "
        #pid=`cat /var/run/$NAME.pid`
	start-stop-daemon --stop --quiet --oknodo --pidfile \
		/var/run/$NAME.pid --exec $DAEMON
        while [ -n "`pidof $NAME`" ]; do sleep 1; echo -n .;done
        #while ps $pid >/dev/null 2>/dev/null
        #do
        #  sleep 1
        #done
	#sleep 1
	check_provider
	start-stop-daemon --start --quiet \
		--pidfile /var/run/$NAME.pid \
		--exec $DAEMON -- -f $PROVIDER_FILE
	echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	# echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
