2 % (c) The GRASP/AQUA Project, Glasgow University, 1995
4 \subsection[toLocalTime.lc]{toCalendarTime Runtime Support}
13 toLocalTime(I_ size, StgByteArray d, StgByteArray res)
15 struct tm *tm,*tmp=(struct tm *)res;
25 t = - (time_t) ((StgInt *)d)[0];
30 t = (time_t) ((StgInt *)d)[0];
41 localtime() may return a ptr to statically allocated storage,
42 so to make toLocalTime reentrant, we manually copy
43 the structure into the (struct tm *) passed in.
45 tmp->tm_sec = tm->tm_sec;
46 tmp->tm_min = tm->tm_min;
47 tmp->tm_hour = tm->tm_hour;
48 tmp->tm_mday = tm->tm_mday;
49 tmp->tm_mon = tm->tm_mon;
50 tmp->tm_year = tm->tm_year;
51 tmp->tm_wday = tm->tm_wday;
52 tmp->tm_yday = tm->tm_yday;
53 tmp->tm_isdst = tm->tm_isdst;
55 If you don't have tm_zone in (struct tm), but
56 you get at it via the shared tmzone[], you'll
57 lose. Same goes for the tm_gmtoff field.
61 strcpy(tmp->tm_zone,tm->tm_zone);
62 tmp->tm_gmtoff = tm->tm_gmtoff;