diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2014-09-02 16:52:09 +0200 |
---|---|---|
committer | Johannes Schindelin <johannes.schindelin@gmx.de> | 2014-09-02 16:52:09 +0200 |
commit | 70783a4d60086f1a706bbbd8dedbc3b31a4a19a0 (patch) | |
tree | 70764988d22bc5eb501f04ed4d1188b2e16f1b8b /compat/msvc/sys/time.h | |
parent | 50dbe1df75d983cf7d69874383445fdff18de5a3 (diff) | |
parent | 54b2400dd761f484c9a5ac4cb63ac63fa1f6b503 (diff) | |
download | libvncserver-70783a4d60086f1a706bbbd8dedbc3b31a4a19a0.zip libvncserver-70783a4d60086f1a706bbbd8dedbc3b31a4a19a0.tar.gz |
Merge branch 'msvc'
This topic branch provides compatibility for Windows, without the
MINGW32 dependency.
It is based on https://github.com/LibVNC/libvncserver/pull/22.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 |