aboutsummaryrefslogtreecommitdiffstats
path: root/composer/e-msg-composer.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2003-01-28 12:04:51 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2003-01-28 12:04:51 +0800
commit8644df4c44ea281d77f57d6981326a730871c360 (patch)
tree670cee9cb0e4da8bc8b889e0da3711fd73aedb97 /composer/e-msg-composer.c
parenta81077272f8a2525ee65bb921913511e622fa4f3 (diff)
downloadgsoc2013-evolution-8644df4c44ea281d77f57d6981326a730871c360.tar.gz
gsoc2013-evolution-8644df4c44ea281d77f57d6981326a730871c360.tar.zst
gsoc2013-evolution-8644df4c44ea281d77f57d6981326a730871c360.zip
If the subject or body components of the mailto url are not in UTF-8,
2003-01-27 Jeffrey Stedfast <fejj@ximian.com> * e-msg-composer.c (e_msg_composer_new_from_url): If the subject or body components of the mailto url are not in UTF-8, convert them to UTF-8. svn path=/trunk/; revision=19662
Diffstat (limited to 'composer/e-msg-composer.c')
-rw-r--r--composer/e-msg-composer.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 0d1573024c..eccab36641 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -3658,6 +3658,7 @@ e_msg_composer_new_from_url (const char *url_in)
EDestination **tov, **ccv, **bccv;
char *subject = NULL, *body = NULL;
const char *p, *header;
+ size_t nread, nwritten;
char *content;
int len, clen;
@@ -3704,10 +3705,30 @@ e_msg_composer_new_from_url (const char *url_in)
bcc = add_recipients (bcc, content, FALSE);
} else if (!strncasecmp (header, "subject", len)) {
g_free (subject);
- subject = g_strdup (content);
+ if (g_utf8_validate (content, -1, NULL)) {
+ subject = content;
+ content = NULL;
+ } else {
+ subject = g_locale_to_utf8 (content, clen, &nread,
+ &nwritten, NULL);
+ if (subject) {
+ subject = g_realloc (subject, nwritten + 1);
+ subject[nwritten] = '\0';
+ }
+ }
} else if (!strncasecmp (header, "body", len)) {
g_free (body);
- body = g_strdup (content);
+ if (g_utf8_validate (content, -1, NULL)) {
+ body = content;
+ content = NULL;
+ } else {
+ body = g_locale_to_utf8 (content, clen, &nread,
+ &nwritten, NULL);
+ if (body) {
+ body = g_realloc (body, nwritten + 1);
+ body[nwritten] = '\0';
+ }
+ }
} else if (!strncasecmp (header, "attach", len)) {
e_msg_composer_attachment_bar_attach (E_MSG_COMPOSER_ATTACHMENT_BAR (composer->attachment_bar), content);
} else {