From 7b4eedf698e09641dfdc9ffe2c04128f4bc6b2d5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 27 Jun 2006 14:24:53 +0000 Subject: [PATCH] added wxUSE_PRINTF_POS_PARAMS which can be used to force the use of built-in printf (2nd part of patch 1462778) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure.in | 42 +++++++++++++++++++++++++++++++++++- include/wx/mac/setup0.h | 9 +++++++- include/wx/motif/setup0.h | 9 +++++++- include/wx/msw/setup0.h | 2 +- include/wx/msw/wince/setup.h | 9 +++++++- include/wx/os2/setup0.h | 2 +- include/wx/palmos/setup0.h | 9 +++++++- include/wx/setup_inc.h | 2 +- include/wx/wxchar.h | 29 +++++++++++++++++++++---- setup.h.in | 5 +++++ 10 files changed, 106 insertions(+), 12 deletions(-) diff --git a/configure.in b/configure.in index c062c92a70..1cb41c1bac 100644 --- a/configure.in +++ b/configure.in @@ -424,6 +424,7 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_SOUND=no DEFAULT_wxUSE_MEDIACTRL=no DEFAULT_wxUSE_GSTREAMER8=no + DEFAULT_wxUSE_PRINTF_POS_PARAM=no DEFAULT_wxUSE_INTL=no DEFAULT_wxUSE_CONFIG=no DEFAULT_wxUSE_FONTMAP=no @@ -636,6 +637,7 @@ else DEFAULT_wxUSE_SOUND=yes DEFAULT_wxUSE_MEDIACTRL=no DEFAULT_wxUSE_GSTREAMER8=no + DEFAULT_wxUSE_PRINTF_POS_PARAM=yes DEFAULT_wxUSE_INTL=yes DEFAULT_wxUSE_CONFIG=yes DEFAULT_wxUSE_FONTMAP=yes @@ -957,7 +959,7 @@ WX_ARG_ENABLE(unicode, [ --enable-unicode compile wxString with Un WX_ARG_ENABLE(sound, [ --enable-sound use wxSound class], wxUSE_SOUND) WX_ARG_ENABLE(mediactrl, [ --enable-mediactrl use wxMediaCtrl class], wxUSE_MEDIACTRL) WX_ARG_ENABLE(gstreamer8, [ --enable-gstreamer8 force GStreamer 0.8 instead of 0.10 with the wxMediaCtrl class on unix], wxUSE_GSTREAMER8) -WX_ARG_ENABLE(wxprintfv, [ --enable-wxprintfv use wxWidgets implementation of vprintf()], wxUSE_EXPERIMENTAL_PRINTF) +WX_ARG_ENABLE(printfposparam,[ --enable-printfposparam use wxVsnprintf() which supports positional parameters], wxUSE_PRINTF_POS_PARAMS) WX_ARG_ENABLE(zipstream, [ --enable-zipstream use wxZip streams], wxUSE_ZIPSTREAM) WX_ARG_ENABLE(url, [ --enable-url use wxURL class], wxUSE_URL) @@ -4320,8 +4322,41 @@ if test "$ac_cv_func_snprintf" = "yes"; then AC_DEFINE(HAVE_BROKEN_SNPRINTF_DECL) fi fi + + if test "$wxUSE_PRINTF_POS_PARAMS" = "yes"; then + + dnl check if snprintf() has support for positional arguments + dnl NB: if snprintf() has positional support we can safely suppose that also + dnl other *printf() functions support them as they all belong to the same + dnl family and they all fallback to the same implementation + AC_CACHE_CHECK([if snprintf supports positional arguments], wx_cv_func_snprintf_pos_params, + [ + AC_TRY_RUN( + [ + #include + + int main (void) + { + char buffer[128]; + snprintf (buffer, 128, "%2\$d %3\$d %1\$d", 1, 2, 3); + if (strcmp ("2 3 1", buffer) == 0) + exit (0); + exit (1); + } + ], + wx_cv_func_snprintf_pos_params=no, + wx_cv_func_snprintf_pos_params=yes + ) + ] + ) + + if test "$wx_cv_func_snprintf_pos_params" = "yes"; then + AC_DEFINE(HAVE_UNIX98_PRINTF) + fi + fi fi + if test "$wxUSE_UNICODE" = yes; then dnl also look if we have wide char IO functions AC_CHECK_FUNCS(wputc wputchar putws fputws wprintf vswprintf) @@ -5648,6 +5683,11 @@ if test "$wxUSE_STREAMS" = "yes" ; then AC_DEFINE(wxUSE_STREAMS) fi +if test "$wxUSE_PRINTF_POS_PARAMS" = "yes"; then + AC_DEFINE(wxUSE_PRINTF_POS_PARAMS) +fi + + dnl --------------------------------------------------------------------------- dnl time/date functions dnl --------------------------------------------------------------------------- diff --git a/include/wx/mac/setup0.h b/include/wx/mac/setup0.h index d0d22ba802..7892d9e7d3 100644 --- a/include/wx/mac/setup0.h +++ b/include/wx/mac/setup0.h @@ -288,7 +288,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection @@ -533,6 +533,13 @@ # define wxUSE_XML 0 #endif +// Use wxWidget's AUI docking system +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_AUI 1 + // ---------------------------------------------------------------------------- // Individual GUI controls // ---------------------------------------------------------------------------- diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h index cbaa364b7c..7383b34d84 100644 --- a/include/wx/motif/setup0.h +++ b/include/wx/motif/setup0.h @@ -287,7 +287,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection @@ -532,6 +532,13 @@ # define wxUSE_XML 0 #endif +// Use wxWidget's AUI docking system +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_AUI 1 + // ---------------------------------------------------------------------------- // Individual GUI controls // ---------------------------------------------------------------------------- diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h index 5d0fe0ccaf..7f037a297d 100644 --- a/include/wx/msw/setup0.h +++ b/include/wx/msw/setup0.h @@ -287,7 +287,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h index c2ed4b1591..bedbb88169 100644 --- a/include/wx/msw/wince/setup.h +++ b/include/wx/msw/wince/setup.h @@ -287,7 +287,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection @@ -532,6 +532,13 @@ # define wxUSE_XML 0 #endif +// Use wxWidget's AUI docking system +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_AUI 1 + // ---------------------------------------------------------------------------- // Individual GUI controls // ---------------------------------------------------------------------------- diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h index e3e373be38..61c097cbc7 100644 --- a/include/wx/os2/setup0.h +++ b/include/wx/os2/setup0.h @@ -287,7 +287,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h index f773ed6280..60758eb547 100644 --- a/include/wx/palmos/setup0.h +++ b/include/wx/palmos/setup0.h @@ -287,7 +287,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection @@ -532,6 +532,13 @@ # define wxUSE_XML 0 #endif +// Use wxWidget's AUI docking system +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_AUI 1 + // ---------------------------------------------------------------------------- // Individual GUI controls // ---------------------------------------------------------------------------- diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h index 282db2c2ad..2228b7f0d4 100644 --- a/include/wx/setup_inc.h +++ b/include/wx/setup_inc.h @@ -283,7 +283,7 @@ // Default is 1 // // Recommended setting: 1 if you want to support multiple languages -#define wxUSE_PRINTF_POS_PARAMS 0 +#define wxUSE_PRINTF_POS_PARAMS 1 // ---------------------------------------------------------------------------- // non GUI features selection diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 22824283dd..7c70a8b4d3 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -883,7 +883,7 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ #define wxVsnprintf_ _vsnwprintf #define wxSnprintf_ _snwprintf #endif /* Watcom */ - #if defined(HAVE__VSNWPRINTF) && defined(HAVE_UNIX98_PRINTF) + #if defined(HAVE__VSNWPRINTF) #define wxVsnprintf_ _vsnwprintf /* MinGW?MSVCRT has the wrong vswprintf */ /* Mac OS X has a somehow buggy vswprintf */ @@ -893,13 +893,13 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ #else /* ASCII */ /* all versions of CodeWarrior supported by wxWidgets apparently have */ /* both snprintf() and vsnprintf() */ - #if (defined(HAVE_SNPRINTF) && defined(HAVE_UNIX98_PRINTF)) \ + #if defined(HAVE_SNPRINTF) \ || defined(__MWERKS__) || defined(__WATCOMC__) #ifndef HAVE_BROKEN_SNPRINTF_DECL #define wxSnprintf_ snprintf #endif #endif - #if (defined(HAVE_VSNPRINTF) && defined(HAVE_UNIX98_PRINTF)) \ + #if defined(HAVE_VSNPRINTF) \ || defined(__MWERKS__) || defined(__WATCOMC__) #if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL #define wxVsnprintf_ wx_fixed_vsnprintf @@ -908,7 +908,28 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ #endif #endif #endif -#endif /* wxVsnprintf_ not defined yet */ +#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 + #define wxVsnprintf_ vsnprintf + #endif + #endif + #endif +#endif // !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS #ifndef wxSnprintf_ /* no [v]snprintf(), cook our own */ diff --git a/setup.h.in b/setup.h.in index a87a6ddc1e..306348bfd3 100644 --- a/setup.h.in +++ b/setup.h.in @@ -291,6 +291,7 @@ #define wxUSE_AUI 0 + #define wxUSE_CONTROLS 0 #define wxUSE_POPUPWIN 0 @@ -811,6 +812,10 @@ * with 'char*' for the 3rd parameter instead of 'const char*' */ #undef HAVE_BROKEN_SNPRINTF_DECL +/* Define if you have a snprintf() which supports positional arguments + (defined in the unix98 standard) */ +#undef HAVE_UNIX98_PRINTF + /* define if you have statfs function */ #undef HAVE_STATFS -- 2.45.2