Patch to fix displaying id3 info under UTF-8 locale

Miklos Szeredi <[email protected]>
Newsgroups gmane.comp.multimedia.xmms.devel
Message-ID <[email protected]>
This patch converts latin1 text to UTF-8 in case of UTF-8 locale.
Otherwise no conversion is done, as was the old behavior.

Miklos


Index: Input/mpg123/id3_frame_text.c
===================================================================
RCS file: /cvs/xmms/Input/mpg123/id3_frame_text.c,v
retrieving revision 1.14
diff -u -r1.14 id3_frame_text.c
--- Input/mpg123/id3_frame_text.c	4 Apr 2004 22:12:01 -0000	1.14
+++ Input/mpg123/id3_frame_text.c	23 Oct 2004 10:58:15 -0000
@@ -60,7 +60,7 @@
 	switch (encoding)
 	{
 		case ID3_ENCODING_ISO_8859_1:
-			return g_strdup(text);
+			return xmms_charset_from_latin1(text);
 		case ID3_ENCODING_UTF8:
 			return xmms_charset_from_utf8(text);
 		case ID3_ENCODING_UTF16:
Index: libxmms/charset.c
===================================================================
RCS file: /cvs/xmms/libxmms/charset.c,v
retrieving revision 1.5
diff -u -r1.5 charset.c
--- libxmms/charset.c	25 Apr 2004 00:04:24 -0000	1.5
+++ libxmms/charset.c	23 Oct 2004 10:58:15 -0000
@@ -111,6 +111,16 @@
 	return xmms_charset_convert(string, strlen(string), "UTF-8", NULL);
 }
 
+char* xmms_charset_from_latin1(const char *string)
+{
+	char *to = xmms_charset_get_current();
+	if (!strcmp(to, "UTF-8"))
+		return xmms_charset_convert(string, strlen(string),
+					    "ISO-8859-1", to);
+	else
+		return g_strdup(string);
+}
+
 #else
 
 char* xmms_charset_convert(const char *string, size_t insize, char *from, char *to)
@@ -153,6 +163,11 @@
 		}
 	}
 	return ascii;
+}
+
+char* xmms_charset_from_latin1(const char *string)
+{
+	return g_strdup(string);
 }
 
 #endif
Index: libxmms/charset.h
===================================================================
RCS file: /cvs/xmms/libxmms/charset.h,v
retrieving revision 1.2
diff -u -r1.2 charset.h
--- libxmms/charset.h	4 Apr 2004 14:17:43 -0000	1.2
+++ libxmms/charset.h	23 Oct 2004 10:58:15 -0000
@@ -10,6 +10,7 @@
 char* xmms_charset_convert(const char *string, size_t insize, char *from, char *to);
 char* xmms_charset_to_utf8(const char *string);
 char* xmms_charset_from_utf8(const char *string);
+char* xmms_charset_from_latin1(const char *string);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.