[openwrt/openwrt] base-files: sysfixtime: Fix time on the fake RTC

LEDE Commits lede-commits at lists.infradead.org
Sun Feb 19 05:31:43 PST 2023


981213 pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/fa08d900d4ec3bf0c2440b336a75f2b9bda29845

commit fa08d900d4ec3bf0c2440b336a75f2b9bda29845
Author: Yuan Tao <ty at wevs.org>
AuthorDate: Mon Sep 14 17:19:49 2020 +0800

    base-files: sysfixtime: Fix time on the fake RTC
    
    On some devices the chip has RTC but no battery save time.
    This leads back to getting the wrong time
    and skipping the check of the last file modification date.
    
    This commit ensures that the file time is checked even
    if the RTC exists.
    which would ordinarily return an approbiate
    system time used for e.g. certificate generation.
    
    Tested-on: NanoPi R2S
    
    Signed-off-by: Yuan Tao <ty at wevs.org>
---
 package/base-files/files/etc/init.d/sysfixtime | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/package/base-files/files/etc/init.d/sysfixtime b/package/base-files/files/etc/init.d/sysfixtime
index aab5b153d0..93f792266a 100755
--- a/package/base-files/files/etc/init.d/sysfixtime
+++ b/package/base-files/files/etc/init.d/sysfixtime
@@ -8,23 +8,33 @@ RTC_DEV=/dev/rtc0
 HWCLOCK=/sbin/hwclock
 
 boot() {
-	start && exit 0
-
-	local maxtime="$(maxtime)"
+	hwclock_load
+	local maxtime="$(find_max_time)"
 	local curtime="$(date +%s)"
-	[ $curtime -lt $maxtime ] && date -s @$maxtime
+	if [ $curtime -lt $maxtime ]; then
+		date -s @$maxtime
+		hwclock_save
+	fi
 }
 
 start() {
-	[ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -s -u -f $RTC_DEV
+	hwclock_load
 }
 
 stop() {
+	hwclock_save
+}
+
+hwclock_load() {
+	[ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -s -u -f $RTC_DEV
+}
+
+hwclock_save(){
 	[ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -w -u -f $RTC_DEV && \
 		logger -t sysfixtime "saved '$(date)' to $RTC_DEV"
 }
 
-maxtime() {
+find_max_time() {
 	local file newest
 
 	for file in $( find /etc -type f ) ; do




More information about the lede-commits mailing list