 fa08d900d4
			
		
	
	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
 | |
| }
 |