aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tag/TagHandler.cxx15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/tag/TagHandler.cxx b/src/tag/TagHandler.cxx
index 9bbaae36a..bbd30877a 100644
--- a/src/tag/TagHandler.cxx
+++ b/src/tag/TagHandler.cxx
@@ -22,6 +22,9 @@
#include "TagBuilder.hxx"
#include "util/ASCII.hxx"
+#include <stdio.h>
+#include <stdlib.h>
+
static void
add_tag_duration(SongTime duration, void *ctx)
{
@@ -35,7 +38,17 @@ add_tag_tag(TagType type, const char *value, void *ctx)
{
TagBuilder &tag = *(TagBuilder *)ctx;
- tag.AddItem(type, value);
+ if (type == TAG_TRACK || type == TAG_DISC) {
+ /* filter out this extra data and leading zeroes */
+ char *end;
+ unsigned n = strtoul(value, &end, 10);
+ if (value != end) {
+ char s[21];
+ if (snprintf(s, 21, "%u", n) >= 0)
+ tag.AddItem(type, s);
+ }
+ } else
+ tag.AddItem(type, value);
}
const struct tag_handler add_tag_handler = {