OSDN Git Service

* localtime.cc: Implement setting __tzrule's offset member using
authorcorinna <corinna>
Wed, 23 Feb 2005 22:17:26 +0000 (22:17 +0000)
committercorinna <corinna>
Wed, 23 Feb 2005 22:17:26 +0000 (22:17 +0000)
newlib's __gettzinfo () interface.
(__tzrule): Remove.
(timezone): Define as long according to POSIX.

winsup/cygwin/ChangeLog
winsup/cygwin/localtime.cc

index 1515019..076b0ea 100644 (file)
@@ -1,3 +1,10 @@
+2005-02-23  Corinna Vinschen  <corinna@vinschen.de>
+       
+       * localtime.cc: Implement setting __tzrule's offset member using
+       newlib's __gettzinfo () interface.
+       (__tzrule): Remove.
+       (timezone): Define as long according to POSIX.
+
 2005-02-23  Eric Blake  <ebb9@byu.net>
 
        * devices.in (parsedisk): Fix typo.
index c956b04..aba2f7b 100644 (file)
@@ -629,28 +629,14 @@ static struct tm  tm;
 #undef _daylight
 
 #ifdef USG_COMPAT
-time_t                 timezone;
-int                    daylight;
+long           timezone;       /* was time_t but POSIX requires long. */
+int            daylight;
 #endif /* defined USG_COMPAT */
 
 #ifdef ALTZONE
-time_t                 altzone;
+time_t         altzone;
 #endif /* defined ALTZONE */
 
-/* Must be equivalent to definiton in newlib/libc/time/local.h */
-typedef struct __tzrule_struct
-{
-  char ch;
-  int m;
-  int n;
-  int d;
-  int s;
-  time_t change;
-  int offset;
-} __tzrule_type;
-__tzrule_type __tzrule[2] = { {'J', 0, 0, 0, 0, (time_t)0, 0 }, 
-                             {'J', 0, 0, 0, 0, (time_t)0, 0 } };
-
 static long
 detzcode(const char *codep)
 {
@@ -1249,8 +1235,10 @@ tzparse(const char *name, struct state *sp, const int lastditch)
                                janfirst += year_lengths[isleap(year)] *
                                        SECSPERDAY;
                        }
-                       __tzrule[0].offset = -sp->ttis[1].tt_gmtoff;
-                       __tzrule[1].offset = -sp->ttis[0].tt_gmtoff;
+                       __gettzinfo ()->__tzrule[0].offset
+                                               = -sp->ttis[1].tt_gmtoff;
+                       __gettzinfo ()->__tzrule[1].offset
+                                               = -sp->ttis[0].tt_gmtoff;
                } else {
                        register long   theirstdoffset;
                        register long   theirdstoffset;
@@ -1337,8 +1325,10 @@ tzparse(const char *name, struct state *sp, const int lastditch)
                        sp->ttis[1].tt_isdst = true;
                        sp->ttis[1].tt_abbrind = stdlen + 1;
                        sp->typecnt = 2;
-                       __tzrule[0].offset = -sp->ttis[0].tt_gmtoff;
-                       __tzrule[1].offset = -sp->ttis[1].tt_gmtoff;
+                       __gettzinfo ()->__tzrule[0].offset
+                                               = -sp->ttis[0].tt_gmtoff;
+                       __gettzinfo ()->__tzrule[1].offset
+                                               = -sp->ttis[1].tt_gmtoff;
                }
        } else {
                dstlen = 0;
@@ -1347,8 +1337,8 @@ tzparse(const char *name, struct state *sp, const int lastditch)
                sp->ttis[0].tt_gmtoff = -stdoffset;
                sp->ttis[0].tt_isdst = 0;
                sp->ttis[0].tt_abbrind = 0;
-               __tzrule[0].offset = -sp->ttis[0].tt_gmtoff;
-               __tzrule[1].offset = -sp->ttis[0].tt_gmtoff;
+               __gettzinfo ()->__tzrule[0].offset = -sp->ttis[0].tt_gmtoff;
+               __gettzinfo ()->__tzrule[1].offset = -sp->ttis[0].tt_gmtoff;
        }
        sp->charcnt = stdlen + 1;
        if (dstlen != 0)