2 * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
4 * $Id: toUTCTime.c,v 1.1 1998/04/10 10:54:59 simonm Exp $
6 * toUTCTime Runtime Support
13 #ifdef cygwin32_TARGET_OS
19 toUTCTime(I_ size, StgByteArray d, StgByteArray res)
22 struct tm *tm,*tmp=(struct tm *)res;
31 t = - (time_t) ((StgInt *)d)[0];
36 t = (time_t) ((StgInt *)d)[0];
47 gmtime() may return a ptr to statically allocated storage,
48 so to make toUTCTime reentrant, we manually copy
49 the structure into the (struct tm *) passed in.
51 tmp->tm_sec = tm->tm_sec;
52 tmp->tm_min = tm->tm_min;
53 tmp->tm_hour = tm->tm_hour;
54 tmp->tm_mday = tm->tm_mday;
55 tmp->tm_mon = tm->tm_mon;
56 tmp->tm_year = tm->tm_year;
57 tmp->tm_wday = tm->tm_wday;
58 tmp->tm_yday = tm->tm_yday;
59 tmp->tm_isdst = tm->tm_isdst;
61 If you don't have tm_zone in (struct tm), but
62 you get at it via the shared tmzone[], you'll
63 lose. Same goes for the tm_gmtoff field.
67 strcpy(tmp->tm_zone,tm->tm_zone);
68 tmp->tm_gmtoff = tm->tm_gmtoff;