]> git.pld-linux.org Git - packages/tzdata.git/blame_incremental - timezone.init
status: return failure if everything not ok
[packages/tzdata.git] / timezone.init
... / ...
CommitLineData
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
13upstart_controlled --except status disable
14
15. /etc/sysconfig/timezone
16
17ZONE_FILE="$ZONE_INFO_DIR"
18
19if [ -n "$ZONE_INFO_SCHEME" -a "$ZONE_INFO_SCHEME" != "posix" ]; then
20 ZONE_FILE="$ZONE_FILE/$ZONE_INFO_SCHEME"
21fi
22
23ZONE_FILE="$ZONE_FILE/$TIMEZONE"
24
25[ -L /etc/localtime ] && [ "$(resolvesymlink /etc/localtime)" = "$ZONE_FILE" ] && exit 0
26
27start() {
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
50stop() {
51 rm -f /var/lock/subsys/timezone >/dev/null 2>&1
52}
53
54disable() {
55 run_cmd "Unsetting time zone information" rm -f /etc/localtime
56}
57
58# return true if FILE1 and FILE2 are identical
59identical() {
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
68RETVAL=0
69# See how we were called.
70case "$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
97esac
98
99exit $RETVAL
This page took 0.026724 seconds and 4 git commands to generate.