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
This commit is contained in:
Vadim Zeitlin 2005-08-20 15:20:16 +00:00
parent d66943923d
commit b5887a837d

View File

@ -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 <stdio.h>
#include <stdarg.h>
#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 <stdio.h>
#include <stdarg.h>
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
)
]
)