]> git.pld-linux.org Git - packages/tzdata.git/blobdiff - timezone.init
up to 2013c
[packages/tzdata.git] / timezone.init
old mode 100644 (file)
new mode 100755 (executable)
index aca05d3..2198739
@@ -3,7 +3,6 @@
 # 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$
 
@@ -12,6 +11,8 @@
 # Source function library.
 . /etc/rc.d/init.d/functions
 
+upstart_controlled --except status disable
+
 . /etc/sysconfig/timezone
 
 ZONE_FILE="$ZONE_INFO_DIR"
@@ -26,6 +27,7 @@ ZONE_FILE="$ZONE_FILE/$TIMEZONE"
 
 start() {
        if [ -f /var/lock/subsys/timezone ]; then
+               msg_already_running timezone
                return
        fi
 
@@ -34,24 +36,34 @@ start() {
 
                MESSAGE=$(nls 'Setting time zone information (%s)' "$TIMEZONE")
 
-               run_cmd "$MESSAGE" cp -af $ZONE_FILE /etc/localtime
+               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
+       crc1=$(cksum "$1" | awk '{print $1}')
+       crc2=$(cksum "$2" | awk '{print $1}')
+       [ "$crc1" = "$crc2" ]
+}
+
 RETVAL=0
 # See how we were called.
 case "$1" in
@@ -59,7 +71,7 @@ case "$1" in
        start
        ;;
   stop)
-       stop
+       stop
        ;;
   restart|try-restart|reload|force-reload)
        stop
@@ -69,7 +81,12 @@ case "$1" in
        disable
        ;;
   status)
-       nls 'Time zone configured to (%s)' "$TIMEZONE"
+       nls 'Timezone is configured to %s' "$TIMEZONE"
+       if [ ! -f "$ZONE_FILE" ]; then
+               nls "Missing %s file" "$ZONE_FILE"
+       elif ! identical "$ZONE_FILE" /etc/localtime; then
+               nls 'Current time zone differs from %s!' "$TIMEZONE"
+       fi
        ;;
   *)
        msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|disable|status}"
This page took 0.082774 seconds and 4 git commands to generate.