Unix Technical Forum

Re: [HACKERS] [GENERAL] [PATCH] Better way to check for getaddrinfo

This is a discussion on Re: [HACKERS] [GENERAL] [PATCH] Better way to check for getaddrinfo within the Pgsql Patches forums, part of the PostgreSQL category; --> Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > I have the answer. Tru64 netdb.h has: > > ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql Patches

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-18-2008, 01:17 AM
Bruce Momjian
 
Posts: n/a
Default Re: [HACKERS] [GENERAL] [PATCH] Better way to check for getaddrinfo

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. */


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:32 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com