[newlib-cygwin/cygwin-2.0] Move tzset calls to time functions.

Corinna Vinschen corinna@sourceware.org
Thu Apr 23 20:49:00 GMT 2015


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=382fa90fe1fdd0f363088a28a5be12a4548099b4

commit 382fa90fe1fdd0f363088a28a5be12a4548099b4
Author: Craig Howland <howland@LGSInnovations.com>
Date:   Tue Mar 31 10:26:49 2015 +0200

    Move tzset calls to time functions.
    
    	* libc/stdlib/setenv_r.c (_setenv_r): Remove tzset() call for TZ
    	definition.
    	* libc/time/lcltime_r.c (localtime_r): Add tzset() call
    	* libc/time/mktime.c (mktime):  Ditto.
    	* libc/time/strftime.c (strftime, wcsftime): Ditto.
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 newlib/ChangeLog              | 8 ++++++++
 newlib/libc/stdlib/setenv_r.c | 7 -------
 newlib/libc/time/lcltime_r.c  | 1 +
 newlib/libc/time/mktime.c     | 2 ++
 newlib/libc/time/strftime.c   | 2 ++
 5 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 6e45e94..c214b69 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,11 @@
+2015-03-30  Craig Howland  <howland@LGSInnovations.com>
+
+	* libc/stdlib/setenv_r.c (_setenv_r): Remove tzset() call for TZ
+	definition.
+	* libc/time/lcltime_r.c (localtime_r): Add tzset() call
+	* libc/time/mktime.c (mktime):  Ditto.
+	* libc/time/strftime.c (strftime, wcsftime): Ditto.
+
 2015-03-30  Yaakov Selkowitz  <yselkowi@redhat.com>
 
 	* libc/time/strftime.c (strftime) <%Z>: Initialize tznam to NULL.
diff --git a/newlib/libc/stdlib/setenv_r.c b/newlib/libc/stdlib/setenv_r.c
index f9ff2c1..c32c6ac 100644
--- a/newlib/libc/stdlib/setenv_r.c
+++ b/newlib/libc/stdlib/setenv_r.c
@@ -79,9 +79,6 @@ _DEFUN (_setenv_r, (reent_ptr, name, value, rewrite),
 	{			/* old larger; copy over */
 	  while ((*C++ = *value++) != 0);
           ENV_UNLOCK;
-	  /* if we are changing the TZ environment variable, update timezone info */
-	  if (strcmp (name, "TZ") == 0)
-	    tzset ();
 	  return 0;
 	}
     }
@@ -128,10 +125,6 @@ _DEFUN (_setenv_r, (reent_ptr, name, value, rewrite),
 
   ENV_UNLOCK;
 
-  /* if we are setting the TZ environment variable, update timezone info */
-  if (strncmp ((*p_environ)[offset], "TZ=", 3) == 0)
-    tzset ();
-
   return 0;
 }
 
diff --git a/newlib/libc/time/lcltime_r.c b/newlib/libc/time/lcltime_r.c
index 9094e5d..8a69e40 100644
--- a/newlib/libc/time/lcltime_r.c
+++ b/newlib/libc/time/lcltime_r.c
@@ -31,6 +31,7 @@ _DEFUN (localtime_r, (tim_p, res),
   year = res->tm_year + YEAR_BASE;
   ip = __month_lengths[isleap(year)];
 
+  tzset ();
   TZ_LOCK;
   if (_daylight)
     {
diff --git a/newlib/libc/time/mktime.c b/newlib/libc/time/mktime.c
index 5bedf5a..8669fbd 100644
--- a/newlib/libc/time/mktime.c
+++ b/newlib/libc/time/mktime.c
@@ -197,6 +197,8 @@ _DEFUN(mktime, (tim_p),
   /* compute total seconds */
   tim += (days * _SEC_IN_DAY);
 
+  tzset ();
+
   TZ_LOCK;
 
   if (_daylight)
diff --git a/newlib/libc/time/strftime.c b/newlib/libc/time/strftime.c
index ee604c2..72f06d3 100644
--- a/newlib/libc/time/strftime.c
+++ b/newlib/libc/time/strftime.c
@@ -1283,6 +1283,7 @@ recurse:
           if (tim_p->tm_isdst >= 0)
             {
 	      long offset;
+	      tzset ();
 
 #if defined (__CYGWIN__)
 	      /* Cygwin must check if the application has been built with or
@@ -1313,6 +1314,7 @@ recurse:
 	      size_t size;
 	      const char *tznam = NULL;
 
+	      tzset ();
 	      TZ_LOCK;
 #if defined (__CYGWIN__)
 	      /* See above. */



More information about the Newlib-cvs mailing list