#! /bin/sh

OPTIONS="-c -l -s /var/lib/tftpboot"

set -e

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DESC="HPA's tftpd"
NAME=tftpd
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/S80tftpd-hpa

#
#	Function that starts the daemon/service.
#
d_start() {
	mkdir -p /var/lib/tftpboot
	chmod 1777 /var/lib/tftpboot
	$DAEMON $OPTIONS
}

#
#	Function that stops the daemon/service.
#
d_stop() {
	killall -q $NAME
}

#
#	Function that sends a SIGHUP to the daemon/service.
#
d_reload() {
	d_start
	d_stop
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
	d_start
	echo "done"
	;;
  stop)
	echo -n "Stopping $DESC: "
	d_stop
	echo "done"
	;;
  #reload)
	#
	#	If the daemon can reload its configuration without
	#	restarting (for example, when it is sent a SIGHUP),
	#	then implement that here.
	#
	#	If the daemon responds to changes in its config file
	#	directly anyway, make this an "exit 0".
	#
	# echo -n "Reloading $DESC configuration..."
	# d_reload
	# echo "done."
  #;;
  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".
	#
	echo -n "Restarting $DESC: "
	d_stop
	sleep 1
	d_start
	echo "done"
	;;
  *)
	# echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
