mirror of
https://github.com/moparisthebest/curl
synced 2025-02-28 17:31:46 -05:00
check for getifaddrs and freeifaddrs as it is done for other functions
This commit is contained in:
parent
6354cbf9d6
commit
9717ccb786
@ -2016,11 +2016,13 @@ CURL_CHECK_MSG_NOSIGNAL
|
||||
CURL_CHECK_FUNC_ALARM
|
||||
CURL_CHECK_FUNC_FDOPEN
|
||||
CURL_CHECK_FUNC_FREEADDRINFO
|
||||
CURL_CHECK_FUNC_FREEIFADDRS
|
||||
CURL_CHECK_FUNC_FTRUNCATE
|
||||
CURL_CHECK_FUNC_GETADDRINFO
|
||||
CURL_CHECK_FUNC_GETHOSTBYADDR_R
|
||||
CURL_CHECK_FUNC_GETHOSTBYNAME_R
|
||||
CURL_CHECK_FUNC_GETHOSTNAME
|
||||
CURL_CHECK_FUNC_GETIFADDRS
|
||||
CURL_CHECK_FUNC_GETSERVBYPORT_R
|
||||
CURL_CHECK_FUNC_GMTIME_R
|
||||
CURL_CHECK_FUNC_INET_NTOA_R
|
||||
@ -2063,7 +2065,6 @@ AC_CHECK_FUNCS([basename \
|
||||
fork \
|
||||
geteuid \
|
||||
gethostbyaddr \
|
||||
getifaddrs \
|
||||
getpass_r \
|
||||
getppid \
|
||||
getprotobyname \
|
||||
|
@ -22,7 +22,7 @@
|
||||
#***************************************************************************
|
||||
|
||||
# File version for 'aclocal' use. Keep it a single number.
|
||||
# serial 33
|
||||
# serial 34
|
||||
|
||||
|
||||
dnl CURL_INCLUDES_ARPA_INET
|
||||
@ -52,6 +52,33 @@ curl_includes_arpa_inet="\
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_INCLUDES_IFADDRS
|
||||
dnl -------------------------------------------------
|
||||
dnl Set up variable with list of headers that must be
|
||||
dnl included when ifaddrs.h is to be included.
|
||||
|
||||
AC_DEFUN([CURL_INCLUDES_IFADDRS], [
|
||||
curl_includes_ifaddrs="\
|
||||
/* includes start */
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef HAVE_IFADDRS_H
|
||||
# include <ifaddrs.h>
|
||||
#endif
|
||||
/* includes end */"
|
||||
AC_CHECK_HEADERS(
|
||||
sys/types.h sys/socket.h netinet/in.h ifaddrs.h,
|
||||
[], [], [$curl_includes_ifaddrs])
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_INCLUDES_NETDB
|
||||
dnl -------------------------------------------------
|
||||
dnl Set up variable with list of headers that must be
|
||||
@ -594,6 +621,90 @@ AC_DEFUN([CURL_CHECK_FUNC_FREEADDRINFO], [
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_CHECK_FUNC_FREEIFADDRS
|
||||
dnl -------------------------------------------------
|
||||
dnl Verify if freeifaddrs is available, prototyped, and
|
||||
dnl can be compiled. If all of these are true, and
|
||||
dnl usage has not been previously disallowed with
|
||||
dnl shell variable curl_disallow_freeifaddrs, then
|
||||
dnl HAVE_FREEIFADDRS will be defined.
|
||||
|
||||
AC_DEFUN([CURL_CHECK_FUNC_FREEIFADDRS], [
|
||||
AC_REQUIRE([CURL_INCLUDES_IFADDRS])dnl
|
||||
#
|
||||
tst_links_freeifaddrs="unknown"
|
||||
tst_proto_freeifaddrs="unknown"
|
||||
tst_compi_freeifaddrs="unknown"
|
||||
tst_allow_freeifaddrs="unknown"
|
||||
#
|
||||
AC_MSG_CHECKING([if freeifaddrs can be linked])
|
||||
AC_LINK_IFELSE([
|
||||
AC_LANG_FUNC_LINK_TRY([freeifaddrs])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_links_freeifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_links_freeifaddrs="no"
|
||||
])
|
||||
#
|
||||
if test "$tst_links_freeifaddrs" = "yes"; then
|
||||
AC_MSG_CHECKING([if freeifaddrs is prototyped])
|
||||
AC_EGREP_CPP([freeifaddrs],[
|
||||
$curl_includes_ifaddrs
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_proto_freeifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_proto_freeifaddrs="no"
|
||||
])
|
||||
fi
|
||||
#
|
||||
if test "$tst_proto_freeifaddrs" = "yes"; then
|
||||
AC_MSG_CHECKING([if freeifaddrs is compilable])
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
$curl_includes_ifaddrs
|
||||
]],[[
|
||||
freeifaddrs(0);
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_compi_freeifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_compi_freeifaddrs="no"
|
||||
])
|
||||
fi
|
||||
#
|
||||
if test "$tst_compi_freeifaddrs" = "yes"; then
|
||||
AC_MSG_CHECKING([if freeifaddrs usage allowed])
|
||||
if test "x$curl_disallow_freeifaddrs" != "xyes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_allow_freeifaddrs="yes"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
tst_allow_freeifaddrs="no"
|
||||
fi
|
||||
fi
|
||||
#
|
||||
AC_MSG_CHECKING([if freeifaddrs might be used])
|
||||
if test "$tst_links_freeifaddrs" = "yes" &&
|
||||
test "$tst_proto_freeifaddrs" = "yes" &&
|
||||
test "$tst_compi_freeifaddrs" = "yes" &&
|
||||
test "$tst_allow_freeifaddrs" = "yes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE_UNQUOTED(HAVE_FREEIFADDRS, 1,
|
||||
[Define to 1 if you have the freeifaddrs function.])
|
||||
ac_cv_func_freeifaddrs="yes"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
ac_cv_func_freeifaddrs="no"
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_CHECK_FUNC_FTRUNCATE
|
||||
dnl -------------------------------------------------
|
||||
dnl Verify if ftruncate is available, prototyped, and
|
||||
@ -1193,6 +1304,120 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_CHECK_FUNC_GETIFADDRS
|
||||
dnl -------------------------------------------------
|
||||
dnl Verify if getifaddrs is available, prototyped, can
|
||||
dnl be compiled and seems to work. If all of these are
|
||||
dnl true, and usage has not been previously disallowed
|
||||
dnl with shell variable curl_disallow_getifaddrs, then
|
||||
dnl HAVE_GETIFADDRS will be defined.
|
||||
|
||||
AC_DEFUN([CURL_CHECK_FUNC_GETIFADDRS], [
|
||||
AC_REQUIRE([CURL_INCLUDES_IFADDRS])dnl
|
||||
#
|
||||
tst_links_getifaddrs="unknown"
|
||||
tst_proto_getifaddrs="unknown"
|
||||
tst_compi_getifaddrs="unknown"
|
||||
tst_works_getifaddrs="unknown"
|
||||
tst_allow_getifaddrs="unknown"
|
||||
#
|
||||
AC_MSG_CHECKING([if getifaddrs can be linked])
|
||||
AC_LINK_IFELSE([
|
||||
AC_LANG_FUNC_LINK_TRY([getifaddrs])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_links_getifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_links_getifaddrs="no"
|
||||
])
|
||||
#
|
||||
if test "$tst_links_getifaddrs" = "yes"; then
|
||||
AC_MSG_CHECKING([if getifaddrs is prototyped])
|
||||
AC_EGREP_CPP([getifaddrs],[
|
||||
$curl_includes_ifaddrs
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_proto_getifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_proto_getifaddrs="no"
|
||||
])
|
||||
fi
|
||||
#
|
||||
if test "$tst_proto_getifaddrs" = "yes"; then
|
||||
AC_MSG_CHECKING([if getifaddrs is compilable])
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
$curl_includes_ifaddrs
|
||||
]],[[
|
||||
if(0 != getifaddrs(0))
|
||||
return 1;
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_compi_getifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_compi_getifaddrs="no"
|
||||
])
|
||||
fi
|
||||
#
|
||||
dnl only do runtime verification when not cross-compiling
|
||||
if test "x$cross_compiling" != "xyes" &&
|
||||
test "$tst_compi_getifaddrs" = "yes"; then
|
||||
AC_MSG_CHECKING([if getifaddrs seems to work])
|
||||
AC_RUN_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
$curl_includes_ifaddrs
|
||||
]],[[
|
||||
struct ifaddrs *ifa = 0;
|
||||
int error;
|
||||
|
||||
error = getifaddrs(&ifa);
|
||||
if(error || !ifa)
|
||||
exit(1); /* fail */
|
||||
else
|
||||
exit(0);
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_works_getifaddrs="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tst_works_getifaddrs="no"
|
||||
])
|
||||
fi
|
||||
#
|
||||
if test "$tst_compi_getifaddrs" = "yes" &&
|
||||
test "$tst_works_getifaddrs" != "no"; then
|
||||
AC_MSG_CHECKING([if getifaddrs usage allowed])
|
||||
if test "x$curl_disallow_getifaddrs" != "xyes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
tst_allow_getifaddrs="yes"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
tst_allow_getifaddrs="no"
|
||||
fi
|
||||
fi
|
||||
#
|
||||
AC_MSG_CHECKING([if getifaddrs might be used])
|
||||
if test "$tst_links_getifaddrs" = "yes" &&
|
||||
test "$tst_proto_getifaddrs" = "yes" &&
|
||||
test "$tst_compi_getifaddrs" = "yes" &&
|
||||
test "$tst_allow_getifaddrs" = "yes" &&
|
||||
test "$tst_works_getifaddrs" != "no"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE_UNQUOTED(HAVE_GETIFADDRS, 1,
|
||||
[Define to 1 if you have a working getifaddrs function.])
|
||||
ac_cv_func_getifaddrs="yes"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
ac_cv_func_getifaddrs="no"
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_CHECK_FUNC_GETSERVBYPORT_R
|
||||
dnl -------------------------------------------------
|
||||
dnl Verify if getservbyport_r is available, prototyped,
|
||||
|
Loading…
x
Reference in New Issue
Block a user