diff options
Diffstat (limited to 'time/tzfile.c')
-rw-r--r-- | time/tzfile.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/time/tzfile.c b/time/tzfile.c index aeec637b3b..9289de63a0 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -112,8 +112,8 @@ __tzfile_read (const char *file) /* No user specification; use the site-wide default. */ file = TZDEFAULT; else if (*file == '\0') - /* User specified the empty string; use UTC explicitly. */ - file = "Universal"; + /* User specified the empty string; use UTC with no leap seconds. */ + return; else { /* We must not allow to read an arbitrary file in a setuid @@ -411,19 +411,23 @@ find_transition (time_t timer) } int -__tzfile_compute (time_t timer, long int *leap_correct, int *leap_hit) +__tzfile_compute (time_t timer, int use_localtime, + long int *leap_correct, int *leap_hit) { - struct ttinfo *info; register size_t i; - info = find_transition (timer); - __daylight = info->isdst; - __timezone = info->offset; - for (i = 0; i < num_types && i < sizeof (__tzname) / sizeof (__tzname[0]); - ++i) - __tzname[types[i].isdst] = &zone_names[types[i].idx]; - if (info->isdst < sizeof (__tzname) / sizeof (__tzname[0])) - __tzname[info->isdst] = &zone_names[info->idx]; + if (use_localtime) + { + struct ttinfo *info = find_transition (timer); + __daylight = info->isdst; + __timezone = info->offset; + for (i = 0; + i < num_types && i < sizeof (__tzname) / sizeof (__tzname[0]); + ++i) + __tzname[types[i].isdst] = &zone_names[types[i].idx]; + if (info->isdst < sizeof (__tzname) / sizeof (__tzname[0])) + __tzname[info->isdst] = &zone_names[info->idx]; + } *leap_correct = 0L; *leap_hit = 0; @@ -455,7 +459,7 @@ __tzfile_compute (time_t timer, long int *leap_correct, int *leap_hit) return 1; } -void +static void compute_tzname_max (size_t chars) { extern size_t __tzname_cur_max; /* Defined in tzset.c. */ |