CHANGES for 0.9 (tags/0.9)
otherwise path, which is filled by the garbage that's on the stack, may not end with a NUL byte. main_enqueue fails with "malformed data" if the path sent doesn't end with a NUL. (i.e. the fact that in every case the path is NUL-terminated is not relevant. For semplicity, I'm working with paths long PATH_MAX bytes and only checking that path[PATH_MAX-1] is NUL when handling the imsgs.) Issue reported by Dirk-Wilhelm Peters, thanks!
CHANGES for 0.8 (tags/0.8)
not only directories... I guess we can't do much even with sockets, fifos or character devices. (symbolic links are still supported since we follow them)
the API is a bit of a shitshow. op_fdopen is just a wrapper around FILE*, but returns void* for don't know what Windows limitation. if op_open_callbacks fails we have to free the stream by ourselves. the documentation implies that this void* pointer is, in fact, a FILE*.
avoids a sio_stop in the common case of switching from song that needs similar params (such as tracks in the same album.)