source: heimdal/trunk/cf/broken-snprintf.m4@ 4

Last change on this file since 4 was 1, checked in by Paul Smedley, 10 years ago

Initial commit of Heimdal 1.5.3

File size: 1.5 KB
Line 
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])
Note: See TracBrowser for help on using the repository browser.