diff options
author | Jeffrey Stedfast <fejj@helixcode.com> | 2000-10-17 07:48:14 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-10-17 07:48:14 +0800 |
commit | 1eae52cc666f55142c4580637e3a42c1db2805b7 (patch) | |
tree | ce8a44ade747ec40eec249120242bd9394069b52 | |
parent | abd69f08adc08989436209f97a633707947e70c7 (diff) | |
download | gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.tar gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.tar.gz gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.tar.bz2 gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.tar.lz gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.tar.xz gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.tar.zst gsoc2013-evolution-1eae52cc666f55142c4580637e3a42c1db2805b7.zip |
Decode recipient names so that they display nicely in the To and Cc
2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
* mail-format.c (mail_generate_reply): Decode recipient names so
that they display nicely in the To and Cc fields.
(write_field_to_stream): Now takes another argument
'value_is_encoded' so that we know if we should decode that string
before proceding onward. Since the message subject is already
decoded before it's passed in, we don't want to decode it again
(wasted cpu time and/or any 8bit chars will be assumed to be
latin1 encoded and thus the decoded value will be corrupt).
svn path=/trunk/; revision=5955
-rw-r--r-- | mail/ChangeLog | 11 | ||||
-rw-r--r-- | mail/mail-format.c | 60 |
2 files changed, 48 insertions, 23 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 98dfd18129..bfea5d1f9c 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,14 @@ +2000-10-16 Jeffrey Stedfast <fejj@helixcode.com> + + * mail-format.c (mail_generate_reply): Decode recipient names so + that they display nicely in the To and Cc fields. + (write_field_to_stream): Now takes another argument + 'value_is_encoded' so that we know if we should decode that string + before proceding onward. Since the message subject is already + decoded before it's passed in, we don't want to decode it again + (wasted cpu time and/or any 8bit chars will be assumed to be + latin1 encoded and thus the decoded value will be corrupt). + 2000-10-16 Chris Toshok <toshok@helixcode.com> * mail-config-gui.c (service_page_get_url): only set the url->user diff --git a/mail/mail-format.c b/mail/mail-format.c index 7c2991ab18..5ae440188a 100644 --- a/mail/mail-format.c +++ b/mail/mail-format.c @@ -541,21 +541,24 @@ call_handler_function (CamelMimePart *part, MailDisplay *md) static void write_field_to_stream (const char *description, const char *value, - gboolean bold, GtkHTML *html, + gboolean value_is_encoded, gboolean bold, GtkHTML *html, GtkHTMLStream *stream) { char *encoded_value; if (value) { - unsigned char *raw, *p; - - raw = header_decode_string (value); + char *raw, *p; + + if (value_is_encoded) + raw = header_decode_string (value); + else + raw = g_strdup (value); encoded_value = e_text_to_html (raw, E_TEXT_TO_HTML_CONVERT_NL | E_TEXT_TO_HTML_CONVERT_URLS); g_free (raw); - for (p = (unsigned char *)encoded_value; *p; p++) { + for (p = encoded_value; *p; p++) { if (!isprint (*p)) *p = '?'; } @@ -582,35 +585,33 @@ write_headers (CamelMimeMessage *message, MailDisplay *md) "cellspacing=0 border=1>" "<tr><td><table>\n"); - write_field_to_stream ("From:", - camel_mime_message_get_from (message), - TRUE, md->html, md->stream); + write_field_to_stream ("From:", camel_mime_message_get_from (message), + TRUE, TRUE, md->html, md->stream); reply_to = camel_mime_message_get_reply_to (message); if (reply_to) { - write_field_to_stream ("Reply-To:", reply_to, FALSE, + write_field_to_stream ("Reply-To:", reply_to, TRUE, FALSE, md->html, md->stream); } recipients = camel_mime_message_get_recipients ( message, CAMEL_RECIPIENT_TYPE_TO); string = camel_address_encode (CAMEL_ADDRESS (recipients)); - write_field_to_stream ("To:", string ? string : "", TRUE, + write_field_to_stream ("To:", string ? string : "", TRUE, TRUE, md->html, md->stream); g_free (string); recipients = camel_mime_message_get_recipients(message, CAMEL_RECIPIENT_TYPE_CC); string = camel_address_encode(CAMEL_ADDRESS(recipients)); if (string) { - write_field_to_stream ("Cc:", string, TRUE, + write_field_to_stream ("Cc:", string, TRUE, TRUE, md->html, md->stream); } g_free (string); - - write_field_to_stream ("Subject:", - camel_mime_message_get_subject (message), - TRUE, md->html, md->stream); - + + write_field_to_stream ("Subject:", camel_mime_message_get_subject (message), + FALSE, TRUE, md->html, md->stream); + mail_html_write (md->html, md->stream, "</table></td></tr></table></center><p>"); } @@ -1641,7 +1642,7 @@ mail_generate_reply (CamelMimeMessage *message, gboolean to_all) id = mail_config_get_default_identity (); if (id) sig_file = id->sig; - + /* Set the quoted reply text. */ if (text) { char *repl_text; @@ -1695,7 +1696,7 @@ mail_generate_reply (CamelMimeMessage *message, gboolean to_all) if (!repl_to) repl_to = camel_mime_message_get_from (message); - recipient = g_strdup (repl_to ? repl_to : ""); + recipient = header_decode_string (repl_to ? repl_to : ""); to = g_list_append (NULL, (gpointer)recipient); if (to_all) { @@ -1709,9 +1710,15 @@ mail_generate_reply (CamelMimeMessage *message, gboolean to_all) i = 0; cc = NULL; while (camel_internet_address_get (recip, i++, &name, &addr)) { - if (*name) { - fulladdr = g_strdup_printf ("\"%s\" <%s>", - name, addr); + if (name && *name) { + char *dname = header_decode_string (name); + + if (dname && *dname) + fulladdr = g_strdup_printf ("\"%s\" <%s>", dname, addr); + else + fulladdr = g_strdup (addr); + + g_free (dname); } else fulladdr = g_strdup (addr); @@ -1726,8 +1733,15 @@ mail_generate_reply (CamelMimeMessage *message, gboolean to_all) recip = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC); i = 0; while (camel_internet_address_get (recip, i++, &name, &addr)) { - if (*name) { - fulladdr = g_strdup_printf ("\"%s\" <%s>", name, addr); + if (name && *name) { + char *dname = header_decode_string (name); + + if (dname && *dname) + fulladdr = g_strdup_printf ("\"%s\" <%s>", dname, addr); + else + fulladdr = g_strdup (addr); + + g_free (dname); } else fulladdr = g_strdup (addr); |