From 87416bcd8bd3e8816750150e2dbe90a970400a00 Mon Sep 17 00:00:00 2001
From: Guus Sliepen <guus@tinc-vpn.org>
Date: Mon, 21 Jan 2013 16:12:18 +0100
Subject: [PATCH] Get microsecond time resolution on Windows.

---
 src/dropin.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/dropin.c b/src/dropin.c
index f1a51ac8..ab3fd6bb 100644
--- a/src/dropin.c
+++ b/src/dropin.c
@@ -158,8 +158,18 @@ int vasprintf(char **buf, const char *fmt, va_list ap) {
 
 #ifndef HAVE_GETTIMEOFDAY
 int gettimeofday(struct timeval *tv, void *tz) {
+#ifdef HAVE_MINGW
+	FILETIME ft;
+	GetSystemTimeAsFileTime(&ft);
+	uint64_t lt = (uint64_t)ft.dwLowDateTime | ((uint64_t)ft.dwHighDateTime << 32);
+	lt -= 116444736000000000ULL;
+	tv->tv_sec = lt / 10000000;
+	tv->tv_usec = (lt / 10) % 1000000;
+#else
+#warning No high resolution time source!
 	tv->tv_sec = time(NULL);
 	tv->tv_usec = 0;
+#endif
 	return 0;
 }
 #endif