Subject: [PATCH] Fix cogito handling of timezones

From: Frank Sorenson <[email-masked]>
Date: Wed, 08 Jun 2005 21:40:07 -0600

Current cogito behavior treats the timezone offset as if it's decimal,
but most zone offsets begin with a 0.  As a result, the computation
in cg-Xlib uses the zone offset as an octal number.  -0700 looks like
4 1/2 hours offset, rather than 7, and -0800 is an invalid octal
number.

This patch fixes the behavior to strip off leading 0s.  It's ugly,
but it should produce the right values until someone with better
bash scripting skills than I can fix it.

Signed-off-by: Frank Sorenson <[email-masked]>

diff --git a/cg-Xlib b/cg-Xlib
- --- a/cg-Xlib
+++ b/cg-Xlib
@@ -6,6 +6,8 @@
 # This file provides a library containing common code shared with all the
 # Cogito programs.
 
+shopt -s extglob
+
 _cg_cmd=${0##*/}
 
 _git=${GIT_DIR:-.git}
@@ -51,8 +53,12 @@ showdate () {
 	[ "$format" ] || format=-R
 	sec=${date[0]}; tz=${date[1]}
 	if [ "$has_gnudate" ]; then
- -	        dtz=${tz/+/}
- -		lsec=$(($dtz / 100 * 3600 + $dtz % 100 * 60 + $sec))
+		sign=${tz%%[0-9]*}
+		sign=${sign:?+}
+		dtz=${tz/[+-]}
+		dtz=${dtz##*(0)}
+		dtz=${dtz:?0}
+		lsec=$(($sec + $dtz % 100 $sign $dtz / 100 * 3600))
 	        pdate="$(date -ud "1970-01-01 UTC + $lsec sec" "$format" 2>/dev/null)"
 	else
 		# FIXME: $format

Frank
- -- 
Frank Sorenson - KD7TZK
Systems Manager, Computer Science Department
Brigham Young University
[email-masked]