Release 0.7
[fake-hwclock.git] / fake-hwclock
1 #!/bin/sh
2 #
3 # Trivial script to load/save current contents of the kernel clock
4 # from/to a file. Helpful as a *bootstrap* clock on machines where
5 # there isn't a useful RTC driver (e.g. on development boards). Using
6 # NTP is still recommended on these machines to get to real time sync
7 # once more of the system is up and running.
8 #
9 # Copyright 2012 Steve McIntyre <93sam@debian.org>
10 #
11 # License: GPLv2, see COPYING
12
13 if [ "$FILE"x = ""x ] ; then
14     FILE=/etc/fake-hwclock.data
15 fi
16
17 COMMAND=$1
18 if [ "$COMMAND"x = ""x ] ; then
19     COMMAND="save"
20 fi
21
22 FORCE=false
23 if [ "$2"x = "force"x ] ; then
24     FORCE=true
25 fi
26
27 case $COMMAND in
28     save)
29         date -u '+%Y-%m-%d %H:%M:%S' > $FILE
30         ;;
31     load)
32         if [ -e $FILE ] ; then
33             SAVED="$(cat $FILE)"
34             SAVED_SEC=$(date -u -d "$SAVED" '+%s')
35             NOW_SEC=$(date -u '+%s')
36             if $FORCE || [ $NOW_SEC -le $SAVED_SEC ] ; then
37                 date -u -s "$SAVED"
38             else
39                 echo "Current system time: $(date -u '+%Y-%m-%d %H:%M:%S')"
40                 echo "fake-hwclock saved clock information is in the past: $SAVED"
41                 echo "To set system time to this saved clock anyway, use \"force\""
42             fi      
43         else
44             echo "Unable to read saved clock information: $FILE does not exist"
45         fi
46         ;;
47     *)
48         echo $0: Unknown command $COMMAND
49         exit 1
50         ;;
51 esac