]> git.pld-linux.org Git - packages/tzdata.git/blobdiff - timezone.init
- up to 2020f
[packages/tzdata.git] / timezone.init
old mode 100644 (file)
new mode 100755 (executable)
index c78eec5..716a1fd
@@ -3,9 +3,7 @@
 # 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
 
@@ -35,12 +33,17 @@ start() {
 
                MESSAGE=$(nls 'Setting time zone information (%s)' "$TIMEZONE")
 
-               run_cmd "$MESSAGE" cp -af "$ZONE_FILE" /etc/localtime
+               if [ -n "$(awk '$2 == "/usr" { print $2 }' /proc/mounts 2> /dev/null)" ]; then
+                       run_cmd "$MESSAGE" cp -af "$ZONE_FILE" /etc/localtime
+               else
+                       run_cmd "$MESSAGE" ln -sf "$ZONE_FILE" /etc/localtime
+               fi
                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
@@ -54,6 +57,16 @@ 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
@@ -71,11 +84,13 @@ case "$1" in
        disable
        ;;
   status)
-       if [ -x /usr/bin/diff ]; then
-               diff -q "$ZONE_FILE" /etc/localtime >/dev/null 2>&1 && \
-               nls 'Time zone is configured to %s' "$TIMEZONE" || \
-               nls 'Current time zone differs from %s!' "$TIMEZONE"
-       else    nls 'Time zone should be set to %s' "$TIMEZONE"
+       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
        ;;
   *)
This page took 0.027791 seconds and 4 git commands to generate.