[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