aboutsummaryrefslogtreecommitdiffstats
path: root/m4-local
diff options
context:
space:
mode:
Diffstat (limited to 'm4-local')
-rw-r--r--m4-local/gethostbyname_r.m468
1 files changed, 68 insertions, 0 deletions
diff --git a/m4-local/gethostbyname_r.m4 b/m4-local/gethostbyname_r.m4
new file mode 100644
index 00000000..94f36dba
--- /dev/null
+++ b/m4-local/gethostbyname_r.m4
@@ -0,0 +1,68 @@
+dnl @synopsis ACX_WHICH_GETHOSTBYNAME_R
+dnl
+dnl Provides a test to determine the correct way to call gethostbyname_r
+dnl
+dnl defines HAVE_GETHOSTBYNAME_R to the number of arguments required
+dnl
+dnl e.g. 6 arguments (linux)
+dnl e.g. 5 arguments (solaris)
+dnl e.g. 3 arguments (osf/1)
+dnl
+dnl @version $Id: acinclude.m4,v 1.6 2001/10/17 07:19:14 brian Exp $
+dnl @author Brian Stafford <brian@stafford.uklinux.net>
+dnl
+dnl based on version by Caolan McNamara <caolan@skynet.ie>
+dnl based on David Arnold's autoconf suggestion in the threads faq
+dnl
+AC_DEFUN([ACX_WHICH_GETHOSTBYNAME_R],
+[AC_CACHE_CHECK(number of arguments to gethostbyname_r,
+ acx_which_gethostbyname_r, [
+ AC_TRY_LINK([
+# include <netdb.h>
+ ], [
+
+ char *name;
+ struct hostent *he;
+ struct hostent_data data;
+ (void) gethostbyname_r(name, he, &data);
+
+ ],acx_which_gethostbyname_r=3,
+ [
+dnl acx_which_gethostbyname_r=0
+ AC_TRY_LINK([
+# include <netdb.h>
+ ], [
+ char *name;
+ struct hostent *he, *res;
+ char *buffer = NULL;
+ int buflen = 2048;
+ int h_errnop;
+ (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
+ ],acx_which_gethostbyname_r=6,
+
+ [
+dnl acx_which_gethostbyname_r=0
+ AC_TRY_LINK([
+# include <netdb.h>
+ ], [
+ char *name;
+ struct hostent *he;
+ char *buffer = NULL;
+ int buflen = 2048;
+ int h_errnop;
+ (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
+ ],acx_which_gethostbyname_r=5,acx_which_gethostbyname_r=0)
+
+ ]
+
+ )
+ ]
+ )
+ ])
+
+if test $acx_which_gethostbyname_r -gt 0 ; then
+ AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME_R], $acx_which_gethostbyname_r,
+ [Number of parameters to gethostbyname_r or 0 if not available])
+fi
+
+])