From 0fe562b5b0feec4ff59449a166c8364f9c8cb16e Mon Sep 17 00:00:00 2001 From: Izaak Beekman Date: Fri, 18 Jan 2019 11:39:34 -0500 Subject: [PATCH] Attempt fix for missing windows includes --- base/modules/cutil.c | 7 ++- base/modules/fakempi.c | 5 ++ base/modules/gettimeofday.c | 101 ++++++++++++++++-------------------- 3 files changed, 56 insertions(+), 57 deletions(-) diff --git a/base/modules/cutil.c b/base/modules/cutil.c index 13b7e1e94..094911931 100644 --- a/base/modules/cutil.c +++ b/base/modules/cutil.c @@ -1,4 +1,9 @@ +#ifdef WIN32 +#include +#include +#else #include +#endif #include #include #include "psb_internals.h" @@ -15,7 +20,7 @@ #ifdef UpperUnderscore #define psi_c_diffadd PSI_C_DIFFADD_ #endif -#ifdef UpperDoubleUnderscore +#ifdef UpperDoubleUnderscore #define psi_c_diffadd PSI_C_DIFFADD__ #endif #ifdef UpperCase diff --git a/base/modules/fakempi.c b/base/modules/fakempi.c index 9bf817334..e9b54f634 100644 --- a/base/modules/fakempi.c +++ b/base/modules/fakempi.c @@ -1,4 +1,9 @@ +#ifdef WIN32 +#include +#include +#else #include +#endif #include #include #include "psb_internals.h" diff --git a/base/modules/gettimeofday.c b/base/modules/gettimeofday.c index 46d16519d..be0422717 100644 --- a/base/modules/gettimeofday.c +++ b/base/modules/gettimeofday.c @@ -1,59 +1,48 @@ -/* - * gettimeofday.c - * Win32 gettimeofday() replacement - * - * src/port/gettimeofday.c - * - * Copyright (c) 2003 SRA, Inc. - * Copyright (c) 2003 SKC, Inc. - * - * Permission to use, copy, modify, and distribute this software and - * its documentation for any purpose, without fee, and without a - * written agreement is hereby granted, provided that the above - * copyright notice and this paragraph and the following two - * paragraphs appear in all copies. - * - * IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, - * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING - * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS - * DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS - * IS" BASIS, AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, - * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - */ - -#include "c.h" - -#include - - -/* FILETIME of Jan 1 1970 00:00:00. */ -static const unsigned __int64 epoch = ((unsigned __int64) 116444736000000000ULL); - -/* - * timezone information is stored outside the kernel so tzp isn't used anymore. - * - * Note: this function is not for Win32 high precision timing purpose. See - * elapsed_time(). - */ -int -gettimeofday(struct timeval * tp, struct timezone * tzp) +#include +#include +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) + #define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 +#else + #define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL +#endif + +struct timezone { - FILETIME file_time; - SYSTEMTIME system_time; - ULARGE_INTEGER ularge; - - GetSystemTime(&system_time); - SystemTimeToFileTime(&system_time, &file_time); - ularge.LowPart = file_time.dwLowDateTime; - ularge.HighPart = file_time.dwHighDateTime; + int tz_minuteswest; /* minutes W of Greenwich */ + int tz_dsttime; /* type of dst correction */ +}; - tp->tv_sec = (long) ((ularge.QuadPart - epoch) / 10000000L); - tp->tv_usec = (long) (system_time.wMilliseconds * 1000); - - return 0; +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; + tmpres /= 10; /*convert into microseconds*/ + 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; }