X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fcharset.c;h=61a34cbcf449a6dd0eb870cfc9dd239d83109cf5;hb=3af5c3a185fc23b8fb9d528a9c0a14f70093ac70;hp=01d381b5d1303d0301360a7fafc919ac1dc701db;hpb=ab87e5546ffb22d0bd812cb45558e656bfd1b36f;p=ncmpc.git diff --git a/src/charset.c b/src/charset.c index 01d381b..61a34cb 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1,21 +1,21 @@ /* ncmpc (Ncurses MPD Client) - * (c) 2004-2009 The Music Player Daemon Project + * (c) 2004-2017 The Music Player Daemon Project * Project homepage: http://musicpd.org - + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - + * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ + */ #include "charset.h" @@ -35,31 +35,29 @@ charset_init(void) } #endif -#ifdef ENABLE_WIDE +#ifdef HAVE_CURSES_ENHANCED static inline unsigned unicode_char_width(gunichar ch) { -#if !GLIB_CHECK_VERSION(2,14,0) if (g_unichar_iszerowidth(ch)) return 0; -#endif if (g_unichar_iswide(ch)) return 2; return 1; } -#endif /* ENABLE_WIDE */ +#endif /* HAVE_CURSES_ENHANCED */ unsigned utf8_width(const char *str) { assert(str != NULL); -#if defined(ENABLE_MULTIBYTE) && !defined(ENABLE_WIDE) +#if defined(ENABLE_MULTIBYTE) && !defined(HAVE_CURSES_ENHANCED) return g_utf8_strlen(str, -1); #else -#ifdef ENABLE_WIDE +#ifdef HAVE_CURSES_ENHANCED if (g_utf8_validate(str, -1, NULL)) { size_t len = g_utf8_strlen(str, -1); unsigned width = 0; @@ -94,11 +92,12 @@ locale_width(const char *p) return width; #else - return strlen(str); + return strlen(p); #endif } -static inline unsigned +gcc_unused +static unsigned ascii_cut_width(char *p, unsigned max_width) { size_t length = strlen(p); @@ -109,7 +108,8 @@ ascii_cut_width(char *p, unsigned max_width) return max_width; } -static inline unsigned +gcc_unused +static unsigned narrow_cut_width(char *p, unsigned max_width) { size_t length = g_utf8_strlen(p, -1); @@ -120,15 +120,15 @@ narrow_cut_width(char *p, unsigned max_width) return max_width; } -static inline unsigned +gcc_unused +static unsigned wide_cut_width(char *p, unsigned max_width) { size_t length = g_utf8_strlen(p, -1); unsigned width = 0, prev_width; - gunichar c; while (length-- > 0) { - c = g_utf8_get_char(p); + gunichar c = g_utf8_get_char(p); prev_width = width; width += g_unichar_iswide(c) ? 2 : 1; if (width > max_width) { @@ -148,12 +148,12 @@ utf8_cut_width(char *p, unsigned max_width) { assert(p != NULL); -#ifdef ENABLE_WIDE +#ifdef HAVE_CURSES_ENHANCED if (!g_utf8_validate(p, -1, NULL)) return ascii_cut_width(p, max_width); return wide_cut_width(p, max_width); -#elif defined(ENABLE_MULTIBYTE) && !defined(ENABLE_WIDE) +#elif defined(ENABLE_MULTIBYTE) && !defined(HAVE_CURSES_ENHANCED) return narrow_cut_width(p, max_width); #else return ascii_cut_width(p, max_width); @@ -164,16 +164,14 @@ char * utf8_to_locale(const char *utf8str) { #ifdef ENABLE_LOCALE - gchar *str; - assert(utf8str != NULL); if (noconvert) return g_strdup(utf8str); - str = g_convert_with_fallback(utf8str, -1, - charset, "utf-8", - NULL, NULL, NULL, NULL); + gchar *str = g_convert_with_fallback(utf8str, -1, + charset, "utf-8", + NULL, NULL, NULL, NULL); if (str == NULL) return g_strdup(utf8str); @@ -187,16 +185,14 @@ char * locale_to_utf8(const char *localestr) { #ifdef ENABLE_LOCALE - gchar *str; - assert(localestr != NULL); if (noconvert) return g_strdup(localestr); - str = g_convert_with_fallback(localestr, -1, - "utf-8", charset, - NULL, NULL, NULL, NULL); + gchar *str = g_convert_with_fallback(localestr, -1, + "utf-8", charset, + NULL, NULL, NULL, NULL); if (str == NULL) return g_strdup(localestr);