#! /bin/sh -e

NAME=timezone
DESCRIPTION="TZ setter"

. /etc/init.d/functions.sh

set_tz() {
	local tzrc=/etc/TZ ntpdconf=/etc/sysconfig/openntpd.conf
	local tztemplate=/usr/share/timezone/localtime.tz.template
	local tz_cooked tmpvar tmpvar2 tz_file tztemp

	[ -f $ntpdconf ] || return 1
	. $ntpdconf

	[ "$POSIX_TZ" ] || return 1

	tz_cooked=$POSIX_TZ
	[ "$DST_ENABLED" = yes ] || {
		tmpvar=${POSIX_TZ#<*>*[0123456789+-]}
		[ "$tmpvar" = "$POSIX_TZ" ] &&
		tmpvar=${POSIX_TZ#*[0123456789+-]}

		[ "$tmpvar" != "$POSIX_TZ" ] || {
			# Bad TZ format
			return 1
		}
		tmpvar2=${tmpvar#*[<A-Za-z]}
		if [ "$tmpvar" = "$tmpvar2" ]; then
			tmpvar=
		else
			tmpvar=$tmpvar2
		fi

		[ -z "$tmpvar" ] || tz_cooked=${POSIX_TZ%?$tmpvar}
	}
	[ -r $tzrc ] && read tz_file < $tzrc || :

	[ "$tz_file" != "$tz_cooked" ] || return 0
	echo "$tz_cooked" > $tzrc
	[ -r $tztemplate ] || return 0
	tztemp=`mktemp /var/localtime.XXXXXX` || return 1
	chmod 644 $tztemp &&
	cat $tztemplate $tzrc > $tztemp &&
	mv $tztemp /etc/localtime || {
		rm -f $tztemp
		return 1
	}
}

case "$1" in
	start)
		begin "Starting $DESCRIPTION"
		set_tz
		end $?
		;;
	stop)
		;;
	restart)
		begin "Restarting $DESCRIPTION"
		set_tz
		end $?
		;;
	*)
		error "Usage: $0 start|stop|restart"
		;;
esac

exit 0
