1dnl $Id$
2dnl
3AC_DEFUN([AC_BROKEN_SNPRINTF], [
4AC_CACHE_CHECK(for working snprintf,ac_cv_func_snprintf_working,
5ac_cv_func_snprintf_working=yes
6AC_RUN_IFELSE([AC_LANG_SOURCE([[
7#include <stdio.h>
8#include <string.h>
9int main(int argc, char **argv)
10{
11	char foo[[3]];
12	snprintf(foo, 2, "12");
13	return strcmp(foo, "1") || snprintf(NULL, 0, "%d", 12) != 2;
14}]])],[:],[ac_cv_func_snprintf_working=no],[:]))
15
16if test "$ac_cv_func_snprintf_working" = yes; then
17	AC_DEFINE_UNQUOTED(HAVE_SNPRINTF, 1, [define if you have a working snprintf])
18fi
19if test "$ac_cv_func_snprintf_working" = yes; then
20AC_NEED_PROTO([#include <stdio.h>],snprintf)
21fi
22])
23
24AC_DEFUN([AC_BROKEN_VSNPRINTF],[
25AC_CACHE_CHECK(for working vsnprintf,ac_cv_func_vsnprintf_working,
26ac_cv_func_vsnprintf_working=yes
27AC_RUN_IFELSE([AC_LANG_SOURCE([[
28#include <stdio.h>
29#include <string.h>
30#include <stdarg.h>
31
32int foo(int num, ...)
33{
34	char bar[[3]];
35	va_list arg;
36	va_start(arg, num);
37	vsnprintf(bar, 2, "%s", arg);
38	va_end(arg);
39	return strcmp(bar, "1");
40}
41
42int bar(int num, int len, ...)
43{
44	int r;
45	va_list arg;
46	va_start(arg, len);
47	r = vsnprintf(NULL, 0, "%s", arg);
48	va_end(arg);
49	return r != len;
50}
51
52int main(int argc, char **argv)
53{
54	return foo(0, "12") || bar(0, 2, "12");
55}]])],[:],[ac_cv_func_vsnprintf_working=no],[:]))
56
57if test "$ac_cv_func_vsnprintf_working" = yes; then
58	AC_DEFINE_UNQUOTED(HAVE_VSNPRINTF, 1, [define if you have a working vsnprintf])
59fi
60if test "$ac_cv_func_vsnprintf_working" = yes; then
61AC_NEED_PROTO([#include <stdio.h>],vsnprintf)
62fi
63])
64