aboutsummaryrefslogtreecommitdiffstats
path: root/src/tag.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-11-02 02:44:11 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-11-02 02:44:11 +0000
commitaab6515c52aebd5532ba6d5326196395928d39ba (patch)
treee1a6f6a49d3d43404906e792ca9fabf81557db3f /src/tag.c
parent9ef68105cb3fde47c15224054e1c6755c333018f (diff)
downloadmpd-aab6515c52aebd5532ba6d5326196395928d39ba.tar.gz
mpd-aab6515c52aebd5532ba6d5326196395928d39ba.tar.xz
mpd-aab6515c52aebd5532ba6d5326196395928d39ba.zip
patches for 0.11.5 bug fix from the following revision changes:
1993 2000 2001 2026 2028 2038 2078 2116 2163 2164 2230 2236 2270 2337 2339 2420 2426 git-svn-id: https://svn.musicpd.org/mpd/branches/branch-0.11.4-fixes@2461 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/tag.c')
-rw-r--r--src/tag.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/tag.c b/src/tag.c
index 3f95f024d..c5719ed8f 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -23,6 +23,8 @@
#include "utf8.h"
#include "log.h"
#include "inputStream.h"
+#include "conf.h"
+#include "charConv.h"
#include <sys/stat.h>
#include <stdlib.h>
@@ -54,16 +56,20 @@ void printMpdTag(FILE * fp, MpdTag * tag) {
temp = latin1StrToUtf8Dup(str); \
free(str); \
str = temp; \
- stripReturnChar(str); \
} \
}
void validateUtf8Tag(MpdTag * tag) {
fixUtf8(tag->artist);
+ stripReturnChar(tag->artist);
fixUtf8(tag->album);
+ stripReturnChar(tag->artist);
fixUtf8(tag->track);
+ stripReturnChar(tag->artist);
fixUtf8(tag->title);
+ stripReturnChar(tag->artist);
fixUtf8(tag->name);
+ stripReturnChar(tag->artist);
}
#ifdef HAVE_ID3TAG
@@ -87,6 +93,18 @@ char * getID3Info(struct id3_tag * tag, char * id) {
utf8 = id3_ucs4_utf8duplicate(ucs4);
if(!utf8) return NULL;
+ if(getConf()[CONF_ID3V1_ENCODING]
+ && (id3_tag_options(tag, 0, 0) & ID3_TAG_OPTION_ID3V1)) {
+
+ char* isostr;
+ setCharSetConversion("ISO-8859-1", "UTF-8");
+ isostr = convStrDup(utf8);
+ free(utf8);
+ setCharSetConversion("UTF-8", getConf()[CONF_ID3V1_ENCODING]);
+ utf8 = convStrDup(isostr);
+ free(isostr);
+ }
+
return utf8;
}
#endif
@@ -99,28 +117,24 @@ MpdTag * parseId3Tag(struct id3_tag * tag) {
str = getID3Info(tag,ID3_FRAME_ARTIST);
if(str) {
if(!ret) ret = newMpdTag();
- stripReturnChar(str);
ret->artist = str;
}
str = getID3Info(tag,ID3_FRAME_TITLE);
if(str) {
if(!ret) ret = newMpdTag();
- stripReturnChar(str);
ret->title = str;
}
str = getID3Info(tag,ID3_FRAME_ALBUM);
if(str) {
if(!ret) ret = newMpdTag();
- stripReturnChar(str);
ret->album = str;
}
str = getID3Info(tag,ID3_FRAME_TRACK);
if(str) {
if(!ret) ret = newMpdTag();
- stripReturnChar(str);
ret->track = str;
}