diff options
author | wm4 <wm4@mplayer2.org> | 2012-02-03 08:05:11 +0100 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2012-03-09 20:48:54 +0200 |
commit | a1244111a790bbc4bf91b078ebcad3f415da79da (patch) | |
tree | bbbb99a7364b7ee4eaa96a44930f84a88db25090 /stream/stream_cddb.c | |
parent | 24be34f1e9e37111a06108c090324426aff6f1db (diff) | |
download | mpv-a1244111a790bbc4bf91b078ebcad3f415da79da.tar.bz2 mpv-a1244111a790bbc4bf91b078ebcad3f415da79da.tar.xz |
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.
Diffstat (limited to 'stream/stream_cddb.c')
-rw-r--r-- | stream/stream_cddb.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/stream/stream_cddb.c b/stream/stream_cddb.c index afc512e5b7..aab557ab86 100644 --- a/stream/stream_cddb.c +++ b/stream/stream_cddb.c @@ -36,11 +36,8 @@ #include <unistd.h> #include <string.h> #include <limits.h> +#include "osdep/io.h" #if defined(__MINGW32__) || defined(__CYGWIN__) -#ifdef __MINGW32__ -#include <path.h> -#define mkdir(a,b) mkdir(a) -#endif #include <windows.h> #if HAVE_WINSOCK2_H #include <winsock2.h> @@ -53,6 +50,7 @@ #include <sys/stat.h> #include "mp_msg.h" +#include "path.h" #if defined(__linux__) #include <linux/cdrom.h> @@ -472,7 +470,6 @@ static int cddb_read_cache(cddb_data_t *cddb_data) static int cddb_write_cache(cddb_data_t *cddb_data) { // We have the file, save it for cache. - struct stat file_stat; char file_name[100]; int file_fd, ret; int wrote = 0; @@ -481,8 +478,7 @@ static int cddb_write_cache(cddb_data_t *cddb_data) return -1; // Check if the CDDB cache dir exist - ret = stat(cddb_data->cache_dir, &file_stat); - if (ret < 0) { + if (!mp_path_exists(cddb_data->cache_dir)) { // Directory not present, create it. ret = mkdir(cddb_data->cache_dir, 0755); #ifdef __MINGW32__ |