projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.18.2: Win32 exceptions
[sbcl.git]
/
src
/
runtime
/
time.c
diff --git
a/src/runtime/time.c
b/src/runtime/time.c
index
59e9d1e
..
4b4cf9c
100644
(file)
--- a/
src/runtime/time.c
+++ b/
src/runtime/time.c
@@
-23,14
+23,23
@@
void get_timezone(time_t when, int *secwest, boolean *dst)
struct tm ltm, gtm;
int sw;
struct tm ltm, gtm;
int sw;
+#ifdef LISP_FEATURE_WIN32
+ /* No _r versions on Windows, but the API documentation also
+ * doesn't warn them about being non-reentrant... So here's
+ * hoping they actually are -- once Windows grows threads
+ * this better be checked, though. */
ltm = *localtime(&when);
gtm = *gmtime(&when);
ltm = *localtime(&when);
gtm = *gmtime(&when);
+#else
+ ltm = *localtime_r(&when, <m);
+ gtm = *gmtime_r(&when, >m);
+#endif
sw = (((gtm.tm_hour*60)+gtm.tm_min)*60+gtm.tm_sec) - (((ltm.tm_hour*60)+ltm.tm_min)*60+ltm.tm_sec);
if ((gtm.tm_wday + 1) % 7 == ltm.tm_wday)
sw = (((gtm.tm_hour*60)+gtm.tm_min)*60+gtm.tm_sec) - (((ltm.tm_hour*60)+ltm.tm_min)*60+ltm.tm_sec);
if ((gtm.tm_wday + 1) % 7 == ltm.tm_wday)
- sw -= 24*3600;
+ sw -= 24*3600;
else if (gtm.tm_wday == (ltm.tm_wday + 1) % 7)
else if (gtm.tm_wday == (ltm.tm_wday + 1) % 7)
- sw += 24*3600;
+ sw += 24*3600;
*secwest = sw;
*dst = ltm.tm_isdst;
}
*secwest = sw;
*dst = ltm.tm_isdst;
}