Re: [HACKERS] [GENERAL] [PATCH] Better way to check for getaddrinfo - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [HACKERS] [GENERAL] [PATCH] Better way to check for getaddrinfo |
Date | |
Msg-id | 200601262209.k0QM9YJ11164@candle.pha.pa.us Whole thread Raw |
List | pgsql-patches |
Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > I have the answer. Tru64 netdb.h has: > > > #if defined (_SOCKADDR_LEN) || defined (_XOPEN_SOURCE_EXTENDED) > > #define getaddrinfo ngetaddrinfo > > #else > > #define getaddrinfo ogetaddrinfo > > #endif > > Seems like the same method we use for testing finite() and other > possible-macros would handle this, then. OK, patch attached. I did the macro test you suggested. Would someone test this on Tru64? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: configure =================================================================== RCS file: /cvsroot/pgsql/configure,v retrieving revision 1.473 diff -c -c -r1.473 configure *** configure 17 Jan 2006 23:52:27 -0000 1.473 --- configure 26 Jan 2006 21:55:52 -0000 *************** *** 14589,14650 **** # versions of getaddrinfo don't follow normal C call protocol. This is OK # because we want to use our own getaddrinfo.c on Windows anyway.) if test x"$ac_cv_type_struct_addrinfo" = xyes ; then ! ! for ac_func in getaddrinfo ! do ! as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ! echo "$as_me:$LINENO: checking for $ac_func" >&5 ! echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_var+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - /* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ - #define $ac_func innocuous_$ac_func - - /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - - #ifdef __STDC__ - # include <limits.h> - #else - # include <assert.h> - #endif ! #undef $ac_func ! ! /* Override any gcc2 internal prototype to avoid an error. */ ! #ifdef __cplusplus ! extern "C" ! { ! #endif ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func (); ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! char (*f) () = $ac_func; ! #endif ! #ifdef __cplusplus ! } ! #endif int main () { ! return f != $ac_func; ; return 0; } --- 14589,14610 ---- # versions of getaddrinfo don't follow normal C call protocol. This is OK # because we want to use our own getaddrinfo.c on Windows anyway.) if test x"$ac_cv_type_struct_addrinfo" = xyes ; then ! echo "$as_me:$LINENO: checking for getaddrinfo" >&5 ! echo $ECHO_N "checking for getaddrinfo... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ ! #include <sys/socket.h> ! #include <netdb.h> int main () { ! return getaddrinfo("", "", NULL, NULL) ? 0 : 1; ; return 0; } *************** *** 14671,14706 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - eval "$as_ac_var=yes" - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 ! eval "$as_ac_var=no" ! fi ! rm -f conftest.err conftest.$ac_objext \ ! conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ! if test `eval echo '${'$as_ac_var'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else ! case $LIBOBJS in ! "$ac_func.$ac_objext" | \ ! *" $ac_func.$ac_objext" | \ ! "$ac_func.$ac_objext "* | \ ! *" $ac_func.$ac_objext "* ) ;; ! *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; esac fi ! done ! ! else case $LIBOBJS in "getaddrinfo.$ac_objext" | \ --- 14631,14660 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! cat >>confdefs.h <<\_ACEOF ! #define HAVE_GETADDRINFO 1 _ACEOF + echo "$as_me:$LINENO: result: yes" >&5 + echo "${ECHO_T}yes" >&6 else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! case $LIBOBJS in ! "getaddrinfo.$ac_objext" | \ ! *" getaddrinfo.$ac_objext" | \ ! "getaddrinfo.$ac_objext "* | \ ! *" getaddrinfo.$ac_objext "* ) ;; ! *) LIBOBJS="$LIBOBJS getaddrinfo.$ac_objext" ;; esac fi ! rm -f conftest.err conftest.$ac_objext \ ! conftest$ac_exeext conftest.$ac_ext else case $LIBOBJS in "getaddrinfo.$ac_objext" | \ Index: configure.in =================================================================== RCS file: /cvsroot/pgsql/configure.in,v retrieving revision 1.443 diff -c -c -r1.443 configure.in *** configure.in 17 Jan 2006 23:52:30 -0000 1.443 --- configure.in 26 Jan 2006 21:55:52 -0000 *************** *** 921,927 **** # versions of getaddrinfo don't follow normal C call protocol. This is OK # because we want to use our own getaddrinfo.c on Windows anyway.) if test x"$ac_cv_type_struct_addrinfo" = xyes ; then ! AC_REPLACE_FUNCS([getaddrinfo]) else AC_LIBOBJ(getaddrinfo) fi --- 921,937 ---- # versions of getaddrinfo don't follow normal C call protocol. This is OK # because we want to use our own getaddrinfo.c on Windows anyway.) if test x"$ac_cv_type_struct_addrinfo" = xyes ; then ! dnl Cannot use AC_CHECK_FUNC because getaddrinfo may be a macro ! AC_MSG_CHECKING(for getaddrinfo) ! AC_TRY_LINK([ ! #include <sys/socket.h> ! #include <netdb.h> ! ], ! [return getaddrinfo("", "", NULL, NULL) ? 0 : 1;], ! [AC_DEFINE(HAVE_GETADDRINFO, 1, [Define to 1 if you have getaddrinfo().]) ! AC_MSG_RESULT(yes)], ! [AC_MSG_RESULT(no) ! AC_LIBOBJ(getaddrinfo)]) else AC_LIBOBJ(getaddrinfo) fi Index: src/include/pg_config.h.in =================================================================== RCS file: /cvsroot/pgsql/src/include/pg_config.h.in,v retrieving revision 1.90 diff -c -c -r1.90 pg_config.h.in *** src/include/pg_config.h.in 17 Jan 2006 23:52:31 -0000 1.90 --- src/include/pg_config.h.in 26 Jan 2006 21:55:54 -0000 *************** *** 129,135 **** /* Define to 1 if your compiler understands __FUNCTION__. */ #undef HAVE_FUNCNAME__FUNCTION ! /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO /* Define to 1 if you have the `gethostbyname_r' function. */ --- 129,135 ---- /* Define to 1 if your compiler understands __FUNCTION__. */ #undef HAVE_FUNCNAME__FUNCTION ! /* Define to 1 if you have getaddrinfo(). */ #undef HAVE_GETADDRINFO /* Define to 1 if you have the `gethostbyname_r' function. */
pgsql-patches by date: