[BACK]Return to rtclocaltime CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / etc / rc.d

File: [cvs.NetBSD.org] / src / etc / rc.d / rtclocaltime (download)

Revision 1.7, Sat Aug 25 07:07:39 2007 UTC (12 years, 3 months ago) by apb
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, wrstuden-revivesa, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, mjf-devfs2-base2, mjf-devfs2-base, mjf-devfs2, mjf-devfs-base, mjf-devfs, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-base2, matt-armv6-prevmlocking, matt-armv6-nbase, matt-armv6-base, matt-armv6, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-nbase, hpcarm-cleanup-base, cube-autoconf-base, cube-autoconf
Branch point for: jym-xensuspend
Changes since 1.6: +4 -4 lines

Back out previous (which worked but made the code harder to understand),
and implement a different method of avoiding a "-0" result.

#!/bin/sh
#
# $NetBSD: rtclocaltime,v 1.7 2007/08/25 07:07:39 apb Exp $
#

# PROVIDE: rtclocaltime
# REQUIRE: mountcritremote
# BEFORE:  ntpdate ntpd

$_rc_subr_loaded . /etc/rc.subr

name="rtclocaltime"
rcvar=$name
start_cmd="rtclocaltime_start"
stop_cmd=":"

rtclocaltime_start()
{
	rtcoff=$(date '+%z' | awk '{
		offset = -int($1);
		if (offset < 0) {
			sign = -1;
			offset = -offset;
		} else {
			sign = 1;
		}
		minutes = offset % 100;
		hours = int(offset / 100);
		offset = sign * (hours * 60 + minutes);
		print offset;
	}')
	echo "Setting RTC offset to ${rtcoff}."
	sysctl -qw kern.rtc_offset=${rtcoff}
}

load_rc_config $name
run_rc_command "$1"