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
This commit is contained in:
Vadim Zeitlin
2009-04-25 15:53:45 +00:00
parent 8a3f03ffce
commit d5e71e81ec
3 changed files with 73 additions and 98 deletions

View File

@@ -303,86 +303,81 @@ enum wxFileKind
#define wxEof wxPOSIX_IDENT(eof) #define wxEof wxPOSIX_IDENT(eof)
// then the functions taking strings // 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
#if wxUSE_UNICODE_MSLU #if wxUSE_UNICODE_MSLU
// implement the missing file functions in Win9x ourselves // implement the missing file functions in Win9x ourselves
#if defined( __VISUALC__ ) \ WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name,
|| ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ int flags, int mode);
|| ( defined(__MWERKS__) && defined(__WXMSW__) ) \ WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name,
|| ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) \ int mode);
|| defined(__DMC__) WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name);
WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name);
WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, WXDLLIMPEXP_BASE int
int flags, int mode); wxMSLU__wstat(const wxChar *name, wxStructStat *buffer);
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
#define wxCRT_Open wxMSLU__wopen #define wxCRT_Open wxMSLU__wopen
#define wxCRT_Access wxMSLU__waccess #define wxCRT_Access wxMSLU__waccess
#define wxCRT_MkDir wxMSLU__wmkdir #define wxCRT_MkDir wxMSLU__wmkdir
#define wxCRT_RmDir wxMSLU__wrmdir #define wxCRT_RmDir wxMSLU__wrmdir
#ifdef wxHAS_HUGE_FILES #define wxCRT_Stat wxMSLU__wstat
#define wxCRT_Stat wxMSLU__wstati64
#else
#define wxCRT_Stat wxMSLU__wstat
#endif
#else // !wxUSE_UNICODE_MSLU #else // !wxUSE_UNICODE_MSLU
#ifdef __BORLANDC__ #define wxCRT_Open wxCRT_OpenW
#if __BORLANDC__ >= 0x550 && __BORLANDC__ <= 0x551 #define wxCRT_Access wxCRT_AccessW
WXDLLIMPEXP_BASE int wxCRT_Open(const wxChar *pathname, #define wxCRT_MkDir wxCRT_MkDirW
int flags, mode_t mode); #define wxCRT_RmDir wxCRT_RmDirW
#else #define wxCRT_Stat wxCRT_StatW
#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
#endif // wxUSE_UNICODE_MSLU/!wxUSE_UNICODE_MSLU #endif // wxUSE_UNICODE_MSLU/!wxUSE_UNICODE_MSLU
#else // !wxUSE_UNICODE #else // !wxUSE_UNICODE
#define wxCRT_Open wxPOSIX_IDENT(open) #define wxCRT_Open wxCRT_OpenA
#define wxCRT_Access wxPOSIX_IDENT(access) #define wxCRT_Access wxCRT_AccessA
#define wxCRT_MkDir wxPOSIX_IDENT(mkdir) #define wxCRT_MkDir wxCRT_MkDirA
#define wxCRT_RmDir wxPOSIX_IDENT(rmdir) #define wxCRT_RmDir wxCRT_RmDirA
#ifdef wxHAS_HUGE_FILES #define wxCRT_Stat wxCRT_StatA
#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
#endif // wxUSE_UNICODE/!wxUSE_UNICODE #endif // wxUSE_UNICODE/!wxUSE_UNICODE
// constants (unless already defined by the user code) // constants (unless already defined by the user code)
#ifdef wxHAS_UNDERSCORES_IN_POSIX_IDENTS #ifdef wxHAS_UNDERSCORES_IN_POSIX_IDENTS
#ifndef O_RDONLY #ifndef O_RDONLY

View File

@@ -131,7 +131,7 @@ const int wxInvalidOffset = -1;
// regardless of the mode parameter. This hack works around the problem by // regardless of the mode parameter. This hack works around the problem by
// setting the mode with _wchmod. // 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; int moreflags = 0;

View File

@@ -21,6 +21,8 @@
#include "wx/utils.h" #include "wx/utils.h"
#endif #endif
#define wxHAS_HUGE_FILES
//------------------------------------------------------------------------ //------------------------------------------------------------------------
// Check for use of MSLU // Check for use of MSLU
//------------------------------------------------------------------------ //------------------------------------------------------------------------
@@ -182,68 +184,46 @@ WXDLLIMPEXP_BASE FILE* wxMSLU__wfreopen(const wchar_t *name,
return _wfreopen(name, mode, stream); 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) WXDLLIMPEXP_BASE int wxMSLU__wopen(const wchar_t *name, int flags, int mode)
{ {
if ( wxUsingUnicowsDll() ) if ( wxUsingUnicowsDll() )
#ifdef __BORLANDC__ return wxCRT_OpenA(wxConvFile.cWX2MB(name), flags, mode);
return open(wxConvFile.cWX2MB(name), flags, mode);
#else
return _open(wxConvFile.cWX2MB(name), flags, mode);
#endif
else else
return _wopen(name, flags, mode); return wxCRT_OpenW(name, flags, mode);
} }
WXDLLIMPEXP_BASE int wxMSLU__waccess(const wchar_t *name, int mode) WXDLLIMPEXP_BASE int wxMSLU__waccess(const wchar_t *name, int mode)
{ {
if ( wxUsingUnicowsDll() ) if ( wxUsingUnicowsDll() )
return _access(wxConvFile.cWX2MB(name), mode); return wxCRT_AccessA(wxConvFile.cWX2MB(name), mode);
else else
return _waccess(name, mode); return wxCRT_AccessW(name, mode);
} }
WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wchar_t *name) WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wchar_t *name)
{ {
if ( wxUsingUnicowsDll() ) if ( wxUsingUnicowsDll() )
return _mkdir(wxConvFile.cWX2MB(name)); return wxCRT_MkDirA(wxConvFile.cWX2MB(name));
else else
return _wmkdir(name); return wxCRT_MkDirW(name);
} }
WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wchar_t *name) WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wchar_t *name)
{ {
if ( wxUsingUnicowsDll() ) if ( wxUsingUnicowsDll() )
return _rmdir(wxConvFile.cWX2MB(name)); return wxCRT_RmDirA(wxConvFile.cWX2MB(name));
else 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) WXDLLIMPEXP_BASE int wxMSLU__wstat(const wchar_t *name, wxStructStat *buffer)
{ {
if ( wxUsingUnicowsDll() ) if ( wxUsingUnicowsDll() )
return _stat((const char*)wxConvFile.cWX2MB(name), buffer); return wxCRT_StatA((const char*)wxConvFile.cWX2MB(name), buffer);
else 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_BASE
#endif // wxUSE_UNICODE_MSLU #endif // wxUSE_UNICODE_MSLU