diff --git a/package/base-files/files/etc/init.d/sysfixtime b/package/base-files/files/etc/init.d/sysfixtime index ab946f6518..1354a586ce 100755 --- a/package/base-files/files/etc/init.d/sysfixtime +++ b/package/base-files/files/etc/init.d/sysfixtime @@ -10,8 +10,8 @@ HWCLOCK=/sbin/hwclock boot() { start && exit 0 + local maxtime="$(maxtime)" local curtime="$(date +%s)" - local maxtime="$(find /etc -type f -exec date -r {} +%s \; | sort -nr | head -n1)" [ $curtime -lt $maxtime ] && date -s @$maxtime } @@ -23,3 +23,12 @@ stop() { [ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -w -f $RTC_DEV && \ logger -t sysfixtime "saved '$(date)' to $RTC_DEV" } + +maxtime() { + local file newest + + for file in $( find /etc -type f ! -path /etc/dnsmasq.time ) ; do + [ -z "$newest" -o "$newest" -ot "$file"] && newest=$file + done + [ "$newest" ] && date -r "$newest" +%s +}