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
This commit is contained in:
Vadim Zeitlin
2006-06-27 14:24:53 +00:00
parent 247c23b466
commit 7b4eedf698
10 changed files with 106 additions and 12 deletions

View File

@@ -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 <stdio.h>
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 ---------------------------------------------------------------------------

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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