#! /bin/sh

### BEGIN INIT INFO
# Provides:        ntp
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFO

PATH=/sbin:/bin:/usr/bin:/usr/sbin

DAEMON=/usr/sbin/ntpd
PIDFILE=/var/run/ntpd.pid

# ntpd	init.d script for ntpdc from ntp.isc.org
test -x $DAEMON -a -r /etc/ntp.conf || exit 0

# rcS contains TICKADJ
test -r /etc/default/rcS && . /etc/default/rcS

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

# Functions to do individual actions
settick(){
  	# If TICKADJ is set we *must* adjust it before we start, because the
	# driftfile relies on the correct setting
	test -n "$TICKADJ" -a -x /usr/sbin/tickadj && {
		echo -n "Setting tick to $TICKADJ: "
		/usr/sbin/tickadj "$TICKADJ"
		echo "done"
	}
}
startdaemon(){
	# The -g option allows ntpd to step the time to correct it just
	# once.  The daemon will exit if the clock drifts too much after
	# this.  If ntpd seems to disappear after a while assume TICKADJ
	# above is set to a totally incorrect value.
	echo -n "Starting ntpd: "
	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -u ntp:ntp -p $PIDFILE "$@"
	echo "done"
}
stopdaemon(){
	echo -n "Stopping ntpd: "
	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
	echo "done"
}

case "$1" in
  start)
  	settick
	startdaemon -g
	;;
  stop)
  	stopdaemon
	;;
  force-reload)
  	stopdaemon
  	settick
	startdaemon -g
	;;
  restart)
  	# Don't reset the tick here
	stopdaemon
	startdaemon -g
	;;
  reload)
  	# Must do this by hand, but don't do -g
	stopdaemon
	startdaemon
	;;
  status)
	status /usr/sbin/ntpd;
	exit $?
	;;
  *)
	echo "Usage: ntpd { start | stop | status | restart | reload }" >&2
	exit 1
	;;
esac

exit 0
