+dnl Mostly stolen from gnulib's getaddrinfo.m4
+AC_SEARCH_LIBS(getaddrinfo, [nsl socket])
+AC_CACHE_CHECK([for getaddrinfo],[fm_cv_getaddrinfo],[
+ AC_TRY_LINK([
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+ ], [getaddrinfo(0, 0, 0, 0);],
+ [ fm_cv_getaddrinfo=yes],
+ [ fm_cv_getaddrinfo=no ])
+])
+
+if test x"$fm_cv_getaddrinfo" = "xyes"; then
+ AC_DEFINE(HAVE_GETADDRINFO, 1,
+ [Define to 1 if you have the getaddrinfo function.])
+fi
+
+AC_CACHE_CHECK([for getnameinfo],[fm_cv_getnameinfo],[
+ AC_TRY_LINK([
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifndef NULL
+#define NULL 0
+#endif
+ ], [getnameinfo(NULL,0, NULL,0, NULL, 0, 0);],
+ [ fm_cv_getnameinfo=yes],
+ [ fm_cv_getnameinfo=no ])
+])
+if test $fm_cv_getnameinfo = yes ; then
+ AC_DEFINE(HAVE_GETNAMEINFO,1,[Define to 1 if your system has getnameinfo()])
+fi
+
+AM_CONDITIONAL(NEED_GETADDRINFO, test "$fm_cv_getaddrinfo" != yes)
+AM_CONDITIONAL(NEED_GETNAMEINFO, test "$fm_cv_getnameinfo" != yes)
+
+AC_CHECK_FUNCS(inet_ntop)
+dnl Check if getaddrinfo is async-signal-safe - most implementations aren't
+if test "$fm_cv_getaddrinfo" = yes ; then
+ AC_MSG_CHECKING(if your getaddrinfo is async-signal-safe)
+ gai_ts=no
+ dnl we have getaddrinfo() - check if the OS is known to have a async-signal-safe implementation
+ case $host_os in
+ darwin9*) gai_ts=yes ;;
+ linux*) gai_ts=yes ;;
+ freebsd5.5|freebsd6*|freebsd7*) gai_ts=yes ;;
+ solaris2.8|solaris2.9|solaris2.10) gai_ts=yes ;;
+ esac
+ AC_MSG_RESULT($gai_ts)
+ if test $gai_ts = yes ; then
+ AC_DEFINE(GETADDRINFO_ASYNCSAFE, 1, [define to 1 if you know your getaddrinfo function is async-signal-safe])
+ fi
+fi