[PATCH] Better way to check for getaddrinfo function.

Started by R, Rajesh (STSD)almost 20 years ago13 messages
#1R, Rajesh (STSD)
rajesh.r2@hp.com
1 attachment(s)

Just thought that the following patch might improve checking for
getaddrinfo function (in configure.in)
I was forced to write 'coz getaddrinfo went unnoticed in Tru64 Unix.

(displaying attached patch)

$ diff -r configure.in configure.in.1
920c920,944
< AC_REPLACE_FUNCS([getaddrinfo])
---

AC_CACHE_CHECK([for getaddrinfo], ac_cv_func_getaddrinfo,
[AC_TRY_LINK([#include <netdb.h>],
[struct addrinfo *g,h;g=&h;getaddrinfo("","",g,&g);],
AC_TRY_RUN([
#include <assert.h>
#include <netdb.h>
#include <sys/types.h>
#ifndef AF_INET
# include <sys/socket.h>
#endif
#ifdef __cplusplus
extern "C"
#endif
char (*f) ();
int main(void) {

f = getaddrinfo;

return 0;
}
],ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no),
ac_cv_func_getaddrinfo=no)])
if test "$ac_cv_func_getaddrinfo" = yes; then
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo

function])

fi

Rajesh R
--
This space intentionally left non-blank.
<<configure-in.patch>>

Attachments:

configure-in.patchapplication/octet-stream; name=configure-in.patchDownload
$ diff -r configure.in configure.in.1
920c920,944
<   AC_REPLACE_FUNCS([getaddrinfo])
---
>  AC_CACHE_CHECK([for getaddrinfo], ac_cv_func_getaddrinfo,
> [AC_TRY_LINK([#include <netdb.h>],
>                 [struct addrinfo *g,h;g=&h;getaddrinfo("","",g,&g);],
>   AC_TRY_RUN([
> #include <assert.h>
> #include <netdb.h>
> #include <sys/types.h>
> #ifndef AF_INET
> # include <sys/socket.h>
> #endif
> #ifdef __cplusplus
> extern "C"
> #endif
> char (*f) ();
> int main(void) {
>
>    f = getaddrinfo;
>
>    return 0;
> }
>   ],ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no),
> ac_cv_func_getaddrinfo=no)])
> if test "$ac_cv_func_getaddrinfo" = yes; then
>   AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
> fi
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: R, Rajesh (STSD) (#1)
Re: [PATCH] Better way to check for getaddrinfo function.

"R, Rajesh (STSD)" <rajesh.r2@hp.com> writes:

Just thought that the following patch might improve checking for
getaddrinfo function (in configure.in)

Since AC_TRY_RUN tests cannot work in cross-compilation scenarios,
you need an *extremely* good reason to put one in. "I thought this
might improve things" doesn't qualify. Exactly what problem are you
trying to solve and why is a run-time test necessary? Why doesn't
the existing coding work for you?

regards, tom lane

#3R, Rajesh (STSD)
rajesh.r2@hp.com
In reply to: Tom Lane (#2)
1 attachment(s)
Re: [PATCH] Better way to check for getaddrinfo function.

That was very much situation specific.
But the bottomline is the default test does not include <netdb.h> in the
test code.
So, pg uses getaddrinfo.c.And the getaddrinfo.c does not work for me.
Ipv6 client authenciation fails.

I have modified the patch.

$ diff -r configure.in configure.in.new
918a919

AC_MSG_CHECKING([for getaddrinfo])

920c921,926
< AC_REPLACE_FUNCS([getaddrinfo])
---

AC_TRY_LINK([#include <netdb.h> #include <assert.h>],
[char (*f)();f=getaddrinfo;],
ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)
if test x"$ac_cv_func_getaddrinfo" = xyes; then
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo

function])

fi

923a930

AC_MSG_RESULT([$ac_cv_func_getaddrinfo])

Rajesh R
--
This space intentionally left non-blank.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Monday, January 16, 2006 11:28 PM
To: R, Rajesh (STSD)
Cc: pgsql-hackers@postgresql.org; pgsql-general@postgresql.org
Subject: Re: [GENERAL] [PATCH] Better way to check for getaddrinfo
function.

"R, Rajesh (STSD)" <rajesh.r2@hp.com> writes:

Just thought that the following patch might improve checking for
getaddrinfo function (in configure.in)

Since AC_TRY_RUN tests cannot work in cross-compilation scenarios, you
need an *extremely* good reason to put one in. "I thought this might
improve things" doesn't qualify. Exactly what problem are you trying to
solve and why is a run-time test necessary? Why doesn't the existing
coding work for you?

regards, tom lane <<configure-in.patch>>

Attachments:

configure-in.patchapplication/octet-stream; name=configure-in.patchDownload
$ diff -r configure.in configure.in.new
918a919
> AC_MSG_CHECKING([for getaddrinfo])
920c921,926
<   AC_REPLACE_FUNCS([getaddrinfo])
---
>  AC_TRY_LINK([#include <netdb.h> #include <assert.h>],
>                 [char (*f)();f=getaddrinfo;],
>   ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)
> if test x"$ac_cv_func_getaddrinfo" = xyes; then
>   AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
> fi
923a930
> AC_MSG_RESULT([$ac_cv_func_getaddrinfo])
#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: R, Rajesh (STSD) (#3)
Re: [GENERAL] [PATCH] Better way to check for getaddrinfo function.

"R, Rajesh (STSD)" <rajesh.r2@hp.com> writes:

But the bottomline is the default test does not include <netdb.h> in the
test code.

That's odd. Is getaddrinfo a macro on Tru64? If so, the appropriate
patch would probably make the test look more like the tests for finite()
and friends:

dnl Cannot use AC_CHECK_FUNC because finite may be a macro
AC_MSG_CHECKING(for finite)
AC_TRY_LINK([
#include <math.h>
double glob_double;
],
[return finite(glob_double) ? 0 : 1;],
[AC_DEFINE(HAVE_FINITE, 1, [Define to 1 if you have finite().])
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])

regards, tom lane

#5Bruce Momjian
pgman@candle.pha.pa.us
In reply to: R, Rajesh (STSD) (#3)
Re: [PATCH] Better way to check for getaddrinfo function.

Where are we on this? Rajesh, I think we are waiting for more
information from you.

---------------------------------------------------------------------------

R, Rajesh (STSD) wrote:

That was very much situation specific.
But the bottomline is the default test does not include <netdb.h> in the
test code.
So, pg uses getaddrinfo.c.And the getaddrinfo.c does not work for me.
Ipv6 client authenciation fails.

I have modified the patch.

$ diff -r configure.in configure.in.new
918a919

AC_MSG_CHECKING([for getaddrinfo])

920c921,926
< AC_REPLACE_FUNCS([getaddrinfo])
---

AC_TRY_LINK([#include <netdb.h> #include <assert.h>],
[char (*f)();f=getaddrinfo;],
ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)
if test x"$ac_cv_func_getaddrinfo" = xyes; then
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo

function])

fi

923a930

AC_MSG_RESULT([$ac_cv_func_getaddrinfo])

Rajesh R
--
This space intentionally left non-blank.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Monday, January 16, 2006 11:28 PM
To: R, Rajesh (STSD)
Cc: pgsql-hackers@postgresql.org; pgsql-general@postgresql.org
Subject: Re: [GENERAL] [PATCH] Better way to check for getaddrinfo
function.

"R, Rajesh (STSD)" <rajesh.r2@hp.com> writes:

Just thought that the following patch might improve checking for
getaddrinfo function (in configure.in)

Since AC_TRY_RUN tests cannot work in cross-compilation scenarios, you
need an *extremely* good reason to put one in. "I thought this might
improve things" doesn't qualify. Exactly what problem are you trying to
solve and why is a run-time test necessary? Why doesn't the existing
coding work for you?

regards, tom lane <<configure-in.patch>>

Content-Description: configure-in.patch

[ Attachment, skipping... ]

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

-- 
  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
#6R, Rajesh (STSD)
rajesh.r2@hp.com
In reply to: Bruce Momjian (#5)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo function.

Its not a macro.
I meant that the code generated by AC_REPLACE_FUNCS([getaddrinfo]) by
configure.in for "configure"
does not have "#include <netdb.h>". Hence function is not
detected(unresolved getaddrinfo).
Hence I thought AC_TRY_LINK could give test program instead of
AC_REPLACE_FUNCS taking one.

$ diff -r configure.in configure.in.new
918a919

AC_MSG_CHECKING([for getaddrinfo])

920c921,926
< AC_REPLACE_FUNCS([getaddrinfo])
---

AC_TRY_LINK([#include <netdb.h> #include <assert.h>],
[char (*f)();f=getaddrinfo;],
ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)
if test x"$ac_cv_func_getaddrinfo" = xyes; then
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo

function])

fi

923a930

AC_MSG_RESULT([$ac_cv_func_getaddrinfo])

Regards,
Rajesh R
--
This space intentionally left non-blank.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Tuesday, January 17, 2006 8:34 PM
To: R, Rajesh (STSD)
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] [GENERAL] [PATCH] Better way to check for
getaddrinfo function.

"R, Rajesh (STSD)" <rajesh.r2@hp.com> writes:

But the bottomline is the default test does not include <netdb.h> in
the test code.

That's odd. Is getaddrinfo a macro on Tru64? If so, the appropriate
patch would probably make the test look more like the tests for finite()
and friends:

dnl Cannot use AC_CHECK_FUNC because finite may be a macro
AC_MSG_CHECKING(for finite) AC_TRY_LINK([ #include <math.h> double
glob_double; ],
[return finite(glob_double) ? 0 : 1;],
[AC_DEFINE(HAVE_FINITE, 1, [Define to 1 if you have
finite().]) AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])

regards, tom lane

#7Martijn van Oosterhout
kleptog@svana.org
In reply to: R, Rajesh (STSD) (#6)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo function.

On Tue, Jan 24, 2006 at 02:33:13PM +0530, R, Rajesh (STSD) wrote:

Its not a macro.
I meant that the code generated by AC_REPLACE_FUNCS([getaddrinfo]) by
configure.in for "configure"
does not have "#include <netdb.h>". Hence function is not
detected(unresolved getaddrinfo).
Hence I thought AC_TRY_LINK could give test program instead of
AC_REPLACE_FUNCS taking one.

But if it isn't a macro, why do you need the header file? In C it's
perfectly legal to declare the symbol yourself and try to link and it
should work *unless* it's normally a macro.

We're still missing some necessary understanding here...

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#8R, Rajesh (STSD)
rajesh.r2@hp.com
In reply to: Martijn van Oosterhout (#7)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo function.

sorry. It is a macro.

so, would it be better to check for the macro
as suggested by Tom or go with this patch

$ diff -r configure.in configure.in.new
918a919

AC_MSG_CHECKING([for getaddrinfo])

920c921,926
< AC_REPLACE_FUNCS([getaddrinfo])
---

AC_TRY_LINK([#include <netdb.h> #include <assert.h>],
[char (*f)();f=getaddrinfo;],
ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)
if test x"$ac_cv_func_getaddrinfo" = xyes; then
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo

function])

fi

923a930

AC_MSG_RESULT([$ac_cv_func_getaddrinfo])

I guess, instead of adding seperate code for macro checking as suggested
by Tom, this might serve dual purpose.

Thanks,
Rajesh R
--
This space intentionally left non-blank.

-----Original Message-----
From: Martijn van Oosterhout [mailto:kleptog@svana.org]
Sent: Tuesday, January 24, 2006 2:46 PM
To: R, Rajesh (STSD)
Cc: Tom Lane; pgsql-hackers@postgresql.org; pgsql-general@postgresql.org
Subject: Re: [HACKERS] [GENERAL] [PATCH] Better way to check for
getaddrinfo function.

On Tue, Jan 24, 2006 at 02:33:13PM +0530, R, Rajesh (STSD) wrote:

Its not a macro.
I meant that the code generated by AC_REPLACE_FUNCS([getaddrinfo]) by
configure.in for "configure"
does not have "#include <netdb.h>". Hence function is not
detected(unresolved getaddrinfo).
Hence I thought AC_TRY_LINK could give test program instead of
AC_REPLACE_FUNCS taking one.

But if it isn't a macro, why do you need the header file? In C it's
perfectly legal to declare the symbol yourself and try to link and it
should work *unless* it's normally a macro.

We're still missing some necessary understanding here...

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is
a tool for doing 5% of the work and then sitting around waiting for
someone else to do the other 95% so you can sue them.

#9Bruce Momjian
pgman@candle.pha.pa.us
In reply to: R, Rajesh (STSD) (#8)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo

I am not sure what to do on this. Right now we have a one-line test:

AC_REPLACE_FUNCS([getaddrinfo])

To test for a macro we are going to need to add include netdb.h, and the
LINK test below is overkill. I am thinking we should just hard-code in
HAVE_GETADDRINFO for the True64 platform; anything more is going to be
just a Tru64 hack anyway.

---------------------------------------------------------------------------

R, Rajesh (STSD) wrote:

sorry. It is a macro.

so, would it be better to check for the macro
as suggested by Tom or go with this patch

$ diff -r configure.in configure.in.new
918a919

AC_MSG_CHECKING([for getaddrinfo])

920c921,926
< AC_REPLACE_FUNCS([getaddrinfo])
---

AC_TRY_LINK([#include <netdb.h> #include <assert.h>],
[char (*f)();f=getaddrinfo;],
ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)
if test x"$ac_cv_func_getaddrinfo" = xyes; then
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo

function])

fi

923a930

AC_MSG_RESULT([$ac_cv_func_getaddrinfo])

I guess, instead of adding seperate code for macro checking as suggested
by Tom, this might serve dual purpose.

Thanks,
Rajesh R
--
This space intentionally left non-blank.

-----Original Message-----
From: Martijn van Oosterhout [mailto:kleptog@svana.org]
Sent: Tuesday, January 24, 2006 2:46 PM
To: R, Rajesh (STSD)
Cc: Tom Lane; pgsql-hackers@postgresql.org; pgsql-general@postgresql.org
Subject: Re: [HACKERS] [GENERAL] [PATCH] Better way to check for
getaddrinfo function.

On Tue, Jan 24, 2006 at 02:33:13PM +0530, R, Rajesh (STSD) wrote:

Its not a macro.
I meant that the code generated by AC_REPLACE_FUNCS([getaddrinfo]) by
configure.in for "configure"
does not have "#include <netdb.h>". Hence function is not
detected(unresolved getaddrinfo).
Hence I thought AC_TRY_LINK could give test program instead of
AC_REPLACE_FUNCS taking one.

But if it isn't a macro, why do you need the header file? In C it's
perfectly legal to declare the symbol yourself and try to link and it
should work *unless* it's normally a macro.

We're still missing some necessary understanding here...

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is
a tool for doing 5% of the work and then sitting around waiting for
someone else to do the other 95% so you can sue them.

-- 
  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
#10Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#9)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo

Bruce Momjian <pgman@candle.pha.pa.us> writes:

I am not sure what to do on this. Right now we have a one-line test:
AC_REPLACE_FUNCS([getaddrinfo])
To test for a macro we are going to need to add include netdb.h, and the
LINK test below is overkill. I am thinking we should just hard-code in
HAVE_GETADDRINFO for the True64 platform; anything more is going to be
just a Tru64 hack anyway.

I still want to understand why any change is needed at all. There must
be something very peculiar about getaddrinfo on Tru64 if the original
coding doesn't work. Why is it different from every other function we
test for?

regards, tom lane

#11Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Tom Lane (#10)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo

Tom Lane wrote:

Bruce Momjian <pgman@candle.pha.pa.us> writes:

I am not sure what to do on this. Right now we have a one-line test:
AC_REPLACE_FUNCS([getaddrinfo])
To test for a macro we are going to need to add include netdb.h, and the
LINK test below is overkill. I am thinking we should just hard-code in
HAVE_GETADDRINFO for the True64 platform; anything more is going to be
just a Tru64 hack anyway.

I still want to understand why any change is needed at all. There must
be something very peculiar about getaddrinfo on Tru64 if the original
coding doesn't work. Why is it different from every other function we
test for?

I have the answer. Tru64 netdb.h has:

#if defined (_SOCKADDR_LEN) || defined (_XOPEN_SOURCE_EXTENDED)
#define getaddrinfo ngetaddrinfo
#else
#define getaddrinfo ogetaddrinfo
#endif

so it is a macro, and configure produces this line:

#undef $ac_func

meaning that even if we added #include <netdb.h>, our configure test
still would not work.

Perhaps we should just test for ngetaddrinfo on that platform, and
define HAVE_GETADDRINFO.

-- 
  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
#12Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#11)
Re: [HACKERS] [PATCH] Better way to check for getaddrinfo

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.

regards, tom lane

#13Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Tom Lane (#12)
1 attachment(s)
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

Attachments:

/pgpatches/getaddrinfotext/plainDownload
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. */