From b427dcce8396949e475b9ea4f852445400458ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= Date: Wed, 19 Sep 2018 13:50:43 +0200 Subject: [PATCH] Fix arch-dependent getnameinfo types getnameinfo() parameters are detected by configure. Current glibc uses socklen_t for BUFLEN and int for flags. Because that parameters are tested only as fallback, it does detect it different way on 32-bit system. socklen_t is compatible with size_t type on these systems. Try all variants with int flags, use unsigned flags as last resort. --- configure | 10 +++++----- configure.in | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/configure b/configure index 23e9457d5a1..dada9446d7e 100755 --- a/configure +++ b/configure @@ -19553,7 +19553,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include #include int getnameinfo(const struct sockaddr *, socklen_t, char *, - socklen_t, char *, socklen_t, unsigned int); + socklen_t, char *, socklen_t, int); int main () { @@ -19563,8 +19563,8 @@ main () } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: socklen_t for buflen; u_int for flags" >&5 -$as_echo "socklen_t for buflen; u_int for flags" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: socklen_t for buflen; int for flags" >&5 +$as_echo "socklen_t for buflen; int for flags" >&6; } $as_echo "#define IRS_GETNAMEINFO_SOCKLEN_T socklen_t" >>confdefs.h @@ -19572,7 +19572,7 @@ $as_echo "#define IRS_GETNAMEINFO_SOCKLEN_T socklen_t" >>confdefs.h $as_echo "#define IRS_GETNAMEINFO_BUFLEN_T socklen_t" >>confdefs.h -$as_echo "#define IRS_GETNAMEINFO_FLAGS_T unsigned int" >>confdefs.h +$as_echo "#define IRS_GETNAMEINFO_FLAGS_T int" >>confdefs.h else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -19633,7 +19633,7 @@ $as_echo "#define IRS_GETNAMEINFO_SOCKLEN_T socklen_t" >>confdefs.h $as_echo "#define IRS_GETNAMEINFO_BUFLEN_T socklen_t" >>confdefs.h -$as_echo "#define IRS_GETNAMEINFO_FLAGS_T int" >>confdefs.h +$as_echo "#define IRS_GETNAMEINFO_FLAGS_T unsigned int" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext diff --git a/configure.in b/configure.in index 9090939b388..756effbe2cf 100644 --- a/configure.in +++ b/configure.in @@ -3406,14 +3406,14 @@ AC_TRY_COMPILE([ #include #include int getnameinfo(const struct sockaddr *, socklen_t, char *, - socklen_t, char *, socklen_t, unsigned int);], + socklen_t, char *, socklen_t, int);], [ return (0);], - [AC_MSG_RESULT(socklen_t for buflen; u_int for flags) + [AC_MSG_RESULT(socklen_t for buflen; int for flags) AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t, [Define to the sockaddr length type used by getnameinfo(3).]) AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t, [Define to the buffer length type used by getnameinfo(3).]) - AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int, + AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int, [Define to the flags type used by getnameinfo(3).])], [AC_TRY_COMPILE([ #include @@ -3437,10 +3437,10 @@ int getnameinfo(const struct sockaddr *, size_t, char *, AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, size_t) AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t) AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)], -[AC_MSG_RESULT(not match any subspecies; assume standard definition) +[AC_MSG_RESULT(not match any subspecies; socklen_t for buflen; u_int for flags) AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t) AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t) -AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])]) +AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int)])])]) # # ...and same for gai_strerror(). -- GitLab