2N/A/* This code placed in the public domain by Mark W. Eichin */ 2N/A/* take a struct tm, return seconds from GMT epoch */ 2N/A/* like mktime, this ignores tm_wday and tm_yday. */ 2N/A/* unlike mktime, this does not set them... it only passes a return value. */ 2N/A * For 32-bit signed time_t centered on 1/1/1970, the range is: 2N/A * time 0x80000000 -> Fri Dec 13 16:45:52 1901 2N/A * time 0x7fffffff -> Mon Jan 18 22:14:07 2038 2N/A * So years 1901 and 2038 are allowable, but we can't encode all 2N/A * checking for such cases. 2N/A /* add in leap day for all previous years */ 2N/A /* add in leap day for this year */ 2N/A if (t % (
24 *
60 *
60))
2N/A u = t / (
24 *
60 *
60);
2N/A (
long) (u /
365), (
long) (u %
365),