IRC log of musicbrainz on 2004-08-01
Timestamps are in UTC.
- 00:06:14 [Knio]
- Knio has quit
- 00:06:22 [Knio]
- Knio has joined #musicbrainz
- 00:08:02 [MacIntire]
- MacIntire has joined #musicbrainz
- 00:35:34 [enyawix]
- enyawix has joined #musicbrainz
- 00:43:28 [Knio]
- Knio is now known as Knio-dinner
- 00:44:01 [enyawix]
- enyawix has left #musicbrainz
- 00:53:40 [MacIntire]
- MacIntire has quit
- 01:10:04 [Knio-dinner]
- Knio-dinner is now known as Knio
- 01:27:43 [MacIntire]
- MacIntire has joined #musicbrainz
- 02:10:11 [MacIntire]
- MacIntire has quit
- 02:10:34 [MacIntire]
- MacIntire has joined #musicbrainz
- 02:45:01 [MacIntire]
- MacIntire has quit
- 03:02:39 [real]
- real has quit
- 03:06:20 [tma]
- tma has joined #musicbrainz
- 03:07:49 [real_]
- real_ has joined #musicbrainz
- 03:40:29 [MacIntire]
- MacIntire has joined #musicbrainz
- 04:11:23 [MacIntire]
- MacIntire has quit
- 04:12:09 [MacIntire]
- MacIntire has joined #musicbrainz
- 05:30:20 [MacIntire]
- MacIntire has quit
- 05:30:39 [MacIntire]
- MacIntire has joined #musicbrainz
- 05:43:29 [lgonze]
- lgonze has quit
- 05:44:36 [orogor]
- orogor has joined #musicbrainz
- 06:07:05 [Knio_]
- Knio_ has joined #musicbrainz
- 06:07:06 [Knio]
- Knio has quit
- 06:11:24 [MacIntire]
- MacIntire has quit
- 06:11:49 [MacIntire]
- MacIntire has joined #musicbrainz
- 06:19:23 [orogor]
- orogor has quit
- 06:26:18 [tma]
- tma has quit
- 06:32:29 [tma]
- tma has joined #musicbrainz
- 07:11:56 [Knio_]
- Knio_ has quit
- 07:22:00 [MacIntire]
- MacIntire has quit
- 07:49:07 [Knio2]
- Knio2 has joined #musicbrainz
- 08:06:45 [Knio]
- Knio has joined #musicbrainz
- 08:08:56 [Knio2]
- Knio2 has quit
- 08:38:32 [Knio]
- Knio has quit
- 08:40:02 [Knio]
- Knio has joined #musicbrainz
- 09:00:18 [Knio]
- Knio is now known as Knio-sleep
- 09:06:09 [djce]
- djce has joined #musicbrainz
- 09:06:43 [djce]
- Hey tma. How's it going?
- 10:43:58 [MacIntire]
- MacIntire has joined #musicbrainz
- 10:50:36 [Knio]
- Knio has joined #musicbrainz
- 10:53:32 [Knio-sleep]
- Knio-sleep has quit
- 11:08:14 [tma]
- hi dave
- 11:26:25 [MacIntire]
- MacIntire has quit
- 11:26:35 [MacIntire]
- MacIntire has joined #musicbrainz
- 12:10:44 [MacIntire]
- MacIntire has quit
- 12:10:57 [MacIntire]
- MacIntire has joined #musicbrainz
- 12:28:05 [lgonze]
- lgonze has joined #musicbrainz
- 12:39:32 [MacIntire]
- MacIntire has quit
- 12:39:48 [MacIntire]
- MacIntire has joined #musicbrainz
- 13:00:11 [tma]
- tma has quit
- 13:18:22 [MacIntire]
- MacIntire has quit
- 13:19:27 [MacIntire]
- MacIntire has joined #musicbrainz
- 13:39:42 [wheels]
- wheels has quit
- 13:45:43 [wheels]
- wheels has joined #musicbrainz
- 14:21:08 [MacIntire]
- MacIntire has quit
- 14:29:16 [somniloquy]
- somniloquy has quit
- 15:03:57 [Knio]
- Knio has quit
- 15:23:14 [Knio]
- Knio has joined #musicbrainz
- 15:29:30 [cool]
- cool has joined #musicbrainz
- 15:29:41 [cool]
- hi guys
- 15:34:33 [cool]
- cool has left #musicbrainz
- 15:41:32 [MacIntire]
- MacIntire has joined #musicbrainz
- 15:45:10 [somniloquy]
- somniloquy has joined #musicbrainz
- 15:47:33 [real_]
- real_ is now known as real
- 16:10:05 [real]
- real has left #musicbrainz
- 16:14:17 [real_]
- real_ has joined #musicbrainz
- 16:14:48 [real_]
- real_ is now known as real
- 16:22:33 [real]
- real has quit
- 16:33:03 [real_]
- real_ has joined #musicbrainz
- 16:46:00 [Knio_]
- Knio_ has joined #musicbrainz
- 16:46:21 [Knio]
- Knio has quit
- 16:51:48 [wheels]
- wheels has quit
- 16:52:54 [wheels]
- wheels has joined #musicbrainz
- 17:13:38 [MacIntire]
- MacIntire has quit
- 17:13:57 [MacIntire]
- MacIntire has joined #musicbrainz
- 18:08:34 [Knio_]
- Knio_ has quit
- 18:08:39 [Knio]
- Knio has joined #musicbrainz
- 18:13:14 [lgonze]
- lgonze has quit
- 18:49:29 [ruaok]
- ruaok has joined #musicbrainz
- 18:49:34 [ruaok]
- yawn.
- 18:49:39 [ruaok]
- home at last
- 18:50:59 [djce]
- hey ruaok !
- 18:51:03 [ruaok]
- hey
- 18:51:06 [djce]
- welcome back.
- 18:51:08 [ruaok]
- how are things in .uk?
- 18:51:11 [ruaok]
- thanks.
- 18:51:16 [djce]
- warmish, and lazy.
- 18:51:18 [ruaok]
- what a long and strange trip that was.
- 18:51:20 [djce]
- which is nice.
- 18:51:24 [ruaok]
- good.
- 18:51:35 [ruaok]
- the talk went well.
- 18:51:56 [djce]
- Cool. I Was thinking about staying up for the chat, but I was dead beat that day.
- 18:51:56 [ruaok]
- perhaps too well - a couple people approached me about using our replication in their project.
- 18:52:05 [djce]
- Is that a bad thing?
- 18:52:16 [ruaok]
- no, except it means more work for us. :-)
- 18:52:22 [djce]
- Hah! :-)
- 18:52:32 [ruaok]
- at some point I need to seperate out the replication stuff into a seperate project.
- 18:52:42 [djce]
- I've been hacking on better Unicode support for FreeDB this weekend.
- 18:52:59 [djce]
- and I need to bounce some replication-related ideas off you some time.
- 18:53:20 [ruaok]
- for importing data from freedb??
- 18:53:24 [djce]
- Yes.
- 18:53:46 [djce]
- That is, Unicode: yes. replication, no that's a separate thing.
- 18:54:18 [ruaok]
- ight.
- 18:54:32 [ruaok]
- well, today my presence will be spotty.
- 18:54:46 [djce]
- np. no hurry.
- 18:54:47 [ruaok]
- unpacking, napping, putting out serious fires.
- 18:54:54 [ruaok]
- I should have some time tomorrow.
- 18:56:48 [djce]
- OK. I'll send you a synopsis, in case you want to take a look.
- 18:57:17 [ruaok]
- cool.
- 19:09:26 [ruaok]
- * ruaok reads
- 19:10:18 [djce]
- there's another message to come... still writing that one...
- 19:15:05 [ruaok]
- I'm glad to see freedb is making some progress.
- 19:15:22 [ruaok]
- all that sounds good -- go ahead and merge that branch in.
- 19:15:36 [ruaok]
- the next thing that I need to work on is the TRM feeback improvements.
- 19:15:51 [ruaok]
- 'tis a fair amount of work, but its getting increasingly important.
- 19:19:36 [djce]
- ok. Almost done with the second message... :-)
- 19:28:50 [djce]
- sent
- 19:34:28 [djce]
- * djce is away: food
- 19:34:30 [ruaok]
- ohhhh
- 19:34:35 [djce]
- ?
- 19:34:36 [ruaok]
- I really like your second mail.
- 19:34:44 [djce]
- * djce is back (gone 00:00:16)
- 19:34:46 [ruaok]
- that will make a freedb front end mirror trivial.
- 19:34:54 [ruaok]
- * ruaok *really* likes it.
- 19:34:59 [djce]
- Where we have the data, yes
- 19:35:11 [djce]
- Not for FreeDB imports though
- 19:35:16 [ruaok]
- yes.
- 19:35:19 [djce]
- not unless a CDIndex ID was added too
- 19:36:06 [ruaok]
- cool.
- 19:36:28 [ruaok]
- I have some things that we need to consider on this issue.
- 19:36:35 [ruaok]
- I'll try and respond in detail later.
- 19:36:40 [ruaok]
- bon appetit!
- 19:36:47 [djce]
- ok
- 19:36:48 [djce]
- later!
- 19:36:50 [djce]
- * djce is away: food
- 19:36:56 [ruaok]
- * ruaok is away: GF maintenance
- 19:43:26 [roz]
- roz has joined #musicbrainz
- 19:44:13 [roz]
- i figure this is kinda sorta relevent in here....... so i will post it. I want a free Ipod...... maybe you do too..... go here and get one: http://www.freeiPods.com/default.aspx?referer=7565361
- 19:44:49 [roz]
- its real. google for freeipods....... its all over people are getting free ipods
- 19:47:40 [RJ]
- pyramid scheme?
- 19:49:28 [roz]
- yes
- 19:49:37 [roz]
- but its from a reputable pyramid schemer
- 19:49:42 [RJ]
- haha
- 19:50:16 [roz]
- its the largest internet ad agency on the web
- 19:50:21 [roz]
- from what i can find out
- 19:51:06 [RJ]
- you probably have about as much chance of 'winning' as you do with a lottery.. meanwhile they scammed lots of people in to filling out their survey, whatever that may be
- 19:51:36 [RJ]
- </cynic>
- 19:52:31 [roz]
- its not a "winning"
- 19:52:57 [roz]
- its you get 5 people to sign up for ebay....... or evil aol..... ........... both of those dont cost a penny......
- 19:53:04 [roz]
- and bam
- 19:53:10 [roz]
- you get an ipod in 2 weeksd
- 19:56:08 [roz]
- there are "howtos" all over the net
- 19:56:53 [roz]
- if you do the ebay link, you have to sign up for ebay, and place a high bid on an item that you wont win........... like $5 for a laptop worth $500
- 19:57:29 [real_]
- can you use proxies and shit
- 19:57:29 [real_]
- real_ is now known as real
- 19:57:50 [roz]
- proxy bidders you mean?
- 19:58:01 [real]
- no sign up for ebay 5 times
- 19:58:04 [real]
- to get 5 refferrals
- 19:58:16 [roz]
- no
- 19:58:22 [real]
- how will they know
- 19:58:42 [roz]
- they have to be 5 different people ..... different addresses
- 19:58:49 [real]
- yea different credit cards
- 19:58:49 [roz]
- i mean i suppose u could circumvent it ..........
- 19:58:58 [real]
- anyways, the ipod place wouldnt have access to ebay's stuff
- 19:59:04 [real]
- they wouldnt be able to see my address
- 19:59:10 [roz]
- but i wouldnt really try....... its not hard to get 5 people.....
- 19:59:24 [real]
- is too
- 20:00:17 [roz]
- they do investigations.....
- 20:00:29 [real]
- who does
- 20:00:51 [roz]
- before they approve you
- 20:01:00 [roz]
- the ipod place
- 20:01:09 [real]
- what if i sign up my grandma, grandpa and mom and dad and brother
- 20:01:11 [roz]
- and considering ebay is PAYING for your ipod.......
- 20:01:13 [real]
- all same addy, same ip etc
- 20:01:26 [roz]
- It says 1 per household address
- 20:01:31 [real]
- bastards
- 20:01:50 [real]
- have to bend over just to get an ipod
- 20:01:56 [roz]
- considering ebay Pays for your ipos
- 20:01:58 [roz]
- ipod
- 20:02:18 [real]
- could you sign up someoen for both aol and ebay
- 20:02:25 [roz]
- nope
- 20:02:29 [real]
- :[
- 20:02:34 [roz]
- thatd be nice :)
- 20:12:37 [roz]
- i have a domain
- 20:12:42 [roz]
- so i use one email for this
- 20:12:50 [roz]
- and then once i get my ipod
- 20:12:54 [roz]
- i can turn it off
- 20:12:56 [roz]
- if i want
- 20:18:57 [wheels]
- wheels has quit
- 20:29:03 [wheels]
- wheels has joined #musicbrainz
- 20:54:38 [Raph0Sk8er]
- Raph0Sk8er has joined #musicbrainz
- 20:55:09 [Raph0Sk8er]
- Raph0Sk8er has left #musicbrainz
- 20:55:25 [wheels]
- Heh. Mmm. Pyramid schemes. ;-)
- 20:55:37 [wheels]
- ruaok: Oh, and now that you're here I can pester you. ;-)
- 21:02:26 [MacIntire]
- MacIntire has quit
- 21:12:58 [MacIntire]
- MacIntire has joined #musicbrainz
- 21:26:43 [roz]
- wheels
- 21:26:48 [roz]
- its real though
- 21:26:54 [roz]
- People are getting ipods
- 21:31:49 [wheels]
- ruaok: So there are definitely two callbacks happening per event. Or I'm on crack.
- 22:05:33 [ruaok]
- wheels: you still using 0.3.0 ??
- 22:05:38 [ruaok]
- * ruaok is back (gone 02:28:43)
- 22:05:51 [wheels]
- ruaok: Yeah, remember -- this is for stuff that'll be released in a couple of weeks.
- 22:06:26 [wheels]
- ruaok: I've worked around it in my code, but was just pointing it out in case it comes up elsewhere.
- 22:07:11 [wheels]
- ruaok: And a couple days ago I was confused by what actually was being returned by GetResults and when it should be called, but I think I have that clear now.
- 22:09:21 [ruaok]
- cool.
- 22:09:38 [ruaok]
- I think I've got some of the callback issues sorted in the CVS code for 0.4.0.
- 22:10:06 [wheels]
- before 0.4 comes I'll try to compile / port it just to make sure.
- 22:10:18 [ruaok]
- ok
- 22:10:45 [wheels]
- But right now I'm looking at a freeze in about 2 days and not everything's working yet. :-)
- 22:10:58 [ruaok]
- ick.
- 22:11:03 [ruaok]
- anything I can shed some light on?
- 22:11:51 [wheels]
- Well, I think I fixed it before I went out to the movies, but haven't gotten around to testing it. Just got in and dealt with finding food in the last hour.
- 22:12:16 [ruaok]
- ok.
- 22:12:20 [ruaok]
- drop me a line if you have issues.
- 22:12:29 [ruaok]
- I'll be online spottily today.
- 22:32:25 [somniloquy]
- somniloquy is now known as somnolent
- 22:34:08 [Pipian]
- Hey wheels
- 22:34:14 [Pipian]
- you did that other tag library right? =P
- 22:34:21 [Pipian]
- "That other tag library" =P
- 22:34:35 [wheels]
- guilty :-)
- 22:34:42 [Pipian]
- Ah
- 22:34:45 [Pipian]
- who am I kidding
- 22:34:52 [Pipian]
- you're the only one that's production-quality =P
- 22:35:05 [Pipian]
- But I've actually got a plan if I can get off my lazy ass and rewrite the code
- 22:35:17 [Pipian]
- Switching to a more logical interface.
- 22:35:38 [wheels]
- * wheels just released 1.2 last week...
- 22:35:40 [Pipian]
- gets and sets, and nested structs with linked lists and what not.
- 22:35:55 [Pipian]
- course the thing is, nothing exists but the header file =P
- 22:37:12 [Pipian]
- Lots and lots of functions... But it's probably a bit smarter and easier to use (ironically)
- 22:37:54 [Pipian]
- Care to take a look at the header file, out of curiosity?
- 22:38:14 [Pipian]
- So you can laugh at the pitiful competition =P
- 22:39:12 [wheels]
- Sure. Likely sans laughing. :-)
- 22:39:26 [Pipian]
- e-mail?
- 22:39:44 [wheels]
- or web or whatever. It's all just abstract IO to me. :-)
- 22:39:45 [Pipian]
- you'd probably appreciate the additional annotation that isn't present int he header.
- 22:40:05 [wheels]
- * wheels == wheeler@kde.org
- 22:40:40 [Pipian]
- And thus the difference once again
- 22:40:56 [Pipian]
- you aim for KDE/QT/C++ and I use Gnome/GTK/C =P
- 22:41:40 [wheels]
- Well, I aim for world domination, mostly. And programming is fun too.
- 22:42:46 [wheels]
- Though someone mentioned at one point that I might actually have wheeler@gnome.org -- I've never actually tried it though. :-)
- 22:43:06 [wheels]
- * wheels has a CVS account for GStreamer, though now it's on Freedesktop.org.
- 22:43:33 [Pipian]
- Sent.
- 22:43:41 [Pipian]
- I'm content enough with pipian@pipian.com
- 22:43:56 [Pipian]
- and once the stupid registrar stops locking it, pipian@pipian.net
- 22:46:08 [wheels]
- Pipian: One thing that I notice quickly -- in C I tend to avoid declaring the types in the public interface unless you're really sure that they're premanent.
- 22:46:14 [wheels]
- Pipian: ...since you can't add or remove anything otherwise.
- 22:46:35 [Pipian]
- True
- 22:46:43 [Pipian]
- Example?
- 22:47:13 [Pipian]
- (Most I'm fairly certain on how they'd be used, at least the sets and gets...)
- 22:47:57 [wheels]
- Pipian: Here's the C interface for TagLib: http://webcvs.kde.org/cgi-bin/cvsweb.cgi/kdesupport/taglib/bindings/c/tag_c.h?rev=1.7.4.1&content-type=text/x-cvsweb-markup
- 22:48:26 [Pipian]
- (I might not have implemented them right, but I know how it would work. The gets ideally work similar to sprintf, and the sets return success or lack of such)
- 22:48:29 [wheels]
- Pipian: If you just do a forward declaration and then just pass around the pointer so long as the functions keep working you can change the underlying data structures all you want.
- 22:49:43 [Pipian]
- you mean like your typedefs right at the beginning?
- 22:50:08 [wheels]
- Pipian: Well, those are to bind it to C++ types in the background.
- 22:50:24 [wheels]
- Pipian: I just cast those to C++ classes in the implementation.
- 22:50:28 [Pipian]
- Clarify then?
- 22:51:56 [wheels]
- Pipian: Well, like TagLib_Tag is actually just a pointer to TagLib::Tag (http://ktown.kde.org/~wheeler/taglib/api/classTagLib_1_1Tag.html), but since I obviously can't have C++ types in the interface I just created a dummy type for the pointer.
- 22:53:01 [wheels]
- Pipian: So something like taglib_tag_title(TagLib_Tag *tag) gets translated to reinterpret_cast<TagLib::Tag *>(tag)->title().toCString()
- 22:53:26 [Pipian]
- Ah
- 22:53:34 [Pipian]
- Well how does that apply to the forward declaration part?
- 22:54:19 [Pipian]
- Or am I missing something?
- 22:55:52 [wheels]
- Pipian: I'm trying to remember if you need a dummy type in C -- I think so, now that I think of it.
- 22:56:20 [wheels]
- * wheels rarely does object oriented C, which is basically what this is.
- 22:57:42 [Pipian]
- Can you maybe get to the point as I'm kinda groping through the fog trying to understand
- 22:57:59 [wheels]
- I thought I did. :-)
- 22:58:05 [Pipian]
- Well
- 22:58:17 [Pipian]
- you said "I tend to avoid declaring the types in the public interface unless you're really sure that they're premanent."
- 22:58:24 [Pipian]
- But I kinda lost you after that
- 22:58:32 [wheels]
- Pipian: The point is that by hiding the type you have more flexibility while maintaining binary compatibility in the interface.
- 22:59:00 [wheels]
- Pipian: If you don't expose what it contains you can change that. If you do, you can't (without breaking backwards compatibility).
- 22:59:33 [Pipian]
- so basically I should redefine any points where I use those special types to something like a void pointer.
- 22:59:51 [Pipian]
- instead of a pointer to the exact type.
- 23:00:05 [wheels]
- Pipian: Well, but coming up with a dummy type at least gives you the guise of type safety.
- 23:00:25 [wheels]
- Pipian: Well, and not have the structs in the header, but in the C file.
- 23:00:52 [Pipian]
- I mean, the structs are pretty open now (unlike the previous ones) where I don't see much changing
- 23:01:33 [Pipian]
- but in case, you would suggest I basically move the structs and create a dummy type (like your typedef struct { int dummy; }) instead...
- 23:01:41 [wheels]
- Pipian: See -- let's say that you release it as is. Then you realize you forgot something important before the next release. Because previously existing code might have allocated some of your structs on the stack they can't change their size -- you can't add new members without breaking existing stuff. And normally in a library you don't want to break compatibility more than every couple of years.
- 23:02:19 [wheels]
- Pipian: Well, that's how I would do it. You are of course free to do things most any way you like. :-)
- 23:02:30 [Pipian]
- I *AM* sticking with pointers, rather than strait structs, which is a bit safer, no?
- 23:03:00 [Pipian]
- But by masking it as an int, it avoids even the pretense of a bad struct
- 23:03:32 [Pipian]
- but if such is the case, wouldn't you sorta lose something in the transition of a pointer to an int?
- 23:03:35 [wheels]
- Pipian: Not really. Because someone could now (doesn't mean that they'd have to have a sane reason for such) could do "filedata_t foo;" -- that'll blow up if things change.
- 23:03:54 [Pipian]
- So basically I'd want to mask it so that they can't make that mistake
- 23:04:27 [Pipian]
- I force the use of pointers by not exposing such to the developers?
- 23:04:35 [wheels]
- Yeah, basically.
- 23:04:50 [Pipian]
- then why are you using double pointers?
- 23:04:54 [Pipian]
- in your functions that is?
- 23:05:00 [wheels]
- And of course this is just me -- and I'm mostly a C++ wanker...and I hate libs that break BC more than a few times a decade. :-)
- 23:05:06 [Pipian]
- e.g. "void taglib_file_free(TagLib_File *file);"
- 23:05:16 [Pipian]
- I suppose that's to use standard practice
- 23:05:20 [Pipian]
- but the dummy protection
- 23:05:39 [Pipian]
- is to prevent against stupid coders who don't know to use pointers from the beginning in the first place?
- 23:05:46 [wheels]
- Pipian: Because for the interface I'm pretending that TagLib_File is a real type. And it's being passed by pointer. In fact it represents a real type.
- 23:06:18 [Pipian]
- Even though the real type is just another pointer in disguise...
- 23:06:25 [wheels]
- Pipian: Well, anything that you expose you have to take care of. Every library programmer has to be prepared for people to abuse the interface in any way that's technically possible. :-)
- 23:07:25 [Pipian]
- So as I said, it's to make it normal protocol for normal programmers (who would expect to abstract as a pointer for such functions)
- 23:07:44 [wheels]
- Yeah.
- 23:08:01 [Pipian]
- While still allowing stupid ones to not break programs by defining a TagLib_File and then passing "&file" to the function
- 23:08:42 [wheels]
- Pipian: Well, TagLib_File is completely meaningless -- that's kind of the idea.
- 23:08:52 [Pipian]
- Right
- 23:08:58 [Pipian]
- It represents something specific in the end
- 23:09:40 [Pipian]
- but you could pass a TagLib_Tag that carries a pointer to a TagLib::File and cast it as a TagLib_File and have it work fine of course
- 23:09:42 [wheels]
- Pipian: Well, sort of -- if you just defined a TagLib_File and did something to it it simply wouldn't work. Ever. In any version. In your scenario it might actually work in the first version and segfault in the next.
- 23:10:40 [Pipian]
- Supposing that I didn't use dummy variables.
- 23:10:50 [wheels]
- right
- 23:11:11 [wheels]
- The other thing that jumps out at me is no max lenght for the character variables.
- 23:11:18 [wheels]
- s/variable/returns/
- 23:11:19 [Pipian]
- Yes
- 23:11:31 [Pipian]
- I think I'm probly handling it right
- 23:11:40 [Pipian]
- I just need to go back and figure out what I need to base it on
- 23:12:10 [Pipian]
- I'm trying to base it on the expected behavior of normal C string functions
- 23:12:12 [Pipian]
- like sprintf
- 23:12:17 [Pipian]
- and strcat and so forth
- 23:12:38 [Pipian]
- Though I think I should probably go more for snprintf, right?
- 23:13:13 [wheels]
- Pipian: Another pet peeve -- you're using tags for alignment -- which makes things really ugly if someone uses a differnt tab width.
- 23:14:02 [wheels]
- Pipian: Well, you either have to have a maximum size defined somewhere -- #define TAGS_STRING_MAX 2048 -- or the functions have to take an argument for such. Otherwise you'll end up with buffer overflows.
- 23:14:17 [Pipian]
- Right
- 23:14:19 [Pipian]
- I'm thinking
- 23:14:29 [Pipian]
- I need to look at snprintf
- 23:14:32 [Pipian]
- to see what I'm expecting
- 23:14:42 [Pipian]
- I suppose that's better
- 23:14:58 [Pipian]
- because sprintf, I know, returns a size_t representing the number of characters written.
- 23:15:06 [Pipian]
- what I want to do
- 23:15:28 [Pipian]
- is allow for limited numbers of characters, but also figuring out how many characters are present.
- 23:15:32 [Pipian]
- (geting the lengths)
- 23:15:42 [Pipian]
- And I'd rather not add functions for that.
- 23:15:56 [Pipian]
- I know I'm getting confused on that though
- 23:16:41 [Pipian]
- (I could fix the petpeeve too I imagin, by adding a line break between the type and the first var.
- 23:16:53 [wheels]
- Pipian: You can also go the TagLib route and force the user to free the strings and go with a char ** type.
- 23:17:19 [wheels]
- Pipian: Or I also keep track of the mallocs and they can all be freed at once using taglib_free_strings();
- 23:17:29 [Pipian]
- Ah
- 23:17:31 [Pipian]
- so basically
- 23:17:40 [Pipian]
- use internal memory allocation
- 23:17:51 [Pipian]
- instead of allowing for external allocation and frees.
- 23:18:33 [wheels]
- Pipian: that's how I do it
- 23:19:04 [Pipian]
- That's of course been an issue before
- 23:19:06 [wheels]
- Pipian: there's void taglib_set_string_management_enabled(BOOL management);
- 23:19:10 [Pipian]
- either use ALL internal memory allocation
- 23:19:16 [Pipian]
- or NO internal memory allocation
- 23:19:24 [Pipian]
- mixing the two is bad juju
- 23:20:04 [wheels]
- Pipian: Well in my case I leave it up to the user -- they can either turn it on or off. If they leave it off (my string functions return char *) they have to free the strings. If it's on they can be freed with one call.
- 23:20:20 [Pipian]
- *nod*
- 23:20:25 [Pipian]
- I think that route is best.
- 23:20:35 [Pipian]
- That way they can code simple
- 23:20:41 [Pipian]
- or efficiently using memory
- 23:21:32 [wheels]
- Though TagLib tends to be fairly CPU effecient generally things like memory allocation tend to be drowned out in IO performance in a tagging application.
- 23:21:44 [Pipian]
- naturally
- 23:22:04 [Pipian]
- and on machines these days
- 23:22:12 [Pipian]
- where so much memory can be gotten relatively cheap
- 23:22:27 [Pipian]
- memory efficiency is less importnat
- 23:23:14 [wheels]
- Well, and I'd be hard pressed to come up with a situation where TagLib is internally even using 1 MB of memory.
- 23:23:27 [wheels]
- Like it could happen, but it'd be rare.
- 23:24:00 [Pipian]
- indeed.
- 23:24:05 [Pipian]
- And even in such a case
- 23:24:15 [Pipian]
- It's possible that people would want a C implementation
- 23:24:17 [Pipian]
- ^_-
- 23:24:52 [wheels]
- Well, I already know of at least two groups using it on embedded devices.
- 23:24:58 [Pipian]
- true
- 23:25:00 [Pipian]
- but hey
- 23:25:10 [Pipian]
- embedded devices that likely aren't pressed for memory either
- 23:25:34 [Pipian]
- I know where libmetatag is going
- 23:25:40 [Pipian]
- But I still don't know its niche =P
- 23:25:56 [Pipian]
- Oh
- 23:26:11 [Pipian]
- I imagine it would probably be a good thing to start prepping for doxygen now too.
- 23:26:21 [Pipian]
- That way people will HAVE documentation
- 23:26:30 [Pipian]
- instead of harrassing me for stuff that's just plain never gonna happen =P
- 23:26:53 [wheels]
- Well, there are a handful of people using TagLib in C places that they'd rather be using something that's nativly C. But on the other hand GNOME tends to be shifting towards Mono at this point.
- 23:27:05 [Pipian]
- true true
- 23:27:09 [Pipian]
- but as long as there's XMMS
- 23:27:19 [Pipian]
- there's need for my soon to be obsolete library XD
- 23:27:48 [wheels]
- Well, XMMS is pretty obsolete itself. It still works and is popular -- naturally -- but development pretty much stopped a few years ago.
- 23:28:02 [wheels]
- I mean -- it's still using GTK 1...
- 23:29:10 [Pipian]
- exactly
- 23:29:53 [Pipian]
- It would be nice if I had an idea what libmetatag would be used for o.o
- 23:30:14 [Pipian]
- (Python bindings? Nah, you've got that covered, and if not, you'll have it covered long before I get there =P)
- 23:30:19 [wheels]
- Pipian: I had a jukebox application that needed TagLib -- so the impetus was a bit more clear. :-)
- 23:30:33 [wheels]
- Pipian: Someone sent python bindings last week. ;-)
- 23:30:57 [Pipian]
- I have a plugin for XMMS that needed robust tag-reading abilities, so I knew why I was coding.
- 23:32:22 [Pipian]
- problem is
- 23:32:36 [Pipian]
- I don't think anyone else needs my robust tag-reading abilities in C o.o
- 23:33:19 [wheels]
- Well, again -- I'm sure that there would be those that would welcome it if it was ready.
- 23:33:54 [wheels]
- Just the rate at which TagLib has become fairly popular indicates how much most of the options kind of sucked.
- 23:35:50 [Pipian]
- Problem is
- 23:35:56 [Pipian]
- I'm afraid that by the time it IS ready]
- 23:36:09 [Pipian]
- there will no longer be a need =P
- 23:38:00 [wheels]
- Well, that's something that's up to you. I mean -- either go for it or don't. But like I've said before -- even projects that don't have practical application tend to be pretty good teachers.
- 23:38:33 [wheels]
- I mean -- I've got thousands of lines of code that are completely dead and won't ever come back to life -- but I learned a lot in the process.
- 23:40:07 [Pipian]
- True
- 23:40:10 [Pipian]
- and you never know
- 23:40:19 [Pipian]
- If I actually didn't slack off and coded my heart out
- 23:40:24 [Pipian]
- I might actually get it done in a month =P
- 23:41:35 [wheels]
- Well, but stabalizing tends to take a few months. It's almost inversely proportional to the speed at which things were originally coded. :-)
- 23:41:59 [wheels]
- But I was lazy at TagLib -- I mostly hacked at it when I was bored with my other projects for about 2-3 years until I finally got it ready to release.
- 23:44:21 [Pipian]
- right
- 23:44:24 [Pipian]
- but if that were the case
- 23:44:32 [Pipian]
- there's 2-3 years before libmetatag comes out
- 23:44:37 [Pipian]
- by which point it's obsolete =P
- 23:56:30 [wheels]
- Hmm. I seem to be getting really a lot of errors from TRM lookups.