diff options
Diffstat (limited to 'compat/msvc/sys/time.h')
| -rw-r--r-- | compat/msvc/sys/time.h | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/compat/msvc/sys/time.h b/compat/msvc/sys/time.h new file mode 100644 index 0000000..c4964d6 --- /dev/null +++ b/compat/msvc/sys/time.h @@ -0,0 +1,62 @@ +#pragma once + +//http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/430449b3-f6dd-4e18-84de-eebd26a8d668 +#include < time.h > +#include <windows.h> //I've ommited this line. +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) +  #define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64 +#else +  #define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL +#endif + +struct timespec { + +time_t tv_sec; /* Seconds since 00:00:00 GMT, */ + +/* 1 January 1970 */ + +long tv_nsec; /* Additional nanoseconds since */ + +/* tv_sec */ + +}; + +struct timezone +{ +  int  tz_minuteswest; /* minutes W of Greenwich */ +  int  tz_dsttime;     /* type of dst correction */ +}; + +static __inline int gettimeofday(struct timeval *tv, struct timezone *tz) +{ +  FILETIME ft; +  unsigned __int64 tmpres = 0; +  static int tzflag; + +  if (NULL != tv) +  { +    GetSystemTimeAsFileTime(&ft); + +    tmpres |= ft.dwHighDateTime; +    tmpres <<= 32; +    tmpres |= ft.dwLowDateTime; + +    /*converting file time to unix epoch*/ +    tmpres -= DELTA_EPOCH_IN_MICROSECS; +    tv->tv_sec = (long)(tmpres / 1000000UL); +    tv->tv_usec = (long)(tmpres % 1000000UL); +  } + +  if (NULL != tz) +  { +    if (!tzflag) +    { +      _tzset(); +      tzflag++; +    } +    tz->tz_minuteswest = _timezone / 60; +    tz->tz_dsttime = _daylight; +  } + +  return 0; +}
\ No newline at end of file | 
