X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b36de7d0ce8dc013057ad0bc27f5b20cf209f6c9..4a2d030adfa836f6ada1830c9057170d053bcc64:/src/msw/mslu.cpp diff --git a/src/msw/mslu.cpp b/src/msw/mslu.cpp index 6975dc0ded..eb6cf1bd6e 100644 --- a/src/msw/mslu.cpp +++ b/src/msw/mslu.cpp @@ -1,29 +1,45 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/mslu.cpp +// Name: src/msw/mslu.cpp // Purpose: Fixes for bugs in MSLU // Author: Vaclav Slavik // Modified by: // Created: 2002/02/17 -// RCS-ID: $Id$ // Copyright: (c) 2002 Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop + #include #endif #ifndef WX_PRECOMP - #include "wx/defs.h" + #include "wx/utils.h" #endif +#define wxHAS_HUGE_FILES + +//------------------------------------------------------------------------ +// Check for use of MSLU +//------------------------------------------------------------------------ + +#if wxUSE_BASE + +bool WXDLLIMPEXP_BASE wxUsingUnicowsDll() +{ +#if wxUSE_UNICODE_MSLU + return (wxGetOsVersion() == wxOS_WINDOWS_9X); +#else + return false; +#endif +} + +#endif // wxUSE_BASE + + #if wxUSE_UNICODE_MSLU //------------------------------------------------------------------------ @@ -46,15 +62,11 @@ #include #include -#ifdef __GNUWIN32__ - #include -#endif - #ifdef __VISUALC__ #include #endif -// Undef redirection macros defined in wx/msw/mslu.h: +// Undef redirection macros defined in wx/msw/wrapwin.h: #undef DrawStateW #undef GetOpenFileNameW #undef GetSaveFileNameW @@ -76,7 +88,7 @@ WXDLLEXPORT int wxMSLU_DrawStateW(WXHDC dc, WXHBRUSH br, WXFARPROC outputFunc, if ( wxUsingUnicowsDll() ) { - return DrawStateA((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, + return DrawStateA((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, (LPARAM)(const char*) wxConvLocal.cWX2MB((const wxChar*)lData), wData, x, y, cx, cy, flags); @@ -109,7 +121,7 @@ static void wxFixOPENFILENAME(LPOPENFILENAME ofn) ofn->nFileOffset = wxStrlen(ofn->lpstrFile)+1; } } -#endif +#endif // OFN_EXPLORER } WXDLLEXPORT int wxMSLU_GetOpenFileNameW(void *ofn) @@ -134,66 +146,91 @@ WXDLLEXPORT int wxMSLU_GetSaveFileNameW(void *ofn) // Missing libc file manipulation functions in Win9x //------------------------------------------------------------------------ -WXDLLEXPORT int wxMSLU__trename(const wxChar *oldname, const wxChar *newname) +#if wxUSE_BASE + +WXDLLIMPEXP_BASE int wxMSLU__wrename(const wchar_t *oldname, + const wchar_t *newname) { if ( wxUsingUnicowsDll() ) return rename(wxConvFile.cWX2MB(oldname), wxConvFile.cWX2MB(newname)); else - return _trename(oldname, newname); + return _wrename(oldname, newname); } -WXDLLEXPORT int wxMSLU__tremove(const wxChar *name) +WXDLLIMPEXP_BASE int wxMSLU__wremove(const wchar_t *name) { if ( wxUsingUnicowsDll() ) return remove(wxConvFile.cWX2MB(name)); else - return _tremove(name); + return _wremove(name); } -#if defined( __VISUALC__ ) \ - || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ - || ( defined(__MWERKS__) && defined(__WXMSW__) ) +WXDLLIMPEXP_BASE FILE* wxMSLU__wfopen(const wchar_t *name,const wchar_t* mode) +{ + if ( wxUsingUnicowsDll() ) + return fopen(wxConvFile.cWX2MB(name),wxConvFile.cWX2MB(mode)); + else + return _wfopen(name,mode); +} -WXDLLEXPORT int wxMSLU__wopen(const wxChar *name, int flags, int mode) +WXDLLIMPEXP_BASE FILE* wxMSLU__wfreopen(const wchar_t *name, + const wchar_t* mode, + FILE *stream) { if ( wxUsingUnicowsDll() ) - return _open(wxConvFile.cWX2MB(name), flags, mode); + return freopen(wxConvFile.cWX2MB(name), wxConvFile.cWX2MB(mode), stream); else - return _wopen(name, flags, mode); + return _wfreopen(name, mode, stream); } -WXDLLEXPORT int wxMSLU__waccess(const wxChar *name, int mode) +WXDLLIMPEXP_BASE int wxMSLU__wopen(const wchar_t *name, int flags, int mode) { if ( wxUsingUnicowsDll() ) - return _access(wxConvFile.cWX2MB(name), mode); + return wxCRT_OpenA(wxConvFile.cWX2MB(name), flags, mode); else - return _waccess(name, mode); + return wxCRT_OpenW(name, flags, mode); } -WXDLLEXPORT int wxMSLU__wmkdir(const wxChar *name) +WXDLLIMPEXP_BASE int wxMSLU__waccess(const wchar_t *name, int mode) { if ( wxUsingUnicowsDll() ) - return _mkdir(wxConvFile.cWX2MB(name)); + return wxCRT_AccessA(wxConvFile.cWX2MB(name), mode); else - return _wmkdir(name); + return wxCRT_AccessW(name, mode); } -WXDLLEXPORT int wxMSLU__wrmdir(const wxChar *name) +WXDLLIMPEXP_BASE int wxMSLU__wchmod(const wchar_t *name, int mode) { if ( wxUsingUnicowsDll() ) - return _rmdir(wxConvFile.cWX2MB(name)); + return wxCRT_ChmodA(wxConvFile.cWX2MB(name), mode); else - return _wrmdir(name); + return wxCRT_ChmodW(name, mode); } -WXDLLEXPORT int wxMSLU__wstat(const wxChar *name, struct _stat *buffer) +WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wchar_t *name) { if ( wxUsingUnicowsDll() ) - return _stat((const char*)wxConvFile.cWX2MB(name), buffer); + return wxCRT_MkDirA(wxConvFile.cWX2MB(name)); else - return _wstat(name, buffer); + return wxCRT_MkDirW(name); } -#endif +WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wchar_t *name) +{ + if ( wxUsingUnicowsDll() ) + return wxCRT_RmDirA(wxConvFile.cWX2MB(name)); + else + return wxCRT_RmDirW(name); +} + +WXDLLIMPEXP_BASE int wxMSLU__wstat(const wchar_t *name, wxStructStat *buffer) +{ + if ( wxUsingUnicowsDll() ) + return wxCRT_StatA((const char*)wxConvFile.cWX2MB(name), buffer); + else + return wxCRT_StatW(name, buffer); +} + +#endif // wxUSE_BASE #endif // wxUSE_UNICODE_MSLU