]> git.pld-linux.org Git - packages/tzdata.git/blob - timezone.init
5b52348c2529fa8822e86fd27e8f1e856e159067
[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                 run_cmd "$MESSAGE" cp -af "$ZONE_FILE" /etc/localtime
39                 RETVAL=$?
40                 restorecon /etc/localtime >/dev/null 2>&1
41         else
42                 show "Missing %s file" "$ZONE_FILE"
43                 fail
44                 RETVAL=2
45         fi
46
47         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/timezone
48 }
49
50 stop() {
51         rm -f /var/lock/subsys/timezone >/dev/null 2>&1
52 }
53
54 disable() {
55         run_cmd "Unsetting time zone information" rm -f /etc/localtime
56 }
57
58 # return true if FILE1 and FILE2 are identical
59 identical() {
60         local crc1 crc2
61         test -f "$1" || return 1
62         test -f "$2" || return 1
63         crc1=$(cksum "$1" | awk '{print $1}')
64         crc2=$(cksum "$2" | awk '{print $1}')
65         [ "$crc1" = "$crc2" ]
66 }
67
68 RETVAL=0
69 # See how we were called.
70 case "$1" in
71   start)
72         start
73         ;;
74   stop)
75         stop
76         ;;
77   restart|try-restart|reload|force-reload)
78         stop
79         start
80         ;;
81   disable)
82         disable
83         ;;
84   status)
85         nls 'Timezone is configured to %s' "$TIMEZONE"
86         if [ ! -f "$ZONE_FILE" ]; then
87                 nls "Missing %s file" "$ZONE_FILE"
88                 exit 1
89         elif ! identical "$ZONE_FILE" /etc/localtime; then
90                 nls 'Current time zone differs from %s' "$TIMEZONE"
91                 exit 1
92         fi
93         ;;
94   *)
95         msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|disable|status}"
96         exit 3
97 esac
98
99 exit $RETVAL
This page took 0.045804 seconds and 2 git commands to generate.