blob: 8e99e334ab4e91950f7cf0166152620e83122a85 [file]
#checks if snprintf have bugs
MACRO ( CHECK_SNPRINTF )
#check that our snprintf works correctly...
IF ( _CL_HAVE_FUNCTION_SNPRINTF )
CHECK_CXX_SOURCE_RUNS("
#include <stdio.h>
int main(){
char ovbuf[7];
int i;
for (i=0; i<7; i++) ovbuf[i]='x';
snprintf(ovbuf, 4,\"foo%s\", \"bar\");
if (ovbuf[5]!='x') return 1;
snprintf(ovbuf, 4,\"foo%d\", 666);
if (ovbuf[5]!='x') return 1;
return 0;
}" _CL_HAVE_NO_SNPRINTF_BUG)
IF ( NOT _CL_HAVE_NO_SNPRINTF_BUG )
SET ( _CL_HAVE_SNPRINTF_BUG 1 )
MESSAGE ( FATAL_ERROR "snprintf has a bug, and we don't have a replacement!" )
ENDIF ( NOT _CL_HAVE_NO_SNPRINTF_BUG )
ENDIF ( _CL_HAVE_FUNCTION_SNPRINTF )
#check that our swnprintf works correctly...
IF ( _CL_HAVE_FUNCTION_SNWPRINTF )
CHECK_CXX_SOURCE_RUNS("
#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t buf[5];
snwprintf(buf,5,L\"%s\",L\"foo\");
if ( wcslen(buf) != 3 )
return 1;
return 0;
}" _CL_HAVE_NO_SNWPRINTF_BUG)
IF ( NOT _CL_HAVE_NO_SNWPRINTF_BUG )
SET ( _CL_HAVE_SNWPRINTF_BUG 1 )
ENDIF ( NOT _CL_HAVE_NO_SNWPRINTF_BUG )
ENDIF ( _CL_HAVE_FUNCTION_SNWPRINTF )
ENDMACRO ( CHECK_SNPRINTF )