| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
#if 0#include <time.h>/* This is a translation from ALGOL in Collected Algorithms of CACM. *//* Copied from Algorithm 199, Author: Robert G. Tantzen */void __tm_conv(tmbuf, timep, offset)struct tm *tmbuf;time_t *timep;time_t offset;{	static int moffset[] =		{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };	long s;	long j, d, m, y;	offset += *timep;	tmbuf->tm_isdst = 0;		/* Someone else can set this */	j = offset / 86400L + 719469;	s = offset % 86400L;	if (s < 0) {		s += 86400L;		j--;	}	tmbuf->tm_sec = s % 60;	tmbuf->tm_min = (s / 60) % 60;	tmbuf->tm_hour = s / 3600;	tmbuf->tm_wday = (j + 2) % 7;	/*	 * Julian date converter. Takes a julian date (the number of days since	 * some distant epoch or other), and fills tmbuf.	 */	y = (4L * j - 1L) / 146097L;	j = 4L * j - 1L - 146097L * y;	d = j / 4L;	j = (4L * d + 3L) / 1461L;	d = 4L * d + 3L - 1461L * j;	d = (d + 4L) / 4L;	m = (5L * d - 3L) / 153L;	d = 5L * d - 3 - 153L * m;	d = (d + 5L) / 5L;	y = 100L * y + j;	if (m < 10)		m += 2;	else {		m -= 10;		++y;	}	tmbuf->tm_year = y - 1900;	tmbuf->tm_mon = m;	tmbuf->tm_mday = d;	tmbuf->tm_yday = d + moffset[m];	if (m > 1 && ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)))		tmbuf->tm_yday++;}#else/* This is adapted from glibc *//* Copyright (C) 1991, 1993 Free Software Foundation, Inc */#define SECS_PER_HOUR 3600L#define SECS_PER_DAY  86400L#include <time.h>static const unsigned short int __mon_lengths[2][12] = {	/* Normal years.  */	{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},	/* Leap years.  */	{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};/* This global is exported to the wide world in keeping * with the interface in time.h */long int timezone;void __tm_conv(tmbuf, t, offset)struct tm *tmbuf;time_t *t;time_t offset;{	long days, rem;	register int y;	register const unsigned short int *ip;	timezone = -offset;	days = *t / SECS_PER_DAY;	rem = *t % SECS_PER_DAY;	rem += offset;	while (rem < 0) {		rem += SECS_PER_DAY;		--days;	}	while (rem >= SECS_PER_DAY) {		rem -= SECS_PER_DAY;		++days;	}	tmbuf->tm_hour = rem / SECS_PER_HOUR;	rem %= SECS_PER_HOUR;	tmbuf->tm_min = rem / 60;	tmbuf->tm_sec = rem % 60;	/* January 1, 1970 was a Thursday.  */	tmbuf->tm_wday = (4 + days) % 7;	if (tmbuf->tm_wday < 0)		tmbuf->tm_wday += 7;	y = 1970;	while (days >= (rem = __isleap(y) ? 366 : 365)) {		++y;		days -= rem;	}	while (days < 0) {		--y;		days += __isleap(y) ? 366 : 365;	}	tmbuf->tm_year = y - 1900;	tmbuf->tm_yday = days;	ip = __mon_lengths[__isleap(y)];	for (y = 0; days >= ip[y]; ++y)		days -= ip[y];	tmbuf->tm_mon = y;	tmbuf->tm_mday = days + 1;	tmbuf->tm_isdst = -1;}#endif
 |