Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2005-02-19 22:58:38 +0300
committerCorinna Vinschen <corinna@vinschen.de>2005-02-19 22:58:38 +0300
commit2d7606a594bc02f4213fb14d780702d9be270e7f (patch)
tree5769b5c9697bdcf58b82d6070ffd46c98e2a1577 /winsup/cygwin/localtime.cc
parent2cd6f872f35c72e95595173653beb1fa40e03ecc (diff)
* localtime.cc: Temporary implementation of setting __tzrule's offset
member to be used by strftime. (__tzrule): New global variable. (tzparse): Set __tzrule's offset member appropriately.
Diffstat (limited to 'winsup/cygwin/localtime.cc')
-rw-r--r--winsup/cygwin/localtime.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/winsup/cygwin/localtime.cc b/winsup/cygwin/localtime.cc
index 548f9d2e1..c956b0405 100644
--- a/winsup/cygwin/localtime.cc
+++ b/winsup/cygwin/localtime.cc
@@ -637,6 +637,20 @@ int daylight;
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)
{
@@ -1235,6 +1249,8 @@ 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;
} else {
register long theirstdoffset;
register long theirdstoffset;
@@ -1321,6 +1337,8 @@ 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;
}
} else {
dstlen = 0;
@@ -1329,6 +1347,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;
}
sp->charcnt = stdlen + 1;
if (dstlen != 0)