1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * gmtime - convert the calendar time into broken down time
- */
- /* $Id$ */
- #include <time.h>
- #include <limits.h>
- #include "loc_time.h"
- struct tm *
- gmtime(register const time_t *timer)
- {
- static struct tm br_time;
- register struct tm *timep = &br_time;
- time_t tim = *timer;
- register unsigned long dayclock, dayno;
- int year = EPOCH_YR;
- dayclock = (unsigned long)tim % SECS_DAY;
- dayno = (unsigned long)tim / SECS_DAY;
- timep->tm_sec = dayclock % 60;
- timep->tm_min = (dayclock % 3600) / 60;
- timep->tm_hour = dayclock / 3600;
- timep->tm_wday = (dayno + 4) % 7; /* day 0 was a thursday */
- while (dayno >= YEARSIZE(year)) {
- dayno -= YEARSIZE(year);
- year++;
- }
- timep->tm_year = year - YEAR0;
- timep->tm_yday = dayno;
- timep->tm_mon = 0;
- while (dayno >= _ytab[LEAPYEAR(year)][timep->tm_mon]) {
- dayno -= _ytab[LEAPYEAR(year)][timep->tm_mon];
- timep->tm_mon++;
- }
- timep->tm_mday = dayno + 1;
- timep->tm_isdst = 0;
- return timep;
- }
|