aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-format.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-10-17 07:48:14 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-10-17 07:48:14 +0800
commit1eae52cc666f55142c4580637e3a42c1db2805b7 (patch)
treece8a44ade747ec40eec249120242bd9394069b52 /mail/mail-format.c
parentabd69f08adc08989436209f97a633707947e70c7 (diff)
downloadgsoc2013-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
Diffstat (limited to 'mail/mail-format.c')
-rw-r--r--mail/mail-format.c60
1 files changed, 37 insertions, 23 deletions
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);