mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-30 10:42:22 +00:00
fa08d900d4
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@wevs.org>
45 lines
764 B
Bash
Executable File
45 lines
764 B
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2013-2014 OpenWrt.org
|
|
|
|
START=00
|
|
STOP=90
|
|
|
|
RTC_DEV=/dev/rtc0
|
|
HWCLOCK=/sbin/hwclock
|
|
|
|
boot() {
|
|
hwclock_load
|
|
local maxtime="$(find_max_time)"
|
|
local curtime="$(date +%s)"
|
|
if [ $curtime -lt $maxtime ]; then
|
|
date -s @$maxtime
|
|
hwclock_save
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
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"
|
|
}
|
|
|
|
find_max_time() {
|
|
local file newest
|
|
|
|
for file in $( find /etc -type f ) ; do
|
|
[ -z "$newest" -o "$newest" -ot "$file" ] && newest=$file
|
|
done
|
|
[ "$newest" ] && date -r "$newest" +%s
|
|
}
|