1178825Sdfrdnl $Id: broken-snprintf.m4 15455 2005-06-16 21:03:43Z lha $ 255682Smarkmdnl 3127808SnectarAC_DEFUN([AC_BROKEN_SNPRINTF], [ 455682SmarkmAC_CACHE_CHECK(for working snprintf,ac_cv_func_snprintf_working, 555682Smarkmac_cv_func_snprintf_working=yes 6178825SdfrAC_RUN_IFELSE([AC_LANG_SOURCE([[ 755682Smarkm#include <stdio.h> 855682Smarkm#include <string.h> 9178825Sdfrint main(int argc, char **argv) 1055682Smarkm{ 1190926Snectar char foo[[3]]; 1255682Smarkm snprintf(foo, 2, "12"); 13178825Sdfr return strcmp(foo, "1") || snprintf(NULL, 0, "%d", 12) != 2; 14178825Sdfr}]])],[:],[ac_cv_func_snprintf_working=no],[:])) 1555682Smarkm 1655682Smarkmif test "$ac_cv_func_snprintf_working" = yes; then 1755682Smarkm AC_DEFINE_UNQUOTED(HAVE_SNPRINTF, 1, [define if you have a working snprintf]) 1855682Smarkmfi 1955682Smarkmif test "$ac_cv_func_snprintf_working" = yes; then 2055682SmarkmAC_NEED_PROTO([#include <stdio.h>],snprintf) 2155682Smarkmfi 2255682Smarkm]) 2355682Smarkm 24127808SnectarAC_DEFUN([AC_BROKEN_VSNPRINTF],[ 2555682SmarkmAC_CACHE_CHECK(for working vsnprintf,ac_cv_func_vsnprintf_working, 2655682Smarkmac_cv_func_vsnprintf_working=yes 27178825SdfrAC_RUN_IFELSE([AC_LANG_SOURCE([[ 2855682Smarkm#include <stdio.h> 2955682Smarkm#include <string.h> 3055682Smarkm#include <stdarg.h> 3155682Smarkm 3255682Smarkmint foo(int num, ...) 3355682Smarkm{ 3490926Snectar char bar[[3]]; 3555682Smarkm va_list arg; 3655682Smarkm va_start(arg, num); 3755682Smarkm vsnprintf(bar, 2, "%s", arg); 3855682Smarkm va_end(arg); 3955682Smarkm return strcmp(bar, "1"); 4055682Smarkm} 4155682Smarkm 42178825Sdfrint bar(int num, int len, ...) 43178825Sdfr{ 44178825Sdfr int r; 45178825Sdfr va_list arg; 46178825Sdfr va_start(arg, len); 47178825Sdfr r = vsnprintf(NULL, 0, "%s", arg); 48178825Sdfr va_end(arg); 49178825Sdfr return r != len; 50178825Sdfr} 5155682Smarkm 52178825Sdfrint main(int argc, char **argv) 5355682Smarkm{ 54178825Sdfr return foo(0, "12") || bar(0, 2, "12"); 55178825Sdfr}]])],[:],[ac_cv_func_vsnprintf_working=no],[:])) 5655682Smarkm 5755682Smarkmif test "$ac_cv_func_vsnprintf_working" = yes; then 5855682Smarkm AC_DEFINE_UNQUOTED(HAVE_VSNPRINTF, 1, [define if you have a working vsnprintf]) 5955682Smarkmfi 6055682Smarkmif test "$ac_cv_func_vsnprintf_working" = yes; then 6155682SmarkmAC_NEED_PROTO([#include <stdio.h>],vsnprintf) 6255682Smarkmfi 6355682Smarkm]) 64