]> git.pld-linux.org Git - packages/tzdata.git/blobdiff - timezone.init
status: return failure if everything not ok
[packages/tzdata.git] / timezone.init
old mode 100644 (file)
new mode 100755 (executable)
index b65be35..5b52348
@@ -3,15 +3,15 @@
 # timezone     Set time zone information.
 # chkconfig:   2345 10 90
 # description: This script is setting time zone information for your machine.
-# Author:      Pawel Wilk <siefca@pld-linux.org>
 #
-# $Id$
 
 [ -f /etc/sysconfig/timezone ] || exit 0
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
+upstart_controlled --except status disable
+
 . /etc/sysconfig/timezone
 
 ZONE_FILE="$ZONE_INFO_DIR"
@@ -20,42 +20,51 @@ if [ -n "$ZONE_INFO_SCHEME" -a "$ZONE_INFO_SCHEME" != "posix" ]; then
        ZONE_FILE="$ZONE_FILE/$ZONE_INFO_SCHEME"
 fi
 
-if [ -n "$ZONE_INFO_AREA" ]; then
-       ZONE_FILE="$ZONE_FILE/$ZONE_INFO_AREA"
-fi
-
-ZONE_FILE="$ZONE_FILE/$TIME_ZONE"
+ZONE_FILE="$ZONE_FILE/$TIMEZONE"
 
 [ -L /etc/localtime ] && [ "$(resolvesymlink /etc/localtime)" = "$ZONE_FILE" ] && exit 0
 
 start() {
-       if [ ! -f /var/lock/subsys/timezone ]; then
-               if [ -f "$ZONE_FILE" ]; then
-                       rm -f /etc/localtime
-
-                       if [ -n "$ZONE_INFO_AREA" ]; then
-                               MESSAGE="`nls 'Setting time zone information (%s, %s)' "$ZONE_INFO_AREA" "$TIME_ZONE"`"
-                       else
-                               MESSAGE="`nls 'Setting time zone information (%s)' "$TIME_ZONE"`"
-                       fi
-                       run_cmd "$MESSAGE" cp -afc $ZONE_FILE /etc/localtime
-                       RETVAL=$?
-               fi
-
-               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/timezone
+       if [ -f /var/lock/subsys/timezone ]; then
+               msg_already_running timezone
+               return
+       fi
+
+       if [ -f "$ZONE_FILE" ]; then
+               rm -f /etc/localtime
+
+               MESSAGE=$(nls 'Setting time zone information (%s)' "$TIMEZONE")
+
+               run_cmd "$MESSAGE" cp -af "$ZONE_FILE" /etc/localtime
+               RETVAL=$?
+               restorecon /etc/localtime >/dev/null 2>&1
+       else
+               show "Missing %s file" "$ZONE_FILE"
+               fail
+               RETVAL=2
        fi
+
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/timezone
 }
 
 stop() {
-       if [ -f /var/lock/subsys/timezone ]; then
-               rm -f /var/lock/subsys/timezone
-       fi
+       rm -f /var/lock/subsys/timezone >/dev/null 2>&1
 }
 
 disable() {
        run_cmd "Unsetting time zone information" rm -f /etc/localtime
 }
 
+# return true if FILE1 and FILE2 are identical
+identical() {
+       local crc1 crc2
+       test -f "$1" || return 1
+       test -f "$2" || return 1
+       crc1=$(cksum "$1" | awk '{print $1}')
+       crc2=$(cksum "$2" | awk '{print $1}')
+       [ "$crc1" = "$crc2" ]
+}
+
 RETVAL=0
 # See how we were called.
 case "$1" in
@@ -63,17 +72,27 @@ case "$1" in
        start
        ;;
   stop)
-       stop
+       stop
        ;;
-  restart|reload)
+  restart|try-restart|reload|force-reload)
        stop
        start
        ;;
   disable)
        disable
        ;;
+  status)
+       nls 'Timezone is configured to %s' "$TIMEZONE"
+       if [ ! -f "$ZONE_FILE" ]; then
+               nls "Missing %s file" "$ZONE_FILE"
+               exit 1
+       elif ! identical "$ZONE_FILE" /etc/localtime; then
+               nls 'Current time zone differs from %s' "$TIMEZONE"
+               exit 1
+       fi
+       ;;
   *)
-       msg_usage "$0 {start|stop|restart|reload|disable}"
+       msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|disable|status}"
        exit 3
 esac
 
This page took 0.04285 seconds and 4 git commands to generate.