* localtime.cc: Implement setting __tzrule's offset member using

newlib's __gettzinfo () interface.
	(__tzrule): Remove.
	(timezone): Define as long according to POSIX.
This commit is contained in:
Corinna Vinschen 2005-02-23 22:17:28 +00:00
parent ee8d935cdd
commit d0578adf88
2 changed files with 20 additions and 23 deletions

View 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.

View 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)