#! /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

[ -r "/etc/default/$NAME" ] && . "/etc/default/$NAME"

#
#	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)
	printf "Starting $DESC: "
	d_start
	echo "done"
	;;
  stop)
	printf "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".
	#
	# printf "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".
	#
	printf "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
