{
struct tm tm;
const char *loc;
- loc = setlocale(LC_TIME, "C");
+ time_t tz;
+ loc = setlocale(LC_ALL, "C");
p_clear(&tm, 1);
if (strptime(s, "%a, %d %b %Y %H:%M:%S %z", &tm))
goto ok;
p_clear(&tm, 1);
if (strptime(s, "%a, %d %b %Y %H:%M %z", &tm))
goto ok;
- setlocale(LC_TIME, loc);
+ setlocale(LC_ALL, "");
return 0;
ok:
- setlocale(LC_TIME, loc);
- return mutt_mktime(&tm, 1);
+ setlocale(LC_ALL, "");
+ tz = tm.tm_gmtoff;
+ return timegm(&tm) - tz;
}
string_list_t **mutt_parse_rfc822_line(ENVELOPE *e, HEADER *hdr, char *line, char *p,
return false;
ok:
- if (tp)
- *tp = mutt_mktime(&tm, 1);
+ if (tp) {
+ *tp = tm.tm_gmtoff;
+ *tp = timegm(&tm) - *tp;
+ }
return true;
}