aboutsummaryrefslogtreecommitdiffstats
path: root/src/tag (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-11-06tag/id3: convert path from "wchar_t*" to "char*" for error messageMax Kellermann1-1/+3
2015-10-21Filter out this extra data and leading zeroes in "track" and "disc" tags.Andreas Mair1-1/+14
2015-10-16tag/ApeLoader: fix buffer overflow after unterminated keyMax Kellermann1-6/+6
2015-09-30util/StringView: new utility classMax Kellermann10-92/+81
2015-08-24db/UniqueTags, tag/Set, ...: use typedef tag_mask_tMax Kellermann2-10/+10
2015-08-24tag/Settings: move typedef tag_mask_t to Mask.hxxMax Kellermann2-2/+28
2015-08-24tag/Settings: convert to C++Max Kellermann5-10/+6
2015-08-24tag/Settings: convert to bit maskMax Kellermann3-9/+8
2015-08-24tag/Settings: add function IsTagEnabled() wrapping access to ignore_tag_items[]Max Kellermann3-2/+21
2015-08-24Tag: include cleanupMax Kellermann1-1/+0
2015-06-26config/Global: allow calling config_get_string() with one argumentMax Kellermann1-2/+1
default_value defaults to nullptr.
2015-06-26TagId3: remove the "id3v1_encoding" settingMax Kellermann1-47/+10
Drop support for misencoded tags. People should not be using ID3v1 anyway.
2015-03-17*: doxygen fixupsMax Kellermann2-2/+2
2015-03-05fs/Traits: add macro PATH_LITERAL()Max Kellermann2-2/+2
2015-02-06TagBuilder: allow adding duplicate tag types in Complement()Max Kellermann1-1/+10
Build a table of pre-existing tag types before adding new items. The old way would check HasType() each time, which would return true after the first instance of that tag type had been added, preventing duplicate tag types to be merged. This broke duplicate tag types loaded from the state file, because this code path uses TagBuilder::Complement().
2015-02-04tag/Rva2: convert pointers to referencesMax Kellermann1-9/+9
2015-02-04tag/Rva2: rename struct rva2_data to CamelCaseMax Kellermann1-6/+6
2015-02-04tag/Rva2: make enum rva2_channel strictly-typedMax Kellermann1-12/+12
2015-01-22tag/Format: add %iso8601%Max Kellermann1-0/+27
2015-01-21config/Option: convert to strictly-typed enumMax Kellermann2-2/+4
2015-01-14output/recorder: dynamic file nameMax Kellermann2-0/+138
2015-01-01Copyright year 2015Max Kellermann41-41/+41
2014-12-26util/{ASCII,UriUtil}, ...: work around -Wtautological-pointer-compareMax Kellermann1-0/+9
New in clang 3.6.
2014-12-02TagId3: add "pure" attributesMax Kellermann1-1/+4
2014-11-28Compiler.h: add macro CLANG_OR_GCC_VERSION()Max Kellermann2-2/+2
2014-11-25ApeTag: drop support for non-standard tag "album artist"Max Kellermann1-1/+0
This was used by proprietary software. MPD adopted it a few years ago, which turns out to be a mistake, because it now creates problems for some MPD users (http://bugs.musicpd.org/view.php?id=4168).
2014-11-22configure.ac: add macro MPD_ENABLE_AUTO_PKG_LIBMax Kellermann1-1/+1
2014-11-08tag/Set: do AlbumArtist/Artist fallback only if AlbumArtist is not disabledMax Kellermann1-0/+2
On "list albumartist", songs that have no AlbumArtist tag will use the Artist tag. However, if AlbumArtist is disabled via "metadata_to_use", the TagBuilder::AddItem() call is ignored, and PrintUniqueTag() attempts to print a nullptr string. This commit fixes the problem by attempting the fallback only if AlbumArtist is not disabled.
2014-11-02TagString: use g_strndup() for unterminated stringMax Kellermann1-1/+1
Fixes buffer overflow bug.
2014-10-10TagString: implement fix_utf8() without GLibMax Kellermann1-22/+34
2014-10-10TagString: return WritableBuffer<char>Max Kellermann3-24/+26
2014-10-10TagString: use strndup() for unterminated stringMax Kellermann1-1/+1
Fixes buffer overflow bug.
2014-10-10TagString: remove ISO-Latin-1 fallbackMax Kellermann1-14/+1
MPD handles all strings in UTF-8 internally. Those decoders which read Latin-1 tags are supposed to implement the conversion, instead of passing Latin-1 to TagBuilder::AddItem(). FixTagString() is simply the wrong place to do that, and hard-coding Latin-1 is kind of arbitrary.
2014-09-29Tag: support "AlbumSort"Max Kellermann3-0/+5
The new tag is supported by all decoders that use the tag name table, and the ID3v2 tag "TSOA" maps to it.
2014-09-27Add MusicBrainz' Release Track Id tagWieland Hoffmann3-0/+4
The Release Track Id uniquely identifies a recording on a release - that is, even if a recording appears twice on a release (meaning that the combination of recording and release id are not enough to figure out which one it is), the release track id will allow differentiating the two. The tag names are taken from https://musicbrainz.org/doc/MusicBrainz_Picard/Tags/Mapping
2014-09-24decoder/flac: move code to tag/MixRamp.cxxMax Kellermann2-0/+19
2014-09-24decoder/mad: move code to tag/MixRamp.cxxMax Kellermann2-0/+93
2014-09-24tag/ReplayGain: add VorbisComment parserMax Kellermann2-0/+19
Move code from the Vorbis and FLAC decoder plugins.
2014-09-24tag/ReplayGain: move code to template functionMax Kellermann1-8/+30
2014-09-24decoder/{vorbis,flac}: move duplicate code to tag/VorbisComment.cxxMax Kellermann2-0/+75
2014-09-24tag/ApeReplayGain, decoder/mad: move duplicate code to tag/ReplayGain.cxxMax Kellermann3-15/+80
2014-08-29TagHandler: pass SongTime to duration()Max Kellermann2-6/+7
2014-08-29Tag: use SignedSongTime for the song durationMax Kellermann5-34/+32
2014-07-30TagId3: fix printf string parameterMax Kellermann1-1/+1
2014-07-14util/Cast: reimplement as template without macroMax Kellermann1-2/+5
2014-07-12Tag: add class const_iterator and methods begin(), end()Max Kellermann3-12/+65
Enables using range-based "for".
2014-06-16TagPool: move code to tag_value_slot_p()Max Kellermann1-9/+18
2014-06-16TagPool: convert macro to constexprMax Kellermann1-1/+1
2014-04-24db/Helpers: move code to tag/Set.cxxMax Kellermann2-1/+130
2014-04-24db/Helpers: move TagSet to dedicated headerMax Kellermann1-0/+60