PHPAPI int gettimeofday(struct timeval *time_Info, struct timezone *timezone_Info) {/*{{{*/ /* Get the time, if they want it */ if (time_Info != NULL) { getfilesystemtime(time_Info); } /* Get the timezone, if they want it */ if (timezone_Info != NULL) { _tzset(); timezone_Info->tz_minuteswest = _timezone; timezone_Info->tz_dsttime = _daylight; } /* And return */ return 0; }/*}}}*/
PHPAPI int gettimeofday(struct timeval *time_Info, struct timezone *timezone_Info) { __int64 timer; LARGE_INTEGER li; BOOL b; double dt; TSRMLS_FETCH(); /* Get the time, if they want it */ if (time_Info != NULL) { if (PW32G(starttime).tv_sec == 0) { b = QueryPerformanceFrequency(&li); if (!b) { PW32G(starttime).tv_sec = -1; } else { PW32G(freq) = li.QuadPart; b = QueryPerformanceCounter(&li); if (!b) { PW32G(starttime).tv_sec = -1; } else { getfilesystemtime(&PW32G(starttime)); timer = li.QuadPart; dt = (double)timer/PW32G(freq); PW32G(starttime).tv_usec -= (int)((dt-(int)dt)*1000000); if (PW32G(starttime).tv_usec < 0) { PW32G(starttime).tv_usec += 1000000; --PW32G(starttime).tv_sec; } PW32G(starttime).tv_sec -= (int)dt; } } } if (PW32G(starttime).tv_sec > 0) { b = QueryPerformanceCounter(&li); if (!b) { PW32G(starttime).tv_sec = -1; } else { timer = li.QuadPart; if (timer < PW32G(lasttime)) { getfilesystemtime(time_Info); dt = (double)timer/PW32G(freq); PW32G(starttime) = *time_Info; PW32G(starttime).tv_usec -= (int)((dt-(int)dt)*1000000); if (PW32G(starttime).tv_usec < 0) { PW32G(starttime).tv_usec += 1000000; --PW32G(starttime).tv_sec; } PW32G(starttime).tv_sec -= (int)dt; } else { PW32G(lasttime) = timer; dt = (double)timer/PW32G(freq); time_Info->tv_sec = PW32G(starttime).tv_sec + (int)dt; time_Info->tv_usec = PW32G(starttime).tv_usec + (int)((dt-(int)dt)*1000000); if (time_Info->tv_usec > 1000000) { time_Info->tv_usec -= 1000000; ++time_Info->tv_sec; } } } } if (PW32G(starttime).tv_sec < 0) { getfilesystemtime(time_Info); } } /* Get the timezone, if they want it */ if (timezone_Info != NULL) { _tzset(); timezone_Info->tz_minuteswest = _timezone; timezone_Info->tz_dsttime = _daylight; } /* And return */ return 0; }