4 time_t mktime(struct tm
*tm
)
8 long long t
= __tm_to_secs(tm
);
10 __secs_to_zone(t
, 1, &new.tm_isdst
, &new.__tm_gmtoff
, &opp
, &new.__tm_zone
);
12 if (tm
->tm_isdst
>=0 && new.tm_isdst
!=tm
->tm_isdst
)
13 t
-= opp
- new.__tm_gmtoff
;
16 if ((time_t)t
!= t
) goto error
;
18 __secs_to_zone(t
, 0, &new.tm_isdst
, &new.__tm_gmtoff
, &opp
, &new.__tm_zone
);
20 if (__secs_to_tm(t
+ new.__tm_gmtoff
, &new) < 0) goto error
;