8 void get_time_diff(time_t t,int *timediff,int *is_dst)
10 struct tm tm_utc,tm_local;
11 tm_utc = *(gmtime(&t));
12 tm_local = *(localtime(&t));
14 *timediff = mktime(&tm_utc) - mktime(&tm_local);
15 *is_dst = tm_local.tm_isdst;
20 time_t tnow = time(NULL);
22 int last_dst,lastdiff;
23 time_t endt = tnow + 2*YEAR;
24 time_t t = tnow - 2*YEAR;
30 get_time_diff(t,&lastdiff,&last_dst);
33 /* run forward till we get a change */
34 for (timediff = lastdiff, is_dst = last_dst;
35 timediff == lastdiff && last_dst == is_dst && t < endt ;
37 get_time_diff(t,&timediff,&is_dst);
44 while (low+1 < high) {
46 get_time_diff(t,&timediff,&is_dst);
47 if (timediff == lastdiff && is_dst == last_dst)
54 get_time_diff(t,&timediff,&is_dst);
55 printf("TimeDiff=%d is_dst=%d at %s",
56 timediff,is_dst,asctime(localtime(&t)));
61 printf("No timezone or DST changes?\n");