From b5887a837d1efe9436b6f28d58cfd60ad4fabcac Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 20 Aug 2005 15:20:16 +0000 Subject: [PATCH] vsnprintf() tests correction: check that declaration is const-correct; merged the Metrowerks test with the one for the other compilers git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure.in | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/configure.in b/configure.in index 5b2241199a..2fa602b969 100644 --- a/configure.in +++ b/configure.in @@ -3935,7 +3935,7 @@ AC_LANG_CPLUSPLUS dnl check for vsnprintf() -- a safe version of vsprintf()) dnl -dnl the trouble here is that on some systems (notable HP-UX) this function is +dnl the trouble here is that on some systems (e.g HP-UX 10) this function is dnl present in libc but not in the system headers and so AC_CHECK_FUNCS (which, dnl stupidly, provides a dummy function declaration inside its extension) dnl succeeds, even with C++ compiler, but the compilation of wxWidgets fails @@ -3947,38 +3947,29 @@ if test "$ac_cv_func_vsnprintf" = "yes"; then dnl yes it is -- now check if it is in the headers AC_CACHE_CHECK([for vsnprintf declaration], wx_cv_func_vsnprintf_decl, [ + dnl our troubles are not over: HP-UX 11 prototypes vsnprintf() as + dnl taking "char *" and not "const char *" while Metrowerks does + dnl provide a correct vsnprintf declaration but in C++ mode it's + dnl always in std namespace and so we have to bring it in scope AC_TRY_COMPILE( [ #include #include + #ifdef __MSL__ + #if __MSL__ >= 0x6000 + namespace std {} + using namespace std; + #endif + #endif ], [ char *buf; va_list ap; - vsnprintf(buf, 10u, "%s", ap); + const char *fmt = "%s"; + vsnprintf(buf, 10u, fmt, ap); ], wx_cv_func_vsnprintf_decl=yes, - [ - dnl Metrowerks does provide a vsnprintf declaration - dnl but in C++ mode it's always in std namespace. - dnl FIXME: Do we have any UNIX C++ compilers that would - dnl fail this test if using namespace std; was - dnl simply always included? - AC_TRY_COMPILE( - [ - #include - #include - using namespace std; - ], - [ - char *buf; - va_list ap; - vsnprintf(buf, 10u, "%s", ap); - ], - wx_cv_func_vsnprintf_decl=yes, - wx_cv_func_vsnprintf_decl=no - ) - ] + wx_cv_func_vsnprintf_decl=no ) ] ) -- 2.45.2