From 8b7d0f9b0666ffe11347e3529057a5cf476d2182 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Tue, 31 May 2011 23:23:50 +0300 Subject: [PATCH] * mu-util.c: only convert if the locale is not already in UTF8 --- src/mu-util.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/mu-util.c b/src/mu-util.c index ec4f6b25..67bd6cd4 100644 --- a/src/mu-util.c +++ b/src/mu-util.c @@ -375,22 +375,28 @@ gboolean mu_util_fputs_encoded (const char *str, FILE *stream) { char *conv; - GError *err; + const char *dummy; int rv; g_return_val_if_fail (str, FALSE); g_return_val_if_fail (stream, FALSE); - - err = NULL; - conv = g_locale_from_utf8 (str, -1, NULL, NULL, &err); - if (err) { - g_printerr ("conversion failed: %s", err->message); - g_error_free (err); - return FALSE; - } - rv = fputs (conv, stream); - g_free (conv); + /* g_get_charset return TRUE when the locale is UTF8 */ + if (g_get_charset(&dummy)) + rv = fputs (str, stream); + else { /* charset is _not_ utf8, so we actually have to + * convert it..*/ + GError *err; + err = NULL; + conv = g_locale_from_utf8 (str, -1, NULL, NULL, &err); + if (err) { + g_printerr ("conversion failed: %s", err->message); + g_error_free (err); + return FALSE; + } + rv = fputs (conv, stream); + g_free (conv); + } if (rv == EOF) { /* note, apparently, does not set errno */ g_printerr ("fputs failed");