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)
// 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);
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__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

View File

@ -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;

View File

@ -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