Code

wreadln: use memmove() instead of an temporary buffer
[ncmpc.git] / src / charset.c
index 42c0e60347432c2f909d97a207c4599cf741797c..ccfac0ef86a454c339c2b7479c4eb801e1648fbf 100644 (file)
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <glib.h>
 
+#ifdef HAVE_LOCALE_H
 static bool noconvert = true;
 static const char *charset;
 
@@ -31,13 +32,16 @@ charset_init(void)
 {
        noconvert = g_get_charset(&charset);
        return charset;
+       return NULL;
 }
+#endif
 
 unsigned
 utf8_width(const char *str)
 {
        assert(str != NULL);
 
+#ifdef HAVE_LOCALE_H
        if (g_utf8_validate(str, -1, NULL)) {
                size_t len = g_utf8_strlen(str, -1);
                unsigned width = 0;
@@ -51,12 +55,14 @@ utf8_width(const char *str)
 
                return width;
        } else
+#endif
                return strlen(str);
 }
 
 char *
 utf8_to_locale(const char *utf8str)
 {
+#ifdef HAVE_LOCALE_H
        gchar *str;
        GError *error;
 
@@ -65,7 +71,7 @@ utf8_to_locale(const char *utf8str)
        if (noconvert)
                return g_strdup(utf8str);
 
-       str = g_convert_with_fallback(utf8str, strlen(utf8str),
+       str = g_convert_with_fallback(utf8str, -1,
                                      charset, "utf-8",
                                      NULL, NULL, NULL,
                                      &error);
@@ -75,11 +81,15 @@ utf8_to_locale(const char *utf8str)
        }
 
        return str;
+#else
+       return g_strdup(utf8str);
+#endif
 }
 
 char *
 locale_to_utf8(const char *localestr)
 {
+#ifdef HAVE_LOCALE_H
        gchar *str;
        GError *error;
 
@@ -88,7 +98,7 @@ locale_to_utf8(const char *localestr)
        if (noconvert)
                return g_strdup(localestr);
 
-       str = g_convert_with_fallback(localestr, strlen(localestr),
+       str = g_convert_with_fallback(localestr, -1,
                                      "utf-8", charset,
                                      NULL, NULL, NULL,
                                      &error);
@@ -98,4 +108,7 @@ locale_to_utf8(const char *localestr)
        }
 
        return str;
+#else
+       return g_strdup(localestr);
+#endif
 }