From: Václav Slavík Date: Mon, 31 Dec 2001 00:45:29 +0000 (+0000) Subject: added workaround for Unicode functions not working under MSLU X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/6de5b5991970f0b3a434e5b1b30b84cdb0535969 added workaround for Unicode functions not working under MSLU git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/filefn.h b/include/wx/filefn.h index e076faacfc..b235f2b1dc 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -80,7 +80,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString; #define wxTell _tell #if wxUSE_UNICODE - #define wxOpen _wopen + #if wxUSE_UNICODE_MSLU + WXDLLEXPORT int wxOpen(const wxChar *name, int flags, int mode); + #else + #define wxOpen _wopen + #endif #define wxAccess _waccess #define wxMkDir _wmkdir diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index fc22b03128..4bbe6747d1 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -1764,3 +1764,28 @@ bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special ) #ifdef __VISUALC__ #pragma warning(default:4706) // assignment within conditional expression #endif // VC++ + +//------------------------------------------------------------------------ +// Missing functions in Unicode for Win9x +//------------------------------------------------------------------------ + +// NB: MSLU only covers Win32 API, it doesn't provide Unicode implementation of +// libc functions. Unfortunately, some of MSVCRT wchar_t functions +// (e.g. _wopen) don't work on Windows 9x, so we have to workaround it +// by calling the char version. We still want to use wchar_t version on +// NT/2000/XP, though, because they allow for Unicode file names. +#if wxUSE_UNICODE_MSLU + + #if defined( __VISUALC__ ) \ + || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ + || ( defined(__MWERKS__) && defined(__WXMSW__) ) + WXDLLEXPORT int wxOpen(const wxChar *name, int flags, int mode) + { + if ( wxGetOsVersion() == wxWINDOWS_NT ) + return _wopen(name, flags, mode); + else + return _open(wxConvFile.cWX2MB(name), flags, mode); + } + #endif + +#endif // wxUSE_UNICODE_MSLU