QUOTE(Mangix @ Oct 22 2006, 03:40)

the FLAC bug still isn't fixed

edit: i'm also wondering about the MSLUR80.dll and MSLUP80.dll files which are included. what are they and why do i need them(getting rid of them makes the codecs not work).
The flac bug isn't fixed? Damn... it was happening in WMP, and i fixed it there. I assumed the same would apply to MPC... i guess i need to get MPC and try. Sorry about that. The cause of that bug was actually in libFLAC (well, it's not so much a bug as an inconsistency)... i had a patched version of 1.1.1, and when i updated to 1.1.2 i forgot to patch it.
MSLUR80.dll etc. are custom C runtimes i built against unicows (unicode emulation for win 9X/ME)... they are similar to MSVCRT80.dll (the default runtime). I basically built my own patched version of these runtimes to include unicode emulation.
I don't know if you remember but in 0.69 and earlier, there were problems with paths that contained unicode characters... which is not such a big deal if you only speak english... but its not very cool if your computer is setup in a language that uses extended characters, ie any cyrillic, and most asian langauges.
The root of the issue is that 95/98/ME don't support the unicode versions of the win32 API. What this means some people do is they have to build two different versions of their software. One that uses unicode for modern windows, and one that doesn't for older windows. If you do any programming, this is the reason for all the TCHAR 's and the windows API functions which end in either A or W to differentiate the unicode and non-unicode versions.
This can be a reasonable approach if you don't mind shipping two different versions of your software, and you don't mind having places all through your code where in the unicode version, one bit of code is used, and in the other version, the non-unicode version is used. It's a major maintenance problem. A lot of the TCHAR, win32 api macros avoid the need for a lot of this, but in places where you have to interface onto other software which requires 16 bit unicode, or requires UTF8, it starts to cause a problem.
In general if you don't consistently use unicode everywhere, its much harder to test, and much easier to make little mistakes that only affect one or the other.
There's really three choices...
a) Ship a unicode and non-unicode version
b) Stop support for 9X/ME
c) Use an emulation layer, so that it adds unicode support to 9X/ME
Both a and b are a problem. As much as i'd be happy to not support 9X/ME anymore, other software uses and distributes oggcodecs, and it would potentially mean that i would be forcing them to also ship their product in two versions, or not support 9X/ME. And there are at least a couple of people left out there who do use 98 or ME.
I may find a better compromise in the future, but for now this seems to be the most robust solution.
(Sorry, that was a long explanation!)