Revision: | 2.2 |
Committed: | Wed Jun 2 15:58:30 2010 UTC (14 years, 11 months ago) by greg |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | rad4R2P2, rad5R0, rad4R2, rad4R1, rad4R2P1 |
Changes since 2.1: | +6 -4 lines |
Log Message: | Fixes to MINGW build |
# | Content |
---|---|
1 | /* |
2 | * timegm.c |
3 | * |
4 | * Replacement for missing GNU library function. |
5 | * |
6 | */ |
7 | |
8 | |
9 | #include <time.h> |
10 | #include <stdlib.h> |
11 | |
12 | extern time_t timegm(struct tm *tm); |
13 | |
14 | #ifdef _WIN32 |
15 | static char * |
16 | setGMT() |
17 | { |
18 | static time_t prevTZ; |
19 | prevTZ = _timezone; |
20 | _timezone = 0; |
21 | return (char *)&prevTZ; |
22 | } |
23 | static void |
24 | resetTZ(char *cp) |
25 | { |
26 | _timezone = *(time_t *)cp; |
27 | } |
28 | #else |
29 | static char * |
30 | setGMT() |
31 | { |
32 | char *tz = getenv("TZ"); |
33 | setenv("TZ", "", 1); |
34 | tzset(); |
35 | return tz; |
36 | } |
37 | static void |
38 | resetTZ(char *tz) |
39 | { |
40 | if (tz) |
41 | setenv("TZ", tz, 1); |
42 | else |
43 | unsetenv("TZ"); |
44 | tzset(); |
45 | } |
46 | #endif |
47 | |
48 | /* Convert GMT to UTC seconds from the epoch */ |
49 | time_t |
50 | timegm(struct tm *tm) |
51 | { |
52 | time_t ret; |
53 | char *tz; |
54 | |
55 | tz = setGMT(); |
56 | ret = mktime(tm); |
57 | resetTZ(tz); |
58 | return(ret); |
59 | } |