aboutsummaryrefslogtreecommitdiffstats
path: root/src/charset.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-10-02 19:01:11 +0200
committerMax Kellermann <max@duempel.org>2008-10-02 19:01:11 +0200
commit299b9c138b3104b92fafb47082a220f906946c66 (patch)
treecee70bce805d28da86f2a37e12bcb616a595e160 /src/charset.c
parentde5c385e46039d2f7410b5ba4a61f92725d7ca9a (diff)
downloadmpd-299b9c138b3104b92fafb47082a220f906946c66.tar.gz
mpd-299b9c138b3104b92fafb47082a220f906946c66.tar.xz
mpd-299b9c138b3104b92fafb47082a220f906946c66.zip
charset: convert strings with fallback
Use g_convert_with_fallback() for charset conversion, and don't print a status bar message on error.
Diffstat (limited to 'src/charset.c')
-rw-r--r--src/charset.c34
1 files changed, 10 insertions, 24 deletions
diff --git a/src/charset.c b/src/charset.c
index 701fd2105..42c0e6034 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -18,14 +18,11 @@
*/
#include "charset.h"
-#include "i18n.h"
#include <assert.h>
#include <string.h>
#include <glib.h>
-extern void screen_status_printf(const char *format, ...);
-
static bool noconvert = true;
static const char *charset;
@@ -61,7 +58,6 @@ char *
utf8_to_locale(const char *utf8str)
{
gchar *str;
- gsize rb, wb;
GError *error;
assert(utf8str != NULL);
@@ -69,16 +65,11 @@ utf8_to_locale(const char *utf8str)
if (noconvert)
return g_strdup(utf8str);
- rb = 0; /* bytes read */
- wb = 0; /* bytes written */
- error = NULL;
- str = g_locale_from_utf8(utf8str,
- strlen(utf8str),
- &wb, &rb,
- &error);
- if (error) {
- screen_status_printf(_("Error: Unable to convert characters to %s"),
- charset);
+ str = g_convert_with_fallback(utf8str, strlen(utf8str),
+ charset, "utf-8",
+ NULL, NULL, NULL,
+ &error);
+ if (str == NULL) {
g_error_free(error);
return g_strdup(utf8str);
}
@@ -90,7 +81,6 @@ char *
locale_to_utf8(const char *localestr)
{
gchar *str;
- gsize rb, wb;
GError *error;
assert(localestr != NULL);
@@ -98,15 +88,11 @@ locale_to_utf8(const char *localestr)
if (noconvert)
return g_strdup(localestr);
- rb = 0; /* bytes read */
- wb = 0; /* bytes written */
- error = NULL;
- str = g_locale_to_utf8(localestr,
- strlen(localestr),
- &wb, &rb,
- &error);
- if (error) {
- screen_status_printf(_("Error: Unable to convert characters to UTF-8"));
+ str = g_convert_with_fallback(localestr, strlen(localestr),
+ "utf-8", charset,
+ NULL, NULL, NULL,
+ &error);
+ if (str == NULL) {
g_error_free(error);
return g_strdup(localestr);
}