X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=System%2FTime.hsc;h=4db1d61efb6cf0ea20239069437759e517943020;hb=9fa9bc17072a58c0bae2cce4764d38677e96ac29;hp=e5cf6b0fe380d4f627b083f505a6433347ec76f2;hpb=260e7f2ed9a43c6ecf5a556d77817f39ed2893ab;p=ghc-base.git diff --git a/System/Time.hsc b/System/Time.hsc index e5cf6b0..4db1d61 100644 --- a/System/Time.hsc +++ b/System/Time.hsc @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------- --- +-- | -- Module : System.Time -- Copyright : (c) The University of Glasgow 2001 -- License : BSD-style (see the file libraries/core/LICENSE) @@ -8,7 +8,7 @@ -- Stability : provisional -- Portability : portable -- --- $Id: Time.hsc,v 1.6 2001/12/21 15:07:26 simonmar Exp $ +-- $Id: Time.hsc,v 1.12 2002/04/24 16:31:45 simonmar Exp $ -- -- The standard Time library. -- @@ -98,7 +98,7 @@ module System.Time ) where -#include "HsCore.h" +#include "HsBase.h" import Prelude @@ -317,12 +317,11 @@ gmtoff x = (#peek struct tm,tm_gmtoff) x # define tzname _tzname # endif # ifndef mingw32_TARGET_OS -foreign label tzname :: Ptr (Ptr CChar) +foreign import ccall unsafe "&tzname" tzname :: Ptr (Ptr CChar) +foreign import ccall unsafe "timezone" timezone :: Ptr CLong # else -foreign import "ghcTimezone" unsafe timezone :: Ptr CLong -foreign import "ghcTzname" unsafe tzname :: Ptr (Ptr CChar) -# def inline long *ghcTimezone(void) { return &_timezone; } -# def inline char **ghcTzname(void) { return _tzname; } +foreign import ccall unsafe "__hscore_timezone" timezone :: Ptr CLong +foreign import ccall unsafe "__hscore_tzname" tzname :: Ptr (Ptr CChar) # endif zone x = do dst <- (#peek struct tm,tm_isdst) x @@ -333,13 +332,13 @@ zone x = do # endif /* ! HAVE_TZNAME */ -- Get the offset in secs from UTC, if (struct tm) doesn't supply it. */ -#if defined(mingw32_TARGET_OS) || defined(cygwin32_TARGET_OS) +#if defined(mingw32_TARGET_OS) #define timezone _timezone #endif # if HAVE_ALTZONE -foreign label altzone :: Ptr CTime -foreign label timezone :: Ptr CTime +foreign import ccall "&altzone" :: Ptr CTime +foreign import ccall "&timezone" :: Ptr CTime gmtoff x = do dst <- (#peek struct tm,tm_isdst) x tz <- if dst then peek altzone else peek timezone @@ -619,28 +618,28 @@ formatTimeDiff l fmt td@(TimeDiff year month day hour min sec _) type CTm = () -- struct tm #if HAVE_LOCALTIME_R -foreign import unsafe localtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) +foreign import ccall unsafe localtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) #else -foreign import unsafe localtime :: Ptr CTime -> IO (Ptr CTm) +foreign import ccall unsafe localtime :: Ptr CTime -> IO (Ptr CTm) #endif #if HAVE_GMTIME_R -foreign import unsafe gmtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) +foreign import ccall unsafe gmtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) #else -foreign import unsafe gmtime :: Ptr CTime -> IO (Ptr CTm) +foreign import ccall unsafe gmtime :: Ptr CTime -> IO (Ptr CTm) #endif -foreign import unsafe mktime :: Ptr CTm -> IO CTime -foreign import unsafe time :: Ptr CTime -> IO CTime +foreign import ccall unsafe mktime :: Ptr CTm -> IO CTime +foreign import ccall unsafe time :: Ptr CTime -> IO CTime #if HAVE_GETTIMEOFDAY type CTimeVal = () -foreign import unsafe gettimeofday :: Ptr CTimeVal -> Ptr () -> IO CInt +foreign import ccall unsafe gettimeofday :: Ptr CTimeVal -> Ptr () -> IO CInt #endif #if HAVE_FTIME type CTimeB = () #ifndef mingw32_TARGET_OS -foreign import unsafe ftime :: Ptr CTimeB -> IO CInt +foreign import ccall unsafe ftime :: Ptr CTimeB -> IO CInt #else -foreign import unsafe ftime :: Ptr CTimeB -> IO () +foreign import ccall unsafe ftime :: Ptr CTimeB -> IO () #endif #endif