Add dedicated test for getaddrinfo(). Tru64 UNIX contains two
versions of getaddrinfo and we must include netdb.h to get the proper definition.
This commit is contained in:
1
MANIFEST
1
MANIFEST
@@ -157,6 +157,7 @@ install-sh
|
|||||||
ltmain.sh
|
ltmain.sh
|
||||||
m4/ax_check_compile_flag.m4
|
m4/ax_check_compile_flag.m4
|
||||||
m4/ax_check_link_flag.m4
|
m4/ax_check_link_flag.m4
|
||||||
|
m4/ax_func_getaddrinfo.m4
|
||||||
m4/ax_func_snprintf.m4
|
m4/ax_func_snprintf.m4
|
||||||
m4/libtool.m4
|
m4/libtool.m4
|
||||||
m4/ltoptions.m4
|
m4/ltoptions.m4
|
||||||
|
1
aclocal.m4
vendored
1
aclocal.m4
vendored
@@ -128,6 +128,7 @@ AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
|
|||||||
|
|
||||||
m4_include([m4/ax_check_compile_flag.m4])
|
m4_include([m4/ax_check_compile_flag.m4])
|
||||||
m4_include([m4/ax_check_link_flag.m4])
|
m4_include([m4/ax_check_link_flag.m4])
|
||||||
|
m4_include([m4/ax_func_getaddrinfo.m4])
|
||||||
m4_include([m4/ax_func_snprintf.m4])
|
m4_include([m4/ax_func_snprintf.m4])
|
||||||
m4_include([m4/libtool.m4])
|
m4_include([m4/libtool.m4])
|
||||||
m4_include([m4/ltoptions.m4])
|
m4_include([m4/ltoptions.m4])
|
||||||
|
141
configure
vendored
141
configure
vendored
@@ -18518,84 +18518,93 @@ $as_echo "no" >&6; }
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for ac_func in getaddrinfo
|
#
|
||||||
do :
|
# Check for getaddrinfo and add any required libs to NET_LIBS
|
||||||
ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo"
|
#
|
||||||
if test "x$ac_cv_func_getaddrinfo" = xyes; then :
|
OLIBS="$LIBS"
|
||||||
cat >>confdefs.h <<_ACEOF
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
|
||||||
#define HAVE_GETADDRINFO 1
|
$as_echo_n "checking for getaddrinfo... " >&6; }
|
||||||
_ACEOF
|
if ${ax_cv_func_getaddrinfo+:} false; then :
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
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_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_n "(cached) " >&6
|
$as_echo_n "(cached) " >&6
|
||||||
else
|
else
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
SUDO_CHECK_LIB_OLIBS="$LIBS"
|
|
||||||
LIBS="$LIBS -l$lib${5+ }$extralibs"
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
|
#include <sys/types.h>
|
||||||
/* Override any GCC internal prototype to avoid an error.
|
#include <sys/socket.h>
|
||||||
Use char because int might match the return type of a GCC
|
#include <netdb.h>
|
||||||
builtin and then its argument prototype would still apply. */
|
int main() { return getaddrinfo(NULL, NULL, NULL, NULL); }
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
#endif
|
|
||||||
char getaddrinfo ();
|
|
||||||
int
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
return getaddrinfo ();
|
|
||||||
;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
_ACEOF
|
_ACEOF
|
||||||
if ac_fn_c_try_link "$LINENO"; then :
|
if ac_fn_c_try_link "$LINENO"; then :
|
||||||
eval sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras=yes
|
ax_cv_func_getaddrinfo=yes
|
||||||
else
|
else
|
||||||
eval sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras=no
|
ax_cv_func_getaddrinfo=no
|
||||||
|
|
||||||
fi
|
fi
|
||||||
rm -f core conftest.err conftest.$ac_objext \
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
conftest$ac_exeext conftest.$ac_ext
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
LIBS="$SUDO_CHECK_LIB_OLIBS"
|
fi
|
||||||
|
|
||||||
|
{ $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
|
||||||
|
|
||||||
|
$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
|
||||||
|
|
||||||
|
_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. */
|
||||||
|
#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 $_cv=yes
|
||||||
|
else
|
||||||
|
eval $_cv=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
LIBS="$AX_FUNC_GETADDRINFO_OLIBS"
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if eval test \$sudo_cv_lib_$lib''_getaddrinfo$_sudo_check_lib_extras = "yes"; then
|
if eval test \$$_cv = "yes"; then
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||||
$as_echo "yes" >&6; }
|
$as_echo "yes" >&6; }
|
||||||
NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; found=yes; break
|
$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
|
||||||
else
|
|
||||||
|
test -n "$_libs" && LIBS="$LIBS $_libs"
|
||||||
|
break
|
||||||
|
fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
$as_echo "no" >&6; }
|
$as_echo "no" >&6; }
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
done
|
||||||
if test X"$found" != X"no"; then
|
if eval test \$$_cv != "yes"; then
|
||||||
$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
|
|
||||||
|
|
||||||
else
|
|
||||||
case " $LIBOBJS " in
|
case " $LIBOBJS " in
|
||||||
*" getaddrinfo.$ac_objext "* ) ;;
|
*" getaddrinfo.$ac_objext "* ) ;;
|
||||||
*) LIBOBJS="$LIBOBJS getaddrinfo.$ac_objext"
|
*) LIBOBJS="$LIBOBJS getaddrinfo.$ac_objext"
|
||||||
@@ -18603,10 +18612,14 @@ $as_echo "no" >&6; }
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
||||||
|
for lib in $LIBS; do
|
||||||
|
case "$OLIBS" in
|
||||||
|
*"$lib"*) ;;
|
||||||
|
*) NET_LIBS="$NET_LIBS $lib";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
for ac_func in getprogname
|
for ac_func in getprogname
|
||||||
do :
|
do :
|
||||||
ac_fn_c_check_func "$LINENO" "getprogname" "ac_cv_func_getprogname"
|
ac_fn_c_check_func "$LINENO" "getprogname" "ac_cv_func_getprogname"
|
||||||
|
37
configure.ac
37
configure.ac
@@ -2533,32 +2533,17 @@ AC_CHECK_FUNC(syslog, [], [
|
|||||||
SUDO_CHECK_LIB($lib, syslog, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
|
SUDO_CHECK_LIB($lib, syslog, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
|
||||||
done
|
done
|
||||||
])
|
])
|
||||||
dnl
|
#
|
||||||
dnl If getaddrinfo(3) not in libc, check -lsocket and -linet
|
# Check for getaddrinfo and add any required libs to NET_LIBS
|
||||||
dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols.
|
#
|
||||||
dnl
|
OLIBS="$LIBS"
|
||||||
AC_CHECK_FUNCS(getaddrinfo, [], [
|
AX_FUNC_GETADDRINFO
|
||||||
found=no
|
for lib in $LIBS; do
|
||||||
for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
|
case "$OLIBS" in
|
||||||
_libs=
|
*"$lib"*) ;;
|
||||||
for lib in $libs; do
|
*) NET_LIBS="$NET_LIBS $lib";;
|
||||||
case "$NET_LIBS" in
|
esac
|
||||||
*"$lib"*) ;;
|
done
|
||||||
*) _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
|
|
||||||
])
|
|
||||||
dnl
|
dnl
|
||||||
dnl Check for getprogname() or __progname
|
dnl Check for getprogname() or __progname
|
||||||
dnl
|
dnl
|
||||||
|
70
m4/ax_func_getaddrinfo.m4
Normal file
70
m4/ax_func_getaddrinfo.m4
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
#
|
||||||
|
# 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
|
||||||
|
])
|
Reference in New Issue
Block a user