[project @ 2001-01-12 15:48:56 by simonmar]
[ghc-hetmet.git] / ghc / lib / std / cbits / timezone.c
1 /* 
2  * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
3  *
4  * $Id: timezone.c,v 1.6 1999/12/08 15:47:08 simonmar Exp $
5  *
6  * Timezone Runtime Support
7  */
8
9 #include "Rts.h"
10 #include "stgio.h"
11 #include "timezone.h"
12
13 StgInt get_tm_sec   ( StgAddr x ) { return ((struct tm*)x)->tm_sec;   }
14 StgInt get_tm_min   ( StgAddr x ) { return ((struct tm*)x)->tm_min;   }
15 StgInt get_tm_hour  ( StgAddr x ) { return ((struct tm*)x)->tm_hour;  }
16 StgInt get_tm_mday  ( StgAddr x ) { return ((struct tm*)x)->tm_mday;  }
17 StgInt get_tm_mon   ( StgAddr x ) { return ((struct tm*)x)->tm_mon;   }
18 StgInt get_tm_year  ( StgAddr x ) { return ((struct tm*)x)->tm_year;  }
19 StgInt get_tm_wday  ( StgAddr x ) { return ((struct tm*)x)->tm_wday;  }
20 StgInt get_tm_yday  ( StgAddr x ) { return ((struct tm*)x)->tm_yday;  }
21 StgInt get_tm_isdst ( StgAddr x ) { return ((struct tm*)x)->tm_isdst; }
22 StgAddr prim_ZONE    ( StgAddr x ) { return ZONE(x);   }
23 StgInt prim_GMTOFF  ( StgAddr x ) { return GMTOFF(x); }
24
25 void 
26 prim_SETZONE ( StgAddr x, StgAddr y )
27 {
28   SETZONE(x,y);
29 }
30
31 StgInt sizeof_word      ( void ) { return (sizeof(unsigned int)); }
32 StgInt sizeof_struct_tm ( void ) { return (sizeof(struct tm)); }
33 StgInt sizeof_time_t    ( void ) { return (sizeof(time_t) / sizeof(int)); }
34
35 char*
36 get_ZONE (StgAddr x)
37 {
38 #ifdef cygwin32_TARGET_OS
39   /* 
40    * tzname[] isn't properly initialised under cygwin B20.1 
41    * unless tzset() is called, so better do it here.
42    */
43   tzset();
44
45 #endif
46   return (ZONE(x));
47 }