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