* mu-util.c: only convert if the locale is not already in UTF8

This commit is contained in:
Dirk-Jan C. Binnema
2011-05-31 23:23:50 +03:00
parent 096c92e5c2
commit 8b7d0f9b06

View File

@ -375,23 +375,29 @@ gboolean
mu_util_fputs_encoded (const char *str, FILE *stream) mu_util_fputs_encoded (const char *str, FILE *stream)
{ {
char *conv; char *conv;
GError *err; const char *dummy;
int rv; int rv;
g_return_val_if_fail (str, FALSE); g_return_val_if_fail (str, FALSE);
g_return_val_if_fail (stream, FALSE); g_return_val_if_fail (stream, FALSE);
err = NULL; /* g_get_charset return TRUE when the locale is UTF8 */
conv = g_locale_from_utf8 (str, -1, NULL, NULL, &err); if (g_get_charset(&dummy))
if (err) { rv = fputs (str, stream);
g_printerr ("conversion failed: %s", err->message); else { /* charset is _not_ utf8, so we actually have to
g_error_free (err); * convert it..*/
return FALSE; 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);
} }
rv = fputs (conv, stream);
g_free (conv);
if (rv == EOF) { /* note, apparently, does not set errno */ if (rv == EOF) { /* note, apparently, does not set errno */
g_printerr ("fputs failed"); g_printerr ("fputs failed");
return FALSE; return FALSE;