Timezone : DST change

Geert Jordaens geert.jordaens@telenet.be
Sun Mar 9 11:23:00 GMT 2008


I don't know if this is the right address to send this feature 
request/proposition.

What would be against extending glibc with a functionality that allows 
to calculate the time_t representation of a DST switch?

exmple :

time_t time_nt;
time_t time_dst;
putenv("TZ=europe/brussels");
year = 2008;
isdst = 0;
time_nt = dstchange(year, isdst); // would return the switch time_t from 
DST to normal time (0 if no switch)
isdst = 1;
time_dst = dstchange(year, isdst); // would return the switch time_t 
from normal  tot DST to time (0 if no switch)

Add to tzset.c
time_t
__tz_compute_dst_change(year, isdst)
     int year;
     int isdst;
{
  time_t change = 0;

  __libc_lock_lock (tzset_lock);

  tzset_internal (1, 1);

  isdst = (isdst==0)?0:1;
  compute_change (&tz_rules[isdst], year);
  change = tz_rules[isdst].change;

  __libc_lock_unlock (tzset_lock);

  return change;
}

Create dstchange.c
/* Return the `struct tm' representation of *T in UTC.  */
time_t
dstchange (year, isdst)
     int year;
     int isdst;
{
  return __tz_compute_dst_change(year, isdst);
}
libc_hidden_def (dstchange)

Adapt the header files.


Geert Jordaens



More information about the Libc-alpha mailing list