fi
-for ac_func in getaddrinfo
-do :
- ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo"
-if test "x$ac_cv_func_getaddrinfo" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETADDRINFO 1
+#
+# Check for getaddrinfo and add any required libs to NET_LIBS
+#
+OLIBS="$LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
+$as_echo_n "checking for getaddrinfo... " >&6; }
+if ${ax_cv_func_getaddrinfo+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int main() { return getaddrinfo(NULL, NULL, NULL, NULL); }
_ACEOF
-
+if ac_fn_c_try_link "$LINENO"; then :
+ ax_cv_func_getaddrinfo=yes
else
+ ax_cv_func_getaddrinfo=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
- found=no
- for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
- _libs=
- for lib in $libs; do
- case "$NET_LIBS" in
- *"$lib"*) ;;
- *) _libs="$_libs $lib";;
- esac
- done
- libs="${_libs# }"
- test -z "$libs" && continue
- lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
- extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_func_getaddrinfo" >&5
+$as_echo "$ax_cv_func_getaddrinfo" >&6; }
+if test X"$ax_cv_func_getaddrinfo" = X"yes"; then
- _sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/ *//g' -e 's/-l/_/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in -l$lib${5+ }$extralibs" >&5
-$as_echo_n "checking for getaddrinfo in -l$lib${5+ }$extralibs... " >&6; }
- if { as_var=sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
+$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+
+else
+ # Not found in libc, check libsocket and libinet
+ _found=no
+ for _libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
+ _cv="ax_cv_lib_getaddrinfo`echo \"$_libs\"|sed -e 's/-l/_/g' -e 's/ *//g'`"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in $_libs" >&5
+$as_echo_n "checking for getaddrinfo in $_libs... " >&6; }
+ if eval \${$_cv+:} false; then :
$as_echo_n "(cached) " >&6
else
- SUDO_CHECK_LIB_OLIBS="$LIBS"
- LIBS="$LIBS -l$lib${5+ }$extralibs"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ _nlibs=
+ for _l in $_libs; do
+ case "$LIBS" in
+ *"$_l"*) ;;
+ *) _nlibs="$_nlibs $_l";;
+ esac
+ done
+ _libs="${_nlibs# }"
+ if test -z "$_libs"; then
+ # No new libs to check
+ eval $_cv=no
+ else
+ AX_FUNC_GETADDRINFO_OLIBS="$LIBS"
+ LIBS="$LIBS $_libs"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getaddrinfo ();
-int
-main ()
-{
-return getaddrinfo ();
- ;
- return 0;
-}
+#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netdb.h>
+ int main() { return getaddrinfo(NULL, NULL, NULL, NULL); }
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- eval sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras=yes
+ eval $_cv=yes
else
- eval sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras=no
-
+ eval $_cv=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$SUDO_CHECK_LIB_OLIBS"
+ LIBS="$AX_FUNC_GETADDRINFO_OLIBS"
+ fi
fi
- if eval test \$sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ if eval test \$$_cv = "yes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; found=yes; break
- else
+ $as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+
+ test -n "$_libs" && LIBS="$LIBS $_libs"
+ break
+ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
-
- fi
-
done
- if test X"$found" != X"no"; then
- $as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
-
- else
+ if eval test \$$_cv != "yes"; then
case " $LIBOBJS " in
*" getaddrinfo.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS getaddrinfo.$ac_objext"
esac
fi
-
fi
-done
+for lib in $LIBS; do
+ case "$OLIBS" in
+ *"$lib"*) ;;
+ *) NET_LIBS="$NET_LIBS $lib";;
+ esac
+done
for ac_func in getprogname
do :
ac_fn_c_check_func "$LINENO" "getprogname" "ac_cv_func_getprogname"
SUDO_CHECK_LIB($lib, syslog, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
done
])
-dnl
-dnl If getaddrinfo(3) not in libc, check -lsocket and -linet
-dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols.
-dnl
-AC_CHECK_FUNCS(getaddrinfo, [], [
- found=no
- for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
- _libs=
- for lib in $libs; do
- case "$NET_LIBS" in
- *"$lib"*) ;;
- *) _libs="$_libs $lib";;
- esac
- done
- libs="${_libs# }"
- test -z "$libs" && continue
- lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
- extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
- SUDO_CHECK_LIB($lib, getaddrinfo, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; found=yes; break], [], [$extralibs])
- done
- if test X"$found" != X"no"; then
- AC_DEFINE(HAVE_GETADDRINFO)
- else
- AC_LIBOBJ(getaddrinfo)
- fi
-])
+#
+# Check for getaddrinfo and add any required libs to NET_LIBS
+#
+OLIBS="$LIBS"
+AX_FUNC_GETADDRINFO
+for lib in $LIBS; do
+ case "$OLIBS" in
+ *"$lib"*) ;;
+ *) NET_LIBS="$NET_LIBS $lib";;
+ esac
+done
dnl
dnl Check for getprogname() or __progname
dnl
--- /dev/null
+#
+# SYNOPSIS
+#
+# AX_FUNC_GETADDRINFO
+#
+# DESCRIPTION
+#
+# Checks for the getaddrinfo function in the standard C library,
+# as well as the socket and inet libraries, if they are present.
+# If extra libraries are required, they are added to LIBS.
+# If no getaddrinfo function is found, it is added to LIBOBJS.
+# Note: Tru64 UNIX contains two versions of getaddrinfo and we must
+# include netdb.h to get the proper definition.
+#
+# LICENSE
+#
+# Placed in the public domain by Todd C. Miller on November 20, 2013.
+#
+
+AC_DEFUN([AX_FUNC_GETADDRINFO],
+[AC_MSG_CHECKING(for getaddrinfo)
+AC_CACHE_VAL(ax_cv_func_getaddrinfo,
+[AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int main() { return getaddrinfo(NULL, NULL, NULL, NULL); }]])], [ax_cv_func_getaddrinfo=yes], [ax_cv_func_getaddrinfo=no])])
+AC_MSG_RESULT([$ax_cv_func_getaddrinfo])
+if test X"$ax_cv_func_getaddrinfo" = X"yes"; then
+ AC_DEFINE(HAVE_GETADDRINFO, 1, [Define to 1 if you have the `getaddrinfo' function.])
+else
+ # Not found in libc, check libsocket and libinet
+ _found=no
+ for _libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
+ _cv="ax_cv_lib_getaddrinfo`echo \"$_libs\"|sed -e 's/-l/_/g' -e 's/ *//g'`"
+ AC_MSG_CHECKING([for getaddrinfo in $_libs])
+ AC_CACHE_VAL([$_cv], [
+ _nlibs=
+ for _l in $_libs; do
+ case "$LIBS" in
+ *"$_l"*) ;;
+ *) _nlibs="$_nlibs $_l";;
+ esac
+ done
+ _libs="${_nlibs# }"
+ if test -z "$_libs"; then
+ # No new libs to check
+ eval $_cv=no
+ else
+ AX_FUNC_GETADDRINFO_OLIBS="$LIBS"
+ LIBS="$LIBS $_libs"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netdb.h>
+ int main() { return getaddrinfo(NULL, NULL, NULL, NULL); }]])], [eval $_cv=yes], [eval $_cv=no])
+ LIBS="$AX_FUNC_GETADDRINFO_OLIBS"
+ fi
+ ])
+ if eval test \$$_cv = "yes"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_GETADDRINFO)
+ test -n "$_libs" && LIBS="$LIBS $_libs"
+ break
+ fi
+ AC_MSG_RESULT([no])
+ done
+ if eval test \$$_cv != "yes"; then
+ AC_LIBOBJ(getaddrinfo)
+ fi
+fi
+])