Tag: use SignedSongTime for the song duration

This commit is contained in:
Max Kellermann
2014-08-29 12:14:27 +02:00
parent 8ce30c6a69
commit 7c25d83f1c
25 changed files with 103 additions and 84 deletions

View File

@@ -59,28 +59,28 @@ ParseItemClass(const char *name, size_t length)
}
gcc_pure
static int
static SignedSongTime
ParseDuration(const char *duration)
{
char *endptr;
unsigned result = ParseUnsigned(duration, &endptr);
if (endptr == duration || *endptr != ':')
return 0;
return SignedSongTime::Negative();
result *= 60;
duration = endptr + 1;
result += ParseUnsigned(duration, &endptr);
if (endptr == duration || *endptr != ':')
return 0;
return SignedSongTime::Negative();
result *= 60;
duration = endptr + 1;
result += ParseUnsigned(duration, &endptr);
if (endptr == duration || *endptr != 0)
return 0;
return SignedSongTime::Negative();
return result;
return SignedSongTime::FromS(result);
}
/**
@@ -183,7 +183,7 @@ protected:
const char *duration =
GetAttribute(attrs, "duration");
if (duration != nullptr)
tag.SetTime(ParseDuration(duration));
tag.SetDuration(ParseDuration(duration));
state = RES;
}