PATCH: Taglib 1.3.1 TAG extended

Scott Wheeler wheeler at
Sat Jan 8 02:17:57 CET 2005

Two things first:

(a) Please use the taglib-devel at mailing list for such things (CC'ed).
(b) I haven't actually looked at the code yet, I'll wait until you've got diff 
figured out, but more on that below.

On Saturday 08 January 2005 1:10, you wrote:

> since I need taglib for my own project I have checked out its abilities
> and found out that it doesnt match my needs for complete tag support. I
> also need support for the following 3 fields:
> - maximum number of tracks in set
> - Media number (normaly cd number)
> - maximum number of medias
> - ID3V2 Standard allows TRCK to have a value of 3/12 to say its song 3
> of 12. And there also is a Media field TPOS with the same properties.
> - APE also supports all these fields
> - OGG Xiphcomments Track= can also have 3/12
> The only thing not so standard conformant is the Media= line I
> "invented" for Xiphcomment since its not proposed but actually pretty
> much obvious (at least for me :-)

Not for me -- I actually had to look up what TPOS was before I had any idea 
what you meant with "media".

> I have extended Taglib::Tag with 3 new members:
> tracks()
> media()
> medias()

TagLib::Tag can't be extended (with virtual functions) until the next major 
(2.0) TagLib release because of binary compatibility requirements.

That said, as this value isn't standard with any tag type except ID3v2 it 
doesn't make sense to have it in the generic interface.  That class isn't 
simply a convenience for TagLib users, it's meant to represent a reasonable 
set of things that developers can expect to exist in most tags.

> and also adjusted the rest of the lib
> Additionally I have corrected an already filed bug concerning ID3v2.2
> handling of comments.
> The only problem I have is that I don't really know how to create
> intelligent patch files.

See the man page for diff.  If you follow the direction on the TagLib / KDE 
site for CVS access you can see your changes just by typing "cvs diff" in 
your checkout directory.

Alternatively there's 'diff -urp <old file/dir> <new file/dir>' > patch

Then check to make sure that you really want to include everything that's in 
there and so forth.

You'll find that OSS developers will rarely examine full source forks just 
because it's much more time consuming and harder to read than a patch.

> So I have sent you my work based on version 
> 1.3.1. Ah yes, before I forget: this version also contains 5 lines of
> windows compatibility code to make it work on Devcpp.

Windows compatibility code won't go in to the originals simply because I don't 
test on Windows before releases and don't know (or care, really) when or if 
I'm breaking things there.


Had this been an actual emergency, we would have fled in terror, and you would 
not have been informed.

More information about the taglib-devel mailing list