#!/bin/sh
umask 077 && cd / && batch << \__EOT__
#!/bin/sh
umask 077 || exit
cd / || exit

>>/dev/null /etc/init.d/ntp-server stop || exit

#ntpserver=ntp.knowledge.or.id.
ntpserver=chrono.cis.sac.accd.edu.
hwclock_opt=--localtime
nominal_frequency=-23860366
nominal_tick=10004

min_frequency=-6553600
max_frequency=6553600
min_tick=9000
max_tick=11000

while :
do
	sign=
	set -- `ntpdate -u -q "$ntpserver" | awk '
		/^.* *offset -*[0-9][0-9]*\.[0-9][0-9]* sec$/ {
			i=int($(NF-1)*10)
			if(i>=0){print i}
			else{print "-", -1 * i;}
			exit(0);
		}'`
	[ X"$1" = X- ] && { sign=-; shift; }
	case X"$1" in
		X[1-9]*)
			if [ X"$sign" = X- ]; then
				adjtimex --tick "$min_tick" --frequency "$min_frequency"
			else
				adjtimex --tick "$max_tick" --frequency "$max_frequency"
			fi
			sleep "$1"
		;;
		X0)
			adjtimex --tick "$nominal_tick" --frequency "$nominal_frequency"
			(
				umask 022 &&
				/etc/init.d/ntp-server start
				sleep 600
				hwclock $hwclock_opt --systohc
			)
			exit
		;;
		*)
			adjtimex --tick "$nominal_tick" --frequency "$nominal_frequency"
			sleep 300
		;;
	esac
done
__EOT__
