about summary refs log tree commit diff
path: root/time/tzset.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-14 19:14:48 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-14 19:14:48 +0000
commitff152e3fc8c7d38e08d9f9d70eb6109c878e1372 (patch)
tree7fc3fb83b20673816f3f2082ac79558028f02b25 /time/tzset.c
parent847a35a07b6412a24f8978cf2a7fafc4e5c4a471 (diff)
downloadglibc-ff152e3fc8c7d38e08d9f9d70eb6109c878e1372.tar.gz
glibc-ff152e3fc8c7d38e08d9f9d70eb6109c878e1372.tar.xz
glibc-ff152e3fc8c7d38e08d9f9d70eb6109c878e1372.zip
Update.
1998-05-14 13:25  Ulrich Drepper  <drepper@cygnus.com>

	* inet/netinet/in.h: Add defines for multicast.
	Reported by Jeremy Hall <jhall@UU.NET>.

	* stdlib/stdlib.h: Add prototypes for __setenv and __unsetenv.
	* sysdeps/generic/putenv.c: Use __setenv and __unsetenv, not setenv
	and unsetenv.  Optimize _LIBC case.
	* sysdeps/generic/setenv.c: Prevent unnecessary memory leaks.
	Define functions with leading __.

	* time/tzfile.c: Correct handling of global variables daylight,
	timezone, and tzname.
	* time/tzset.c: Likewise.
	* timezone/Makefile (tests): Add tst-timezone.
	* timezone/tst-timezone.c: New file.

1998-05-14 10:35  Ulrich Drepper  <drepper@cygnus.com>

	* timezone/asia: Update from tzdata1998d.
	* timezone/australasia: Likewise.
	* timezone/europe: Likewise.
Diffstat (limited to 'time/tzset.c')
-rw-r--r--time/tzset.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/time/tzset.c b/time/tzset.c
index e766796513..e42be39db8 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -333,6 +333,7 @@ tzset_internal (always)
     {
       /* There is no DST.  */
       tz_rules[1].name = tz_rules[0].name;
+      tz_rules[1].offset = tz_rules[0].offset;
       free (tzbuf);
       return;
     }
@@ -547,8 +548,8 @@ tz_compute (timer, tm)
       ! compute_change (&tz_rules[1], 1900 + tm->tm_year))
     return 0;
 
-  __daylight = timer >= tz_rules[0].change && timer < tz_rules[1].change;
-  __timezone = -tz_rules[__daylight].offset;
+  __daylight = tz_rules[0].offset != tz_rules[1].offset;
+  __timezone = -tz_rules[0].offset;
   __tzname[0] = (char *) tz_rules[0].name;
   __tzname[1] = (char *) tz_rules[1].name;
 
@@ -626,9 +627,10 @@ __tz_convert (const time_t *timer, int use_localtime, struct tm *tp)
     {
       if (use_localtime)
 	{
-	  tp->tm_isdst = __daylight;
-	  tp->tm_zone = __tzname[__daylight];
-	  tp->tm_gmtoff = -__timezone;
+	  tp->tm_isdst = (*timer >= tz_rules[0].change
+			  && *timer < tz_rules[1].change);
+	  tp->tm_zone = __tzname[tp->tm_isdst];
+	  tp->tm_gmtoff = tz_rules[tp->tm_isdst].offset;
 	}
       else
 	{