| Commit | Line | Data |
|---|---|---|
| eeab7066 RT |
1 | /* |
| 2 | ||
| 3 | This code was written as part of the CMU Common Lisp project at | |
| 4 | Carnegie Mellon University, and has been placed in the public domain. | |
| 5 | ||
| 6 | */ | |
| 0bf235de | 7 | |
| 8 | /* Time support routines that are easier to do in C then in lisp. */ | |
| 9 | ||
| 10 | #include <stdio.h> | |
| 11 | #include <time.h> | |
| 12 | #include "lisp.h" | |
| 13 | ||
| 9a8c1c2f | 14 | void |
| 15 | get_timezone(time_t when, int *minwest, boolean * dst) | |
| 0bf235de | 16 | { |
| 17 | struct tm ltm, gtm; | |
| f610280a | 18 | int mw; |
| 0bf235de | 19 | |
| 20 | ltm = *localtime(&when); | |
| 21 | gtm = *gmtime(&when); | |
| 22 | ||
| 9a8c1c2f | 23 | mw = ((gtm.tm_hour * 60) + gtm.tm_min) - ((ltm.tm_hour * 60) + ltm.tm_min); |
| f610280a | 24 | if ((gtm.tm_wday + 1) % 7 == ltm.tm_wday) |
| 9a8c1c2f | 25 | mw -= 24 * 60; |
| f610280a | 26 | else if (gtm.tm_wday == (ltm.tm_wday + 1) % 7) |
| 9a8c1c2f | 27 | mw += 24 * 60; |
| f610280a | 28 | *minwest = mw; |
| 0bf235de | 29 | *dst = ltm.tm_isdst; |
| 30 | } |