[evolution-patches] Improvement to replying to messages without Date:
- From: Tor Lillqvist <tml novell com>
- To: patches <evolution-patches gnome org>
- Subject: [evolution-patches] Improvement to replying to messages without Date:
- Date: Tue, 21 Feb 2006 10:36:04 +0200
When replying to a message without Date: header,
camel_mime_message_get_date() returns CAMEL_MESSAGE_DATE_CURRENT (-1).
attribution_format() in em-composer-utils.c does not check for this, and
proceeds to pass this bogus time to gmtime_r(). (Which presumably on
most Unixes is interpreted as one second before the Unix epoch. The
Win32 gmtime() returns NULL when given a -1, though... which is what
made me notice this.)
It would be better to then just return an attribution without date like
"${Sender} wrote:", but as we are in a string freeze, a workaround is to
look for the Received: headers instead.
OK to commit?
--tml
? mail/em-folder-view.c.THREAD-HACK
? mail/em-migrate.c.HUUH
? mail/mail.error
? mail/message-list.c.THREAD-HACK
? mail/message-list.h.THREAD-HACK
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.3806
diff -p -u -2 -r1.3806 ChangeLog
--- mail/ChangeLog 20 Feb 2006 16:01:00 -0000 1.3806
+++ mail/ChangeLog 21 Feb 2006 08:13:48 -0000
@@ -1,2 +1,11 @@
+2006-02-21 Tor Lillqvist <tml novell com>
+
+ * em-composer-utils.c: Use the same Win32 macro for gmtime_r()
+ that guards against gmtime() returning NULL as elsewhere. gmtime()
+ is thread-safe on Win32.
+ (attribution_format): Check if camel returns
+ CAMEL_MESSAGE_DATE_CURRENT for Date:, try the date from Received:
+ then. If that doesn't work either, use current date.
+
2006-02-20 Srinivasa Ragavan <sragavan novell com>
Index: mail/em-composer-utils.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-composer-utils.c,v
retrieving revision 1.51
diff -p -u -2 -r1.51 em-composer-utils.c
--- mail/em-composer-utils.c 8 Feb 2006 11:51:31 -0000 1.51
+++ mail/em-composer-utils.c 21 Feb 2006 08:13:50 -0000
@@ -57,4 +57,14 @@
#include <camel/camel-vee-folder.h>
+#ifdef G_OS_WIN32
+/* Undef the similar macro from pthread.h, it doesn't check if
+ * gmtime() returns NULL.
+ */
+#undef gmtime_r
+
+/* The gmtime() in Microsoft's C library is MT-safe */
+#define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
+#endif
+
static EAccount * guess_account (CamelMimeMessage *message, CamelFolder *folder);
@@ -1717,13 +1727,20 @@ attribution_format (const char *format,
date = camel_mime_message_get_date (message, &tzone);
+
+ if (date == CAMEL_MESSAGE_DATE_CURRENT) {
+ /* The message has no Date: header, look at Received: */
+ date = camel_mime_message_get_date_received (message, &tzone);
+ }
+ if (date == CAMEL_MESSAGE_DATE_CURRENT) {
+ /* That didn't work either, use current time */
+ time (&date);
+ tzone = 0;
+ }
+
/* Convert to UTC */
date += (tzone / 100) * 60 * 60;
date += (tzone % 100) * 60;
-#ifdef HAVE_GMTIME_R
gmtime_r (&date, &tm);
-#else
- memcpy (&tm, gmtime (&date), sizeof (struct tm));
-#endif
start = inptr = format;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]