windows support: unicode filenames

Windows uses a legacy codepage for char* / runtime functions accepting
char *. Using UTF-8 as the codepage with setlocale() is explicitly
forbidden.

Work this around by overriding the MSVCRT functions with wrapper
macros, that assume UTF-8 and use "proper" API calls like _wopen etc.
to deal with unicode filenames. All code that uses standard functions
that take or return filenames must now include osdep/io.h. stat()
can't be overridden, because MinGW-w64 itself defines "stat" as a
macro. Change code to use use mp_stat() instead.

This is not perfectly clean, but still somewhat sane, and much better
than littering the rest of the mplayer code with MinGW specific hacks.
It's also a bit fragile, but that's actually little different from the
previous situation. Also, MinGW is unlikely to ever include a nice way
of dealing with this.
This commit is contained in:
wm4
2012-02-03 08:05:11 +01:00
committed by Uoti Urpala
parent 24be34f1e9
commit a1244111a7
20 changed files with 342 additions and 66 deletions

View File

@@ -24,6 +24,8 @@
#include <fcntl.h>
#include <unistd.h>
#include "osdep/io.h"
#include "mp_msg.h"
#include "stream.h"
#include "m_option.h"