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:
+22
-1
@@ -190,7 +190,28 @@ static void do_tzset()
|
|||||||
for (s = (const char *)zi+map_size-2; *s!='\n'; s--);
|
for (s = (const char *)zi+map_size-2; *s!='\n'; s--);
|
||||||
s++;
|
s++;
|
||||||
} else {
|
} 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user