1 dnl @synopsis ACX_WHICH_GETHOSTBYNAME_R
2 dnl
3 dnl Provides a test to determine the correct way to call gethostbyname_r
4 dnl
5 dnl defines HAVE_GETHOSTBYNAME_R to the number of arguments required
6 dnl
7 dnl e.g. 6 arguments (linux)
8 dnl e.g. 5 arguments (solaris)
9 dnl e.g. 3 arguments (osf/1)
10 dnl
11 dnl @version $Id$
12 dnl @author Brian Stafford <brian@stafford.uklinux.net>
13 dnl
14 dnl based on version by Caolan McNamara <caolan@skynet.ie>
15 dnl based on David Arnold's autoconf suggestion in the threads faq
16 dnl
17 AC_DEFUN(ACX_WHICH_GETHOSTBYNAME_R,
18 [AC_CACHE_CHECK(number of arguments to gethostbyname_r,
19 acx_which_gethostbyname_r, [
20 AC_TRY_COMPILE([
21 # include <netdb.h>
22 ], [
24 char *name;
25 struct hostent *he;
26 struct hostent_data data;
27 (void) gethostbyname_r(name, he, &data);
29 ],acx_which_gethostbyname_r=3,
30 [
31 dnl acx_which_gethostbyname_r=0
32 AC_TRY_COMPILE([
33 # include <netdb.h>
34 ], [
35 char *name;
36 struct hostent *he, *res;
37 char *buffer = NULL;
38 int buflen = 2048;
39 int h_errnop;
40 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
41 ],acx_which_gethostbyname_r=6,
43 [
44 dnl acx_which_gethostbyname_r=0
45 AC_TRY_COMPILE([
46 # include <netdb.h>
47 ], [
48 char *name;
49 struct hostent *he;
50 char *buffer = NULL;
51 int buflen = 2048;
52 int h_errnop;
53 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
54 ],acx_which_gethostbyname_r=5,acx_which_gethostbyname_r=0)
56 ]
58 )
59 ]
60 )
61 ])
63 if test $acx_which_gethostbyname_r -gt 0 ; then
64 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME_R], $acx_which_gethostbyname_r,
65 [Number of parameters to gethostbyname_r or 0 if not available])
66 fi
68 ])
70 dnl @synopsis ACX_HELP_STRING(OPTION,DESCRIPTION)
71 AC_DEFUN([ACX_HELP_STRING],
72 [ $1 builtin([substr],[ ],len($1))[$2]])
75 dnl @synopsis ACX_FEATURE(ENABLE_OR_WITH,NAME[,VALUE])
76 AC_DEFUN([ACX_FEATURE],
77 [echo "builtin([substr],[ ],len(--$1-$2))--$1-$2: ifelse($3,,[$]translit($1-$2,-,_),$3)"])