Timo:
Sorry for not writing faster. The patch you supplied (below) applied
to 1.0-test80 and solves the weird date behavior. Thank you for your
fast and efficient service!
I'm already planning out my upgrade from UW to Dovecot. So far 1.0-test80
works fine for me, but once the patch gets applied, I'll probably grab
one of the more recent versions.
Thanks again.
Timo Sirainen
On Tue, 2005-08-23 at 11:50 -0500, Jon Roma wrote:
Has anyone else encountered weird date behavior with mbox-style folders?
Looks like timezone handling was completely broken in mboxes. I think most people haven't noticed it because most software nowadays don't seem to write timezones to the From-line.
This patch should fix it?
Index: src/lib-storage/index/mbox/mbox-from.c =================================================================== RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/mbox/mbox-from.c,v retrieving revision 1.6 diff -u -r1.6 mbox-from.c --- src/lib-storage/index/mbox/mbox-from.c 19 Aug 2005 15:49:49 -0000 1.6 +++ src/lib-storage/index/mbox/mbox-from.c 28 Aug 2005 18:52:29 -0000 @@ -145,8 +145,8 @@ i_isdigit(msg[3]) && i_isdigit(msg[4]) && msg[5] == ' ') { /* numeric timezone, use it */ seen_timezone = TRUE; - timezone = (msg[1]-'0') * 1000 + (msg[2]-'0') * 100 + - (msg[3]-'0') * 10 +(msg[4]-'0'); + timezone = (msg[1]-'0') * 10*60*60 + (msg[2]-'0') * 60*60 + + (msg[3]-'0') * 10 + (msg[4]-'0'); if (msg[0] == '-') timezone = -timezone; msg += 6; } @@ -166,8 +166,8 @@ i_isdigit(msg[2]) && i_isdigit(msg[3]) && i_isdigit(msg[4]) && i_isdigit(msg[5])) { seen_timezone = TRUE; - timezone = (msg[2]-'0') * 1000 + (msg[3]-'0') * 100 + - (msg[4]-'0') * 10 +(msg[5]-'0'); + timezone = (msg[2]-'0') * 10*60*60 + (msg[3]-'0') * 60*60 + + (msg[4]-'0') * 10 + (msg[5]-'0'); if (msg[1] == '-') timezone = -timezone; }
@@ -176,7 +176,7 @@ if (t == (time_t)-1) return -1;
- t -= timezone * 60; + t -= timezone; *time_r = t; } else { /* assume local timezone */