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