From d5e71e81ecc15691d10b992867e08375c69c7b63 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 25 Apr 2009 15:53:45 +0000 Subject: [PATCH] more order in wxCRT_filefunctions: define A and W versions, just as for everything else and simply map suffix-less versions to the appropriate ones git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/filefn.h | 127 ++++++++++++++++++++---------------------- src/common/filefn.cpp | 2 +- src/msw/mslu.cpp | 44 ++++----------- 3 files changed, 74 insertions(+), 99 deletions(-) diff --git a/include/wx/filefn.h b/include/wx/filefn.h index 892db0ec6f..0c0b020894 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -303,86 +303,81 @@ enum wxFileKind #define wxEof wxPOSIX_IDENT(eof) // then the functions taking strings + + // first the ANSI versions + #define wxCRT_OpenA wxPOSIX_IDENT(open) + #define wxCRT_AccessA wxPOSIX_IDENT(access) + #define wxCRT_MkDirA wxPOSIX_IDENT(mkdir) + #define wxCRT_RmDirA wxPOSIX_IDENT(rmdir) + #ifdef wxHAS_HUGE_FILES + #define wxCRT_StatA wxPOSIX_IDENT(stati64) + #else + // Unfortunately Watcom is not consistent + #if defined(__OS2__) && defined(__WATCOMC__) + #define wxCRT_StatA _stat + #else + #define wxCRT_StatA wxPOSIX_IDENT(stat) + #endif + #endif + + // then wide char ones + #if wxUSE_UNICODE + // special workaround for buggy wopen() in bcc 5.5 + #if defined(__BORLANDC__) && \ + (__BORLANDC__ >= 0x550 && __BORLANDC__ <= 0x551) + WXDLLIMPEXP_BASE int wxCRT_OpenW(const wxChar *pathname, + int flags, mode_t mode); + #else + #define wxCRT_OpenW _wopen + #endif + + #define wxCRT_AccessW _waccess + #define wxCRT_MkDirW _wmkdir + #define wxCRT_RmDirW _wrmdir + #ifdef wxHAS_HUGE_FILES + #define wxCRT_StatW _wstati64 + #else + #define wxCRT_StatW _wstat + #endif + #endif // wxUSE_UNICODE + + + // finally the default char-type versions #if wxUSE_UNICODE #if wxUSE_UNICODE_MSLU // implement the missing file functions in Win9x ourselves - #if defined( __VISUALC__ ) \ - || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ - || ( defined(__MWERKS__) && defined(__WXMSW__) ) \ - || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) \ - || defined(__DMC__) - - WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, - int flags, int mode); - WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, - int mode); - WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name); - WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name); - - #ifdef wxHAS_HUGE_FILES - WXDLLIMPEXP_BASE int - wxMSLU__wstati64(const wxChar *name, wxStructStat *buffer); - #else // !wxHAS_HUGE_FILES - WXDLLIMPEXP_BASE int - wxMSLU__wstat(const wxChar *name, wxStructStat *buffer); - #endif // wxHAS_HUGE_FILES/!wxHAS_HUGE_FILES - #endif // Windows compilers with MSLU support + WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, + int flags, int mode); + WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, + int mode); + WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name); + WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name); + + WXDLLIMPEXP_BASE int + wxMSLU__wstat(const wxChar *name, wxStructStat *buffer); #define wxCRT_Open wxMSLU__wopen #define wxCRT_Access wxMSLU__waccess #define wxCRT_MkDir wxMSLU__wmkdir #define wxCRT_RmDir wxMSLU__wrmdir - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat wxMSLU__wstati64 - #else - #define wxCRT_Stat wxMSLU__wstat - #endif + #define wxCRT_Stat wxMSLU__wstat #else // !wxUSE_UNICODE_MSLU - #ifdef __BORLANDC__ - #if __BORLANDC__ >= 0x550 && __BORLANDC__ <= 0x551 - WXDLLIMPEXP_BASE int wxCRT_Open(const wxChar *pathname, - int flags, mode_t mode); - #else - #define wxCRT_Open _wopen - #endif - #define wxCRT_Access _waccess - #define wxCRT_MkDir _wmkdir - #define wxCRT_RmDir _wrmdir - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat _wstati64 - #else - #define wxCRT_Stat _wstat - #endif - #else - #define wxCRT_Open _wopen - #define wxCRT_Access _waccess - #define wxCRT_MkDir _wmkdir - #define wxCRT_RmDir _wrmdir - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat _wstati64 - #else - #define wxCRT_Stat _wstat - #endif - #endif + #define wxCRT_Open wxCRT_OpenW + #define wxCRT_Access wxCRT_AccessW + #define wxCRT_MkDir wxCRT_MkDirW + #define wxCRT_RmDir wxCRT_RmDirW + #define wxCRT_Stat wxCRT_StatW #endif // wxUSE_UNICODE_MSLU/!wxUSE_UNICODE_MSLU #else // !wxUSE_UNICODE - #define wxCRT_Open wxPOSIX_IDENT(open) - #define wxCRT_Access wxPOSIX_IDENT(access) - #define wxCRT_MkDir wxPOSIX_IDENT(mkdir) - #define wxCRT_RmDir wxPOSIX_IDENT(rmdir) - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat wxPOSIX_IDENT(stati64) - #else - // Unfortunately Watcom is not consistent, so:- - #if defined(__OS2__) && defined(__WATCOMC__) - #define wxCRT_Stat _stat - #else - #define wxCRT_Stat wxPOSIX_IDENT(stat) - #endif - #endif + #define wxCRT_Open wxCRT_OpenA + #define wxCRT_Access wxCRT_AccessA + #define wxCRT_MkDir wxCRT_MkDirA + #define wxCRT_RmDir wxCRT_RmDirA + #define wxCRT_Stat wxCRT_StatA #endif // wxUSE_UNICODE/!wxUSE_UNICODE + // constants (unless already defined by the user code) #ifdef wxHAS_UNDERSCORES_IN_POSIX_IDENTS #ifndef O_RDONLY diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index ca0d92a863..f74282c55f 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -131,7 +131,7 @@ const int wxInvalidOffset = -1; // regardless of the mode parameter. This hack works around the problem by // setting the mode with _wchmod. // -int wxCRT_Open(const wchar_t *pathname, int flags, mode_t mode) +int wxCRT_OpenW(const wchar_t *pathname, int flags, mode_t mode) { int moreflags = 0; diff --git a/src/msw/mslu.cpp b/src/msw/mslu.cpp index 5d30eac705..ec882a9d98 100644 --- a/src/msw/mslu.cpp +++ b/src/msw/mslu.cpp @@ -21,6 +21,8 @@ #include "wx/utils.h" #endif +#define wxHAS_HUGE_FILES + //------------------------------------------------------------------------ // Check for use of MSLU //------------------------------------------------------------------------ @@ -182,68 +184,46 @@ WXDLLIMPEXP_BASE FILE* wxMSLU__wfreopen(const wchar_t *name, return _wfreopen(name, mode, stream); } -#if defined( __VISUALC__ ) \ - || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ - || ( defined(__MWERKS__) && defined(__WXMSW__) ) \ - || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) - WXDLLIMPEXP_BASE int wxMSLU__wopen(const wchar_t *name, int flags, int mode) { if ( wxUsingUnicowsDll() ) -#ifdef __BORLANDC__ - return open(wxConvFile.cWX2MB(name), flags, mode); -#else - return _open(wxConvFile.cWX2MB(name), flags, mode); -#endif + return wxCRT_OpenA(wxConvFile.cWX2MB(name), flags, mode); else - return _wopen(name, flags, mode); + return wxCRT_OpenW(name, flags, mode); } WXDLLIMPEXP_BASE int wxMSLU__waccess(const wchar_t *name, int mode) { if ( wxUsingUnicowsDll() ) - return _access(wxConvFile.cWX2MB(name), mode); + return wxCRT_AccessA(wxConvFile.cWX2MB(name), mode); else - return _waccess(name, mode); + return wxCRT_AccessW(name, mode); } WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wchar_t *name) { if ( wxUsingUnicowsDll() ) - return _mkdir(wxConvFile.cWX2MB(name)); + return wxCRT_MkDirA(wxConvFile.cWX2MB(name)); else - return _wmkdir(name); + return wxCRT_MkDirW(name); } WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wchar_t *name) { if ( wxUsingUnicowsDll() ) - return _rmdir(wxConvFile.cWX2MB(name)); + return wxCRT_RmDirA(wxConvFile.cWX2MB(name)); else - return _wrmdir(name); + return wxCRT_RmDirW(name); } -#ifdef wxHAS_HUGE_FILES -WXDLLIMPEXP_BASE int wxMSLU__wstati64(const wchar_t *name, wxStructStat *buffer) -{ - if ( wxUsingUnicowsDll() ) - return _stati64((const char*)wxConvFile.cWX2MB(name), buffer); - else - return _wstati64(name, buffer); -} -#else // !wxHAS_HUGE_FILES WXDLLIMPEXP_BASE int wxMSLU__wstat(const wchar_t *name, wxStructStat *buffer) { if ( wxUsingUnicowsDll() ) - return _stat((const char*)wxConvFile.cWX2MB(name), buffer); + return wxCRT_StatA((const char*)wxConvFile.cWX2MB(name), buffer); else - return _wstat(name, buffer); + return wxCRT_StatW(name, buffer); } -#endif // wxHAS_HUGE_FILES/!wxHAS_HUGE_FILES - -#endif // compilers having wopen() &c - #endif // wxUSE_BASE #endif // wxUSE_UNICODE_MSLU -- 2.45.2