changeset 5813:36dddf9d90d1

Fix calculation of time zone string in Fencode_time.
author Marcus Crestani <marcus@crestani.de>
date Thu, 02 Oct 2014 10:19:00 +0200
parents 7b42a97af782
children a216b3c2b09e
files src/ChangeLog src/editfns.c
diffstat 2 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sat Sep 27 14:16:11 2014 +0200
+++ b/src/ChangeLog	Thu Oct 02 10:19:00 2014 +0200
@@ -1,3 +1,9 @@
+2014-09-30  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>
+
+	* editfns.c (Fencode_time): Switch signs when calculating the time
+	zone string. (The offset indicates the value one must add to the
+	local time to arrive at UTC.)
+
 2014-09-23  Jerry James  <james@xemacs.org>
 
 	* floatfns.c (round_two_bignum_1): Fix memory leak.
--- a/src/editfns.c	Sat Sep 27 14:16:11 2014 +0200
+++ b/src/editfns.c	Thu Oct 02 10:19:00 2014 +0200
@@ -1190,9 +1190,13 @@
       else if (FIXNUMP (zone))
 	{
 	  int abszone = abs (XFIXNUM (zone));
-	  /* #### I have no idea what this conforms to,
-	     but the compiler has stopped whining. */
-	  sprintf (tzbuf, "XXX%s%d:%02d:%02d", (XFIXNUM (zone) < 0) ? "-" : "+",
+	  /* We specify the time zone in offset notation (see `man
+	     tzset' for details).  The offset indicates the value one
+	     must add to local time to arrive at UTC.  Thus, we sign
+	     the offset with a `-' if the time zone is east of GMT; we
+	     sign the offset with a `+' if the time zone is GMT (then
+	     the offset is 0) or if the time zone is west of GMT. */
+	  sprintf (tzbuf, "XXX%s%d:%02d:%02d", (XFIXNUM (zone) < 0) ? "+" : "-",
 		   abszone / (60*60), (abszone/60) % 60, abszone % 60);
 	  tzstring = tzbuf;
 	}