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);