#!/bin/sh
#
# $Id: clock,v 1.8 2002/12/08 13:37:55 ldv Exp $
#
# /etc/init.d/clock - initialize system clock / sync hardware clock
#

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

# Set the system clock.
ARC=0
SRM=0
UTC=0
HWCLOCK_SET_AT_HALT=false
HWCLOCK_ADJUST=false

if SourceIfNotEmpty /etc/sysconfig/clock; then
	# convert old style clock config to new values
	if [ "${CLOCKMODE}" = "GMT" ]; then
		UTC=true
	elif [ "${CLOCKMODE}" = "ARC" ]; then
		ARC=true
	fi
fi

CLOCKDEF=

case "$UTC" in
	yes|true)
		CLOCKFLAGS="$CLOCKFLAGS -u"
		CLOCKDEF="$CLOCKDEF (utc)"
		;;
	no|false)
		CLOCKFLAGS="$CLOCKFLAGS --localtime"
		CLOCKDEF="$CLOCKDEF (localtime)"
esac

case "$ARC" in
	yes|true)
		CLOCKFLAGS="$CLOCKFLAGS -A"
		CLOCKDEF="$CLOCKDEF (arc)"
		;;
esac

case "$SRM" in
	yes|true)
		CLOCKFLAGS="$CLOCKFLAGS -S"
		CLOCKDEF="$CLOCKDEF (srm)"
		;;
esac

RETVAL=0

case "$1" in
	set)
		/sbin/hwclock --hctosys $CLOCKFLAGS
		action "Setting system clock$CLOCKDEF: `date`" date
		;;
	start)
		if [ "$HWCLOCK_ADJUST" = yes -a -s /etc/adjtime ]; then
			action "Adjusting hardware clock:" /sbin/hwclock --adjust
		fi
		/sbin/hwclock --hctosys $CLOCKFLAGS
		action "Setting system clock$CLOCKDEF: `date`" date
		;;
	sync)
		action "Setting hardware clock$CLOCKDEF: `date`" /sbin/hwclock --systohc $CLOCKFLAGS
		RETVAL=$?
		;;
	stop)
		if [ "$HWCLOCK_SET_AT_HALT" = yes ]; then
			echo -n "Setting hardware clock$CLOCKDEF: `date` "
			/sbin/hwclock --systohc $CLOCKFLAGS && echo_success || echo_failure
			RETVAL=$?
			echo -e '\r'
		fi
		;;
	*)
		echo "Usage: ${0##*/} {start|sync|stop}"
		RETVAL=1
		;;
esac

exit $RETVAL
