Hello everyone! I'm working on Haskell bindings to libcdio (I have ~plans~ for wrangling my weird music library requirements and/or preferences into a generally usable program suite and just love that language; of course I couldn't simply half-ass the layers nobody cares about...), and in the process of writing those I've come up with a few questions:
* Is there any deliberate reasoning behind 2.1.0 not adding a cdtext_get_language_index(..) with cdtext_select_language_index(..)? Having the means to jump exactly where you want doesn't mean that you can get back to where you started with just cdtext_get_language(..) -- what if we just happen to have been on the /second/ CDTEXT_LANGUAGE_ENGLISH block by some perverse CDTEXT author, or more realistically which of several CDTEXT_LANGUAGE_UNUSED? * What about changing the language of a block? I know libcdio isn't primarily a disc-authoring library, though with cdtext_set(..) and cdio_get_cdtext_raw(..) it can definitely be used constructively -- but without cdtext_set_current_language(..) or similar, there's always a little bit which would need to be tweaked afterward, or empty blocks which need to be generated and piped into cdtext_data_init(..) manually before starting to write anything new. * Likewise should cdtext_set(..) really leave cdtext_get_first_track(..) and cdtext_get_last_track(..) with the original bounds? I'm sure some weirdness might crop up if those don't match with the start/end tracks from the disc as a whole, but on the other hand I didn't expect the current behaviour and I'm sure I'm not the only one -- at the very least, it should be documented. * On a less general note, is there any API or #define means to disable or redirect the warning messages printed to stdout? I still need to figure out how to pass them to the user, but Haskell has a thing about avoiding unexpected side effects, and text suddenly appearing in the terminal certainly counts. * More troublingly, has anyone ever run into issues with CdIo_t sessions locking up your drives? If I call some functions (I don't /think/ it happens across the board, but I haven't gone looking for a pattern yet) the physical button on the front of my drive stops working until I call cdio_eject_media(..) or *_drive(..) from the software side. I know it's an issue with my Haskell, and likely with cdio_destroy(..) not getting called by the garbage collector for some reason, but I figured if anyone had come across before it in earlier development, you could save me time digging to verify that. * Finally, is there a vetting process or anything else I should be aware of for language bindings? It's not ready for prime time yet, as that last question shows, but I will be hoping to release these for public use once I get a bit more patching and polishing done -- at first with just what an "#import <cdio/cdio.h>" will get you, but eventually with the entire library. Thanks! Sam