]> git.pld-linux.org Git - packages/tzdata.git/blob - timezone.init
more upstart removal, refs 5763ae2
[packages/tzdata.git] / timezone.init
1 #!/bin/sh
2 #
3 # timezone      Set time zone information.
4 # chkconfig:    2345 10 90
5 # description:  This script is setting time zone information for your machine.
6 #
7
8 [ -f /etc/sysconfig/timezone ] || exit 0
9
10 # Source function library.
11 . /etc/rc.d/init.d/functions
12
13 . /etc/sysconfig/timezone
14
15 ZONE_FILE="$ZONE_INFO_DIR"
16
17 if [ -n "$ZONE_INFO_SCHEME" -a "$ZONE_INFO_SCHEME" != "posix" ]; then
18         ZONE_FILE="$ZONE_FILE/$ZONE_INFO_SCHEME"
19 fi
20
21 ZONE_FILE="$ZONE_FILE/$TIMEZONE"
22
23 [ -L /etc/localtime ] && [ "$(resolvesymlink /etc/localtime)" = "$ZONE_FILE" ] && exit 0
24
25 start() {
26         if [ -f /var/lock/subsys/timezone ]; then
27                 msg_already_running timezone
28                 return
29         fi
30
31         if [ -f "$ZONE_FILE" ]; then
32                 rm -f /etc/localtime
33
34                 MESSAGE=$(nls 'Setting time zone information (%s)' "$TIMEZONE")
35
36                 if [ -n "$(awk '$2 == "/usr" { print $2 }' /proc/mounts 2> /dev/null)" ]; then
37                         run_cmd "$MESSAGE" cp -af "$ZONE_FILE" /etc/localtime
38                 else
39                         run_cmd "$MESSAGE" ln -sf "$ZONE_FILE" /etc/localtime
40                 fi
41                 RETVAL=$?
42                 restorecon /etc/localtime >/dev/null 2>&1
43         else
44                 show "Missing %s file" "$ZONE_FILE"
45                 fail
46                 RETVAL=2
47         fi
48
49         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/timezone
50 }
51
52 stop() {
53         rm -f /var/lock/subsys/timezone >/dev/null 2>&1
54 }
55
56 disable() {
57         run_cmd "Unsetting time zone information" rm -f /etc/localtime
58 }
59
60 # return true if FILE1 and FILE2 are identical
61 identical() {
62         local crc1 crc2
63         test -f "$1" || return 1
64         test -f "$2" || return 1
65         crc1=$(cksum "$1" | awk '{print $1}')
66         crc2=$(cksum "$2" | awk '{print $1}')
67         [ "$crc1" = "$crc2" ]
68 }
69
70 RETVAL=0
71 # See how we were called.
72 case "$1" in
73   start)
74         start
75         ;;
76   stop)
77         stop
78         ;;
79   restart|try-restart|reload|force-reload)
80         stop
81         start
82         ;;
83   disable)
84         disable
85         ;;
86   status)
87         nls 'Timezone is configured to %s' "$TIMEZONE"
88         if [ ! -f "$ZONE_FILE" ]; then
89                 nls "Missing %s file" "$ZONE_FILE"
90                 exit 1
91         elif ! identical "$ZONE_FILE" /etc/localtime; then
92                 nls 'Current time zone differs from %s' "$TIMEZONE"
93                 exit 1
94         fi
95         ;;
96   *)
97         msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|disable|status}"
98         exit 3
99 esac
100
101 exit $RETVAL
This page took 0.123096 seconds and 3 git commands to generate.