From 2b79934c4f4dc62f043534729102c9dd2e211da7 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 2 Sep 2007 14:18:47 +0000 Subject: [PATCH] initscipts: Improve RTC handling so /etc/timestamp is used if its timestamp is 1 day or more greater than the existing time. Also set the timestamp on halt/reboot so devices without a hardware RTC (or with a broken RTC like the PXA) can benefit. --- .../initscripts/initscripts-1.0/bootmisc.sh | 20 ++++++++++--------- .../initscripts/initscripts-1.0/save-rtc.sh | 4 +++- packages/initscripts/initscripts_1.0.bb | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/initscripts/initscripts-1.0/bootmisc.sh b/packages/initscripts/initscripts-1.0/bootmisc.sh index 799cdca12b..2a40e0c410 100755 --- a/packages/initscripts/initscripts-1.0/bootmisc.sh +++ b/packages/initscripts/initscripts-1.0/bootmisc.sh @@ -61,16 +61,18 @@ fi # /sbin/ldconfig -# -# Recover the time, if there is a time file (first boot only) -# If not, set system clock from hardware clock -# +# Set the system clock from hardware clock +# If the timestamp is 1 day or more recent than the current time, +# use the timestamp instead. +/etc/init.d/hwclock.sh start if test -e /etc/timestamp then - date -s `cat /etc/timestamp` - mv -f /etc/timestamp /etc/timestamp.done - /etc/init.d/hwclock.sh stop -else - /etc/init.d/hwclock.sh start + SYSTEMDATE=`date "+%Y%m%d"` + TIMESTAMP=`cat /etc/timestamp | awk '{ print substr($0,9,4) substr($0,1,4);}'` + NEEDUPDATE=`expr \( $TIMESTAMP \> $SYSTEMDATE \)` + if [ $NEEDUPDATE -eq 1 ]; then + date `cat /etc/timestamp` + /etc/init.d/hwclock.sh stop + fi fi : exit 0 diff --git a/packages/initscripts/initscripts-1.0/save-rtc.sh b/packages/initscripts/initscripts-1.0/save-rtc.sh index 4e0e270701..e786073051 100644 --- a/packages/initscripts/initscripts-1.0/save-rtc.sh +++ b/packages/initscripts/initscripts-1.0/save-rtc.sh @@ -1,3 +1,5 @@ #! /bin/sh -#FIXME read timestamp handling for systems where RTC doesn't survive a reboot /etc/init.d/hwclock.sh stop + +# Update the timestamp +date +%2m%2d%2H%2M%Y > /etc/timestamp diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb index 3d2f0f50b4..06a12c04a5 100644 --- a/packages/initscripts/initscripts_1.0.bb +++ b/packages/initscripts/initscripts_1.0.bb @@ -4,7 +4,7 @@ PRIORITY = "required" DEPENDS = "makedevs" RDEPENDS = "makedevs" LICENSE = "GPL" -PR = "r99" +PR = "r100" SRC_URI = "file://functions \ file://halt \ -- 2.39.5