X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/20a4311e7f44f98b945cc762b5f0d41b6c0e82be..f46ad98f0df1e1b073a484cb34a91e2e1278fdb7:/include/wx/wxchar.h?ds=sidebyside diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 026d9d612c..7c70a8b4d3 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -369,8 +369,14 @@ /* special case: not all TCHAR-aware compilers have those */ #if defined(__VISUALC__) || \ (defined(__BORLANDC__) && __BORLANDC__ >= 0x540) - #define wxVsnprintf_ _vsntprintf - #define wxSnprintf_ _sntprintf + /* + we can only use the system _vsntprintf() if we don't require the + Unix98 positional parameters support as it doesn't have it + */ + #if !wxUSE_PRINTF_POS_PARAMS + #define wxVsnprintf_ _vsntprintf + #define wxSnprintf_ _sntprintf + #endif #endif /* special case: these functions are missing under Win9x with Unicows so we */ @@ -867,7 +873,7 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ We define function with a trailing underscore here because the real one is a wrapper around it as explained below */ -#ifndef wxVsnprintf_ +#if !defined( wxVsnprintf_ ) && !wxUSE_PRINTF_POS_PARAMS #if wxUSE_UNICODE #ifdef wxHAVE_MWERKS_UNICODE #define HAVE_WCSRTOMBS 1 @@ -880,19 +886,42 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ #if defined(HAVE__VSNWPRINTF) #define wxVsnprintf_ _vsnwprintf /* MinGW?MSVCRT has the wrong vswprintf */ - /* Mac OS X has a somehow buggy vswprintf */ + /* Mac OS X has a somehow buggy vswprintf */ #elif defined(HAVE_VSWPRINTF) && !defined(__MINGW32__) && !defined(__DARWIN__) #define wxVsnprintf_ vswprintf #endif #else /* ASCII */ /* all versions of CodeWarrior supported by wxWidgets apparently have */ /* both snprintf() and vsnprintf() */ - #if defined(HAVE_SNPRINTF) || defined(__MWERKS__) || defined(__WATCOMC__) + #if defined(HAVE_SNPRINTF) \ + || defined(__MWERKS__) || defined(__WATCOMC__) #ifndef HAVE_BROKEN_SNPRINTF_DECL #define wxSnprintf_ snprintf #endif #endif - #if defined(HAVE_VSNPRINTF) || defined(__MWERKS__) || defined(__WATCOMC__) + #if defined(HAVE_VSNPRINTF) \ + || defined(__MWERKS__) || defined(__WATCOMC__) + #if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL + #define wxVsnprintf_ wx_fixed_vsnprintf + #else + #define wxVsnprintf_ vsnprintf + #endif + #endif + #endif +#endif /* wxVsnprintf_ not defined yet && !wxUSE_PRINTF_POS_PARAMS */ + +#if !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS + /* + The systems where vsnprintf() supports positionals should define + the HAVE_UNIX98_PRINTF symbol. + + On systems which don't (e.g. Windows) we are forced to use + our wxVsnprintf() implementation. + */ + #if defined(HAVE_UNIX98_PRINTF) + #if wxUSE_UNICODE + #define wxVsnprintf_ vswprintf + #else /* ASCII */ #if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL #define wxVsnprintf_ wx_fixed_vsnprintf #else @@ -900,7 +929,7 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ #endif #endif #endif -#endif /* wxVsnprintf_ not defined yet */ +#endif // !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS #ifndef wxSnprintf_ /* no [v]snprintf(), cook our own */