properly fill in tzname[] for old (pre-64-bit-format) zoneinfo files
in this case, the first standard-time and first daylight-time rules should be taken as the "default" ones to expose.
This commit is contained in:
parent
32985d4f63
commit
190bbb9923
1 changed files with 22 additions and 1 deletions
|
|
@ -190,7 +190,28 @@ static void do_tzset()
|
|||
for (s = (const char *)zi+map_size-2; *s!='\n'; s--);
|
||||
s++;
|
||||
} else {
|
||||
s = 0;
|
||||
const unsigned char *p;
|
||||
__tzname[0] = __tzname[1] = 0;
|
||||
__daylight = __timezone = dst_off = 0;
|
||||
for (i=0; i<5; i++) r0[i] = r1[i] = 0;
|
||||
for (p=types; p<abbrevs; p+=6) {
|
||||
if (!p[4] && !__tzname[0]) {
|
||||
__tzname[0] = (char *)abbrevs + p[5];
|
||||
__timezone = -zi_read32(p);
|
||||
}
|
||||
if (p[4] && !__tzname[1]) {
|
||||
__tzname[1] = (char *)abbrevs + p[5];
|
||||
dst_off = -zi_read32(p);
|
||||
__daylight = 1;
|
||||
}
|
||||
}
|
||||
if (!__tzname[0]) __tzname[0] = __tzname[1];
|
||||
if (!__tzname[0]) __tzname[0] = (char *)__gmt;
|
||||
if (!__daylight) {
|
||||
__tzname[1] = __tzname[0];
|
||||
dst_off = __timezone;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue