Bugs 1207, 1301
Only apply the fix for time-zone offsetting on Windows, since Unix is handling mktime differently. (Arguably we should also apply a conversion for Unix systems, but the previous logic worked)
This commit is contained in:
parent
df57a23512
commit
c6330b64f6
@ -1137,12 +1137,21 @@ char *tzstring (const char* string)
|
|||||||
|
|
||||||
time_t sgGMTime()
|
time_t sgGMTime()
|
||||||
{
|
{
|
||||||
struct tm now;
|
// this was created to fix:
|
||||||
|
// https://code.google.com/p/flightgear-bugs/issues/detail?id=1207
|
||||||
|
// however applying the code on Unix causes bug:
|
||||||
|
// https://code.google.com/p/flightgear-bugs/issues/detail?id=1301
|
||||||
|
// One solution would be to deinfe our own 'timegm' as suggested here:
|
||||||
|
// http://linux.die.net/man/3/timegm
|
||||||
|
// but for the moment we'll assume time(0) on Unix is UTC, and hence we
|
||||||
|
// return it directly.
|
||||||
|
|
||||||
time_t now_sec = time(0);
|
time_t now_sec = time(0);
|
||||||
#if defined(SG_WINDOWS)
|
#if defined(SG_WINDOWS)
|
||||||
|
struct tm now;
|
||||||
now = *gmtime(&now_sec);
|
now = *gmtime(&now_sec);
|
||||||
#else
|
|
||||||
gmtime_r(&now_sec, &now);
|
|
||||||
#endif
|
|
||||||
return mktime(&now);
|
return mktime(&now);
|
||||||
}
|
#else
|
||||||
|
return now_sec;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user