downloader: Simplify HTTPDate's timezone-correction code

This commit is contained in:
Sam Edwards 2019-11-27 11:45:08 -07:00
parent ae33d62978
commit 23f779e799

View File

@ -209,33 +209,13 @@ HTTPDate(const string &format) {
return;
}
// Everything checks out; convert the date. rdb made this an if 0 check as
// timegm is a nonstandard extension so it fails in some situations even if
// the compiler defines __GNUC__
#if 0
_time = timegm(&t);
#else // __GNUC__
// Without the GNU extension timegm, we have to use mktime() instead.
// Everything checks out; convert the date.
_time = mktime(&t);
if (_time != (time_t)-1) {
// Unfortunately, mktime() assumes local time; convert this back to GMT.
#if defined(IS_FREEBSD)
time_t now = time(nullptr);
struct tm *tp = localtime(&now);
_time -= tp->tm_gmtoff;
#elif defined(_WIN32)
long int timezone;
_get_timezone(&timezone);
_time -= timezone;
#else
extern long int timezone;
_time -= timezone;
#endif
_time += (mktime(localtime(&_time)) - mktime(gmtime(&_time)));
}
#endif // __GNUC__
}
/**