diff options
Diffstat (limited to 'config/now.c')
-rw-r--r-- | config/now.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/config/now.c b/config/now.c index 784b5cea..28beb7be 100644 --- a/config/now.c +++ b/config/now.c @@ -39,7 +39,9 @@ #include <sys/timeb.h> #elif defined(XP_UNIX) || defined(XP_OS2_EMX) || defined(XP_BEOS) #include <sys/time.h> -#elif defined(WIN32) || defined(XP_OS2_VACPP) +#elif defined(WIN32) +#include <windows.h> +#elif defined(XP_OS2_VACPP) #include <sys/timeb.h> #else #error "Architecture not supported" @@ -86,12 +88,20 @@ int main(int argc, char **argv) #elif defined(WIN32) __int64 now; - struct timeb b; - ftime(&b); - now = b.time; - now *= 1000000; - now += (1000 * b.millitm); + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + CopyMemory(&now, &ft, sizeof(now)); + /* + * 116444736000000000 is the number of 100-nanosecond intervals + * between Jan. 1, 1601 and Jan. 1, 1970. + */ +#ifdef __GNUC__ + now = (now - 116444736000000000LL) / 10LL; + fprintf(stdout, "%lld", now); +#else + now = (now - 116444736000000000i64) / 10i64; fprintf(stdout, "%I64d", now); +#endif #elif defined(XP_OS2_VACPP) /* no long long or i64 so we use a string */ |