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