X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;ds=sidebyside;f=timezone.init;h=2198739173a607bc9d4688443ff8e14f8c8898d7;hb=eee19cd12fa37ff43d6371dac06904c3aa39651e;hp=58c1e634b3bf8c20cf7f3e4934048e6f877ed461;hpb=64534ab1aa1dc433db404b7b8cbac33acf0b75d7;p=packages%2Ftzdata.git diff --git a/timezone.init b/timezone.init old mode 100644 new mode 100755 index 58c1e63..2198739 --- a/timezone.init +++ b/timezone.init @@ -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 # # $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" @@ -20,42 +21,49 @@ 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 + 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,9 +71,9 @@ case "$1" in start ;; stop) - stop + stop ;; - restart|reload) + restart|try-restart|reload|force-reload) stop start ;; @@ -73,14 +81,15 @@ case "$1" in disable ;; status) - if [ -n "$ZONE_INFO_AREA" ]; then - nls 'Time zone configured to (%s, %s)' "$ZONE_INFO_AREA" "$TIME_ZONE" - else - nls 'Time zone configured to (%s)' "$TIME_ZONE" + 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|reload|disable|status}" + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|disable|status}" exit 3 esac