1d4afb5ceSopenharmony_ci#include <time.h> 2d4afb5ceSopenharmony_ci#include <windows.h> 3d4afb5ceSopenharmony_ci 4d4afb5ceSopenharmony_ci#include "gettimeofday.h" 5d4afb5ceSopenharmony_ci 6d4afb5ceSopenharmony_ci#ifndef LWS_MINGW_SUPPORT 7d4afb5ceSopenharmony_ciint gettimeofday(struct timeval *tv, struct timezone *tz) 8d4afb5ceSopenharmony_ci{ 9d4afb5ceSopenharmony_ci FILETIME ft; 10d4afb5ceSopenharmony_ci unsigned __int64 tmpres = 0; 11d4afb5ceSopenharmony_ci static int tzflag; 12d4afb5ceSopenharmony_ci 13d4afb5ceSopenharmony_ci if (NULL != tv) { 14d4afb5ceSopenharmony_ci GetSystemTimeAsFileTime(&ft); 15d4afb5ceSopenharmony_ci 16d4afb5ceSopenharmony_ci tmpres |= ft.dwHighDateTime; 17d4afb5ceSopenharmony_ci tmpres <<= 32; 18d4afb5ceSopenharmony_ci tmpres |= ft.dwLowDateTime; 19d4afb5ceSopenharmony_ci 20d4afb5ceSopenharmony_ci /*converting file time to unix epoch*/ 21d4afb5ceSopenharmony_ci tmpres /= 10; /*convert into microseconds*/ 22d4afb5ceSopenharmony_ci tmpres -= DELTA_EPOCH_IN_MICROSECS; 23d4afb5ceSopenharmony_ci tv->tv_sec = (long)(tmpres / 1000000UL); 24d4afb5ceSopenharmony_ci tv->tv_usec = (long)(tmpres % 1000000UL); 25d4afb5ceSopenharmony_ci } 26d4afb5ceSopenharmony_ci 27d4afb5ceSopenharmony_ci if (NULL != tz) { 28d4afb5ceSopenharmony_ci if (!tzflag) { 29d4afb5ceSopenharmony_ci _tzset(); 30d4afb5ceSopenharmony_ci tzflag++; 31d4afb5ceSopenharmony_ci } 32d4afb5ceSopenharmony_ci tz->tz_minuteswest = _timezone / 60; 33d4afb5ceSopenharmony_ci tz->tz_dsttime = _daylight; 34d4afb5ceSopenharmony_ci } 35d4afb5ceSopenharmony_ci 36d4afb5ceSopenharmony_ci return 0; 37d4afb5ceSopenharmony_ci} 38d4afb5ceSopenharmony_ci#endif 39