Determine the correct type to be passed to four of the `getnameinfo' function's arguments, and define those types in `GETNAMEINFO_TYPE_ARG2', `GETNAMEINFO_TYPE_ARG46', and `GETNAMEINFO_TYPE_ARG7'.

This commit is contained in:
Yang Tse 2005-12-14 19:00:44 +00:00
parent 9533092511
commit 2645782f89
2 changed files with 80 additions and 0 deletions

View File

@ -687,6 +687,84 @@ if test "$ac_cv_func_gethostbyname_r" = "yes"; then
fi
])
dnl CURL_FUNC_GETNAMEINFO_ARGTYPES
dnl ------------------------------
dnl This function is experimental and its results shall
dnl not be trusted while this notice is in place ------
AC_DEFUN([CURL_FUNC_GETNAMEINFO_ARGTYPES], [
AC_REQUIRE([TYPE_SOCKLEN_T])dnl
AC_CHECK_HEADERS(sys/types.h sys/socket.h netdb.h)
AC_CACHE_CHECK([types of arguments for getnameinfo],
[curl_cv_func_getnameinfo_args], [
for gni_arg2 in 'socklen_t' 'size_t' 'int'; do
for gni_arg46 in 'size_t' 'int' 'socklen_t'; do
for gni_arg7 in 'int' 'unsigned int'; do
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
extern int getnameinfo(const struct sockaddr *,
$gni_arg2,
char *,
$gni_arg46,
char *,
$gni_arg46,
$gni_arg7);
],[
int res;
struct sockaddr *sa=NULL;
$gni_arg2 salen=0;
char *host=NULL;
$gni_arg46 hostlen=0;
char *serv=NULL;
$gni_arg46 servlen=0;
$gni_arg7 flags=0;
res = getnameinfo(sa,
salen,
host,
hostlen,
serv,
servlen,
flags);
])
],[
curl_cv_func_getnameinfo_args="$gni_arg2,$gni_arg46,$gni_arg7"
break 3
])
done
done
done
# Provide widely used default values.
: ${curl_cv_func_getnameinfo_args='socklen_t,size_t,int'}
])
gni_prev_IFS=$IFS; IFS=','
set dummy `echo "$curl_cv_func_getnameinfo_args" | sed 's/\*/\*/g'`
IFS=$gni_prev_IFS
shift
AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG2, $[1],
[Define to the type of arg 2 for `getnameinfo'.])
AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG46, ($[2]),
[Define to the type of args 4 and 6 for `getnameinfo'.])
AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG7, ($[3]),
[Define to the type of arg 7 for `getnameinfo'.])
])
dnl We create a function for detecting which compiler we use and then set as
dnl pendantic compiler options as possible for that particular compiler. The
dnl options are only used for debug-builds.

View File

@ -1500,6 +1500,8 @@ TYPE_SOCKADDR_STORAGE
AC_FUNC_SELECT_ARGTYPES
CURL_FUNC_GETNAMEINFO_ARGTYPES
dnl Checks for library functions.
dnl AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL