Don't null-terminate already null-terminated strings
This was causing issues with genre tags sourced from id3genres (I think
all m4a files with genres might be affected?). id3genres is const, so
even when the write is a no-op, attempting it caused a segfault
libtags: opus/vorbis: make sure to get to the last frame to have the full duration
libtags: vorbis, opus: ignore tags past the ogg page
As it is implemented right now, OGG pages are not treated properly,
so in case of huge embedded pictures inside metadata the file could
end up ignore by audio/readtags and audio/mkplist. Workaround by
ignoring tags that span across pages for now.
libtags: try other formats after id3v2 is found
Even though a valid id3v2 tag header may be present, the file format
itself might not be mp3. Instead, retry other format parsers on the
file after seeking right past the id3v2 header. This fixes FLACs that
are ID3v2-tagged (the reasoning behind that is left with no comment).
Also convert "TLEN" into duration while at it.
wav: do not div by zero; validate sample rate and number of channels
id3v2: make sure extra id3 tag does not cause infinite loop
flac: check sample rate before dividing by zero; also check number of channels
fix string trimming on non-latin chars
do not set tag bit in ctx.found unless the value is non-empty
xm: case-insensitive strcmp, some files are apparently different (thanks kemal)
it, mod: use ISO-8859-1 (thanks kemal)
mod: add another variant (thanks kemal)
make it build on non-9 systems again
trim text tags and ignore empty values