42 lines
		
	
	
		
			953 B
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			953 B
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  * gmtime - convert the calendar time into broken down time
 | |
|  */
 | |
| /* $Header$ */
 | |
| 
 | |
| #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 time = *timer;
 | |
| 	register unsigned long dayclock, dayno;
 | |
| 	int year = EPOCH_YR;
 | |
| 
 | |
| 	dayclock = (unsigned long)time % SECS_DAY;
 | |
| 	dayno = (unsigned long)time / 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;
 | |
| }
 | 
