/* * Coerces the return value from gettimeofday() to always fall within * the time range starting at BASEDATE and ending at BASEDATE+TIMESPAN * * Todo: pick up BASEDATE and TIMESPAN from env variables */ #include #include #ifndef BASEDATE #define BASEDATE 820472400 /* 1 Jan 1996 00:00:00 */ #define TIMESPAN ONELEAPYEAR /* really only want until 29 Dec 1996 (851835600), but this will do */ #endif #define ONEDAY (24*60*60) #define ONEMONTH (ONEDAY*31) #define ONEYEAR (ONEDAY*365) #define ONELEAPYEAR (ONEDAY*366) #ifndef TIMESPAN #define TIMESPAN ONEMONTH #endif int gettimeofday(struct timeval *tp, struct timezone *tzp) { int ret; ret = __syscall(SYS_gettimeofday, 2, tp, tzp); if (ret == 0 && tp != NULL) { tp->tv_sec = ((tp->tv_sec - BASEDATE) % TIMESPAN) + BASEDATE; } return ret; }