# NTP is still recommended on these machines to get to real time sync
# once more of the system is up and running.
#
-# Copyright 2012 Steve McIntyre <93sam@debian.org>
+# Copyright 2012-2016 Steve McIntyre <93sam@debian.org>
#
# License: GPLv2, see COPYING
FILE=/etc/fake-hwclock.data
fi
+# Midnight on the day of this release, used as a sanity check when
+# saving
+HWCLOCK_EPOCH="2016-04-15 00:00:00"
+HWCLOCK_EPOCH_SEC="1460678400"
+
COMMAND=$1
if [ "$COMMAND"x = ""x ] ; then
COMMAND="save"
fi
+FORCE=false
+if [ "$2"x = "force"x ] ; then
+ FORCE=true
+fi
+
case $COMMAND in
save)
- date -u '+%Y-%m-%d %H:%M:%S' > $FILE;;
+ if [ -e $FILE ] ; then
+ NOW_SEC=$(date -u '+%s')
+ if $FORCE || [ $NOW_SEC -ge $HWCLOCK_EPOCH_SEC ] ; then
+ date -u '+%Y-%m-%d %H:%M:%S' > $FILE
+ else
+ echo "Time travel detected!"
+ echo "fake-hwclock release date is in the future: $HWCLOCK_EPOCH"
+ echo "Current system time: $(date -u '+%Y-%m-%d %H:%M:%S')"
+ echo "To force the saved system clock backwards in time anyway, use \"force\""
+ fi
+ else
+ date -u '+%Y-%m-%d %H:%M:%S' > $FILE
+ fi
+ ;;
load)
if [ -e $FILE ] ; then
- date -u -s "`cat $FILE`"
+ SAVED="$(cat $FILE)"
+ SAVED_SEC=$(date -u -d "$SAVED" '+%s')
+ NOW_SEC=$(date -u '+%s')
+ if $FORCE || [ $NOW_SEC -le $SAVED_SEC ] ; then
+ date -u -s "$SAVED"
+ else
+ echo "Current system time: $(date -u '+%Y-%m-%d %H:%M:%S')"
+ echo "fake-hwclock saved clock information is in the past: $SAVED"
+ echo "To set system time to this saved clock anyway, use \"force\""
+ fi
else
echo "Unable to read saved clock information: $FILE does not exist"
- fi;;
+ fi
+ ;;
*)
echo $0: Unknown command $COMMAND
- exit 1;;
+ exit 1
+ ;;
esac