aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog17
-rw-r--r--mail/component-factory.c2
-rw-r--r--mail/mail-format.c101
-rw-r--r--mail/mail-local.c3
4 files changed, 81 insertions, 42 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index b5ae53f23d..b61e1d97d6 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,20 @@
+2001-09-24 <NotZed@Ximian.com>
+
+ * mail-local.c (mls_get_folder): Removed unused variables.
+
+ * component-factory.c (storage_create_folder): Remove unused
+ variable.
+
+ * mail-format.c (write_default_header): Used to write a header
+ that we know about/normally print. Use a static header table to
+ index these.
+ (write_header): removed.
+ (default_header_index): Return the index of the default header.
+ (write_headers): Changed the way it writes headers a bit. Use
+ write_default_header or write_text_header directly. Also try and
+ use the header charset as a fallback if the header can't be
+ decoded using the locale charset.
+
2001-09-23 Jeffrey Stedfast <fejj@ximian.com>
* mail-mt.c (pass_got): Always cache POP and IMAP passwords, even
diff --git a/mail/component-factory.c b/mail/component-factory.c
index 812225841b..87f4fadbc2 100644
--- a/mail/component-factory.c
+++ b/mail/component-factory.c
@@ -856,7 +856,7 @@ storage_create_folder (EvolutionStorage *storage,
{
CamelStore *store = user_data;
CamelFolderInfo *root, *fi;
- char *prefix, *name;
+ char *name;
CamelURL *url;
CamelException ex;
diff --git a/mail/mail-format.c b/mail/mail-format.c
index 480a3fbcdc..b1e3f9b5d1 100644
--- a/mail/mail-format.c
+++ b/mail/mail-format.c
@@ -872,30 +872,53 @@ write_address (MailDisplay *md, const CamelInternetAddress *addr, const char *fi
mail_html_write (md->html, md->stream, "</td></tr>");
}
+/* order of these must match write_header code */
+static char *default_headers[] = {
+ "From", "Reply-To", "To", "Cc", "Subject", "Date",
+};
+
+/* return index of header in default_headers array */
+static int
+default_header_index(const char *name)
+{
+ int i;
+ for (i=0;i<sizeof(default_headers)/sizeof(default_headers[0]);i++)
+ if (!g_strcasecmp(name, default_headers[i]))
+ return i;
+
+ return -1;
+}
+
+/* index is index of header in default_headers array */
static void
-write_header (CamelMimeMessage *message, MailDisplay *md,
- const char *name, const char *value, int flags)
+write_default_header(CamelMimeMessage *message, MailDisplay *md, int index, int flags)
{
- if (!g_strcasecmp (name, "From")) {
- write_address (md, camel_mime_message_get_from (message),
- _("From"), flags | WRITE_BOLD);
- } else if (!g_strcasecmp (name, "Reply-To")) {
- write_address (md, camel_mime_message_get_reply_to (message),
- _("Reply-To"), flags);
- } else if (!g_strcasecmp (name, "To")) {
- write_address (md, camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO),
- _("To"), flags | WRITE_BOLD);
- } else if (!g_strcasecmp (name, "Cc")) {
+ switch(index) {
+ case 0:
+ write_address (md, camel_mime_message_get_from (message), _("From"), flags | WRITE_BOLD);
+ break;
+ case 1:
+ write_address (md, camel_mime_message_get_reply_to (message), _("Reply-To"), flags);
+ break;
+ case 2:
+ write_address(md, camel_mime_message_get_recipients(message, CAMEL_RECIPIENT_TYPE_TO),
+ _("To"), flags | WRITE_BOLD);
+ break;
+ case 3:
write_address (md, camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC),
_("Cc"), flags | WRITE_BOLD);
- } else if (!g_strcasecmp (name, "Subject")) {
+ break;
+ case 4:
write_text_header (_("Subject"), camel_mime_message_get_subject (message),
flags | WRITE_BOLD, md->html, md->stream);
- } else if (!g_strcasecmp (name, "Date")) {
+ break;
+ case 5:
write_date (message, flags | WRITE_BOLD, md->html, md->stream);
- } else
- write_text_header (name, value, flags, md->html, md->stream);
+ break;
+ default:
+ g_assert_not_reached();
+ }
}
#define COLOR_IS_LIGHT(r, g, b) ((r + g + b) > (128 * 3))
@@ -904,16 +927,10 @@ static void
write_headers (CamelMimeMessage *message, MailDisplay *md)
{
gboolean full = (md->display_style == MAIL_CONFIG_DISPLAY_FULL_HEADERS);
- CamelMediumHeader *headers, default_headers[] = {
- { "From", NULL }, { "Reply-To", NULL },
- { "To", NULL }, { "Cc" , NULL }, { "Subject", NULL },
- { "Date", NULL }
- };
char bgcolor[7], fontcolor[7];
GtkStyle *style = NULL;
- int i, len, flags;
- GArray *gheaders;
-
+ int i;
+
/* My favorite thing to do...much around with colors so we respect people's stupid themes */
style = gtk_widget_get_style (GTK_WIDGET (md->html));
if (style) {
@@ -958,23 +975,31 @@ write_headers (CamelMimeMessage *message, MailDisplay *md)
"<tr><td><table>\n", fontcolor, bgcolor);
if (full) {
- gheaders = camel_medium_get_headers (CAMEL_MEDIUM (message));
- headers = (CamelMediumHeader *)gheaders->data;
- len = gheaders->len;
- flags = WRITE_NOCOLUMNS;
+ struct _header_raw *header;
+ const char *charset;
+ CamelContentType *ct;
+ char *value;
+
+ ct = camel_mime_part_get_content_type(CAMEL_MIME_PART(message));
+ charset = header_content_type_param(ct, "charset");
+ charset = camel_charset_to_iconv(charset);
+
+ header = CAMEL_MIME_PART(message)->headers;
+ while (header) {
+ i = default_header_index(header->name);
+ if (i == -1) {
+ value = header_decode_string(header->value, charset);
+ write_text_header(header->name, value, WRITE_NOCOLUMNS, md->html, md->stream);
+ g_free(value);
+ } else
+ write_default_header(message, md, i, WRITE_NOCOLUMNS);
+ header = header->next;
+ }
} else {
- gheaders = NULL;
- headers = default_headers;
- len = sizeof (default_headers) / sizeof (default_headers[0]);
- flags = 0;
+ for (i=0;i<sizeof(default_headers)/sizeof(default_headers[0]);i++)
+ write_default_header(message, md, i, 0);
}
- for (i = 0; i < len; i++)
- write_header (message, md, headers[i].name, headers[i].value, flags);
-
- if (gheaders)
- camel_medium_free_headers (CAMEL_MEDIUM (message), gheaders);
-
mail_html_write (md->html, md->stream,
"</table></td></tr></table></td></tr></table></font></td>"
"<td><table width=10 cellpadding=0 cellspacing=0><tr><td></td></tr></table></td></tr>"
diff --git a/mail/mail-local.c b/mail/mail-local.c
index d3541d24a9..710a016d91 100644
--- a/mail/mail-local.c
+++ b/mail/mail-local.c
@@ -654,9 +654,6 @@ mls_get_folder(CamelStore *store, const char *folder_name, guint32 flags, CamelE
{
MailLocalStore *local_store = MAIL_LOCAL_STORE (store);
MailLocalFolder *folder;
- char *physical_uri;
- CamelFolderInfo *info;
- char *path = NULL;
d(printf("--LOCAL-- get_folder: %s\n", folder_name));