diff --git a/configure.ac b/configure.ac index 90845c985db0d38b1af0caf51fb6b59261d934b8..61154f5e530f109cf1e5275b597849b1a56f3a3f 100644 --- a/configure.ac +++ b/configure.ac @@ -17,6 +17,7 @@ AC_CHECK_HEADERS([time.h]) AC_CHECK_FUNCS([gmtime_r localtime_r]) AC_CHECK_FUNCS([clock_gettime]) +AC_CHECK_FUNCS([tzset]) AC_STRUCT_TM AC_STRUCT_TIMEZONE diff --git a/lib/Data/Time/Clock/Internal/CTimespec.hsc b/lib/Data/Time/Clock/Internal/CTimespec.hsc index 9b162e6c132a23a38bb9e3b1f6494b2162c9c46f..d699cc790246e11e5c124cd6e1c9f224acc1434b 100644 --- a/lib/Data/Time/Clock/Internal/CTimespec.hsc +++ b/lib/Data/Time/Clock/Internal/CTimespec.hsc @@ -9,10 +9,11 @@ module Data.Time.Clock.Internal.CTimespec where import Foreign import Foreign.C import System.IO.Unsafe +import System.Posix.Types #include <time.h> -type ClockID = #{type clockid_t} +type ClockID = CClockId data CTimespec = MkCTimespec CTime CLong @@ -51,7 +52,7 @@ clockGetTime clockid = alloca (\ptspec -> do peek ptspec ) -foreign import capi unsafe "time.h value CLOCK_REALTIME" clock_REALTIME :: ClockID +foreign import capi unsafe "HsTime.h value HS_CLOCK_REALTIME" clock_REALTIME :: ClockID clock_TAI :: Maybe ClockID clock_TAI = diff --git a/lib/cbits/HsTime.c b/lib/cbits/HsTime.c index ae863b833007b5009e7c2234b5322f46093d2be7..6bee24bfa47a512f68157bf137ccc78bcbff02f8 100644 --- a/lib/cbits/HsTime.c +++ b/lib/cbits/HsTime.c @@ -10,7 +10,7 @@ long int get_current_timezone_seconds (time_t t,int* pdst,char const* * pname) // as Microsoft considers the POSIX named `tzset()` function // deprecated (see http://msdn.microsoft.com/en-us/library/ms235384.aspx) _tzset(); -#else +#elif defined(HAVE_TZSET) tzset(); #endif diff --git a/lib/include/HsTime.h b/lib/include/HsTime.h index 5296437e34205dcaeb135ab50613072aa5628ff6..43dd4377b9326af0aa975de2d0968b3ceeeea190 100644 --- a/lib/include/HsTime.h +++ b/lib/include/HsTime.h @@ -18,6 +18,8 @@ #include <time.h> #endif +#define HS_CLOCK_REALTIME (uintptr_t)(CLOCK_REALTIME) + long int get_current_timezone_seconds (time_t,int* pdst,char const* * pname); #endif