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