]>
Commit | Line | Data |
---|---|---|
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 |