You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2007/01/18 16:38:39 UTC

svn commit: r497460 - in /spamassassin/trunk/spamc: config.h.in configure configure.in libspamc.c

Author: jm
Date: Thu Jan 18 07:38:38 2007
New Revision: 497460

URL: http://svn.apache.org/viewvc?view=rev&rev=497460
Log:
bug 5172: more woes with stupid EAI_FOO error codes from getaddrinfo(); it turns out that not only does Cygwin omit some of them, so does FreeBSD 6.1p10.  Work around by using the magic of autoconf for all of: EAI_ADDRFAMILY, EAI_SYSTEM, EAI_NODATA.

Modified:
    spamassassin/trunk/spamc/config.h.in
    spamassassin/trunk/spamc/configure
    spamassassin/trunk/spamc/configure.in
    spamassassin/trunk/spamc/libspamc.c

Modified: spamassassin/trunk/spamc/config.h.in
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamc/config.h.in?view=diff&rev=497460&r1=497459&r2=497460
==============================================================================
--- spamassassin/trunk/spamc/config.h.in (original)
+++ spamassassin/trunk/spamc/config.h.in Thu Jan 18 07:38:38 2007
@@ -16,6 +16,15 @@
 
 #undef HAVE_EX__MAX
 
+/* Define if EAI_ADDRFAMILY is valid. */
+#undef HAVE_EAI_ADDRFAMILY
+
+/* Define if EAI_NODATA is valid. */
+#undef HAVE_EAI_NODATA
+
+/* Define if EAI_SYSTEM is valid. */
+#undef HAVE_EAI_SYSTEM
+
 /* Define to 1 if you have the <errno.h> header file. */
 #undef HAVE_ERRNO_H
 

Modified: spamassassin/trunk/spamc/configure
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamc/configure?view=diff&rev=497460&r1=497459&r2=497460
==============================================================================
--- spamassassin/trunk/spamc/configure (original)
+++ spamassassin/trunk/spamc/configure Thu Jan 18 07:38:38 2007
@@ -4532,6 +4532,198 @@
 fi
 
 
+echo "$as_me:$LINENO: checking for EAI_ADDRFAMILY" >&5
+echo $ECHO_N "checking for EAI_ADDRFAMILY... $ECHO_C" >&6
+if test "${haveitem+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.  */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int
+main ()
+{
+int foo = EAI_ADDRFAMILY; return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  haveitem=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+haveitem=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext,
+
+fi
+echo "$as_me:$LINENO: result: $haveitem" >&5
+echo "${ECHO_T}$haveitem" >&6
+if test $haveitem = yes ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_EAI_ADDRFAMILY 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for EAI_SYSTEM" >&5
+echo $ECHO_N "checking for EAI_SYSTEM... $ECHO_C" >&6
+if test "${haveitem+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.  */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int
+main ()
+{
+int foo = EAI_SYSTEM; return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  haveitem=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+haveitem=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext,
+
+fi
+echo "$as_me:$LINENO: result: $haveitem" >&5
+echo "${ECHO_T}$haveitem" >&6
+if test $haveitem = yes ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_EAI_SYSTEM 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for EAI_NODATA" >&5
+echo $ECHO_N "checking for EAI_NODATA... $ECHO_C" >&6
+if test "${haveitem+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.  */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int
+main ()
+{
+int foo = EAI_NODATA; return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  haveitem=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+haveitem=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext,
+
+fi
+echo "$as_me:$LINENO: result: $haveitem" >&5
+echo "${ECHO_T}$haveitem" >&6
+if test $haveitem = yes ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_EAI_NODATA 1
+_ACEOF
+
+fi
+
 
 # we cheat, since we *know* we have Perl installed ;)
 CCDLFLAGS=`perl -e 'use Config; print $Config::Config{ccdlflags}'`

Modified: spamassassin/trunk/spamc/configure.in
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamc/configure.in?view=diff&rev=497460&r1=497459&r2=497460
==============================================================================
--- spamassassin/trunk/spamc/configure.in (original)
+++ spamassassin/trunk/spamc/configure.in Thu Jan 18 07:38:38 2007
@@ -150,6 +150,46 @@
   AC_DEFINE(HAVE_EX__MAX)
 fi
 
+dnl ----------------------------------------------------------------------
+
+AC_CACHE_CHECK([for EAI_ADDRFAMILY],
+        haveitem, [
+                AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>],
+                        [int foo = EAI_ADDRFAMILY; return 0;],
+                                        [haveitem=yes],
+                                        [haveitem=no]),
+        ])
+if test $haveitem = yes ; then
+  AC_DEFINE(HAVE_EAI_ADDRFAMILY, 1, [Define if EAI_ADDRFAMILY is valid.])
+fi
+
+AC_CACHE_CHECK([for EAI_SYSTEM],
+        haveitem, [
+                AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>],
+                        [int foo = EAI_SYSTEM; return 0;],
+                                        [haveitem=yes],
+                                        [haveitem=no]),
+        ])
+if test $haveitem = yes ; then
+  AC_DEFINE(HAVE_EAI_SYSTEM, 1, [Define if EAI_SYSTEM is valid.])
+fi
+
+AC_CACHE_CHECK([for EAI_NODATA],
+        haveitem, [
+                AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>],
+                        [int foo = EAI_NODATA; return 0;],
+                                        [haveitem=yes],
+                                        [haveitem=no]),
+        ])
+if test $haveitem = yes ; then
+  AC_DEFINE(HAVE_EAI_NODATA, 1, [Define if EAI_NODATA is valid.])
+fi
 
 dnl ----------------------------------------------------------------------
 

Modified: spamassassin/trunk/spamc/libspamc.c
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamc/libspamc.c?view=diff&rev=497460&r1=497459&r2=497460
==============================================================================
--- spamassassin/trunk/spamc/libspamc.c (original)
+++ spamassassin/trunk/spamc/libspamc.c Thu Jan 18 07:38:38 2007
@@ -1865,13 +1865,15 @@
                 case EAI_NONAME: /*node or service unknown*/
                 case EAI_SERVICE: /*service not available*/
 /* work around Cygwin IPv6 patch - err codes not defined in Windows aren't in patch */
-#if  !defined(__CYGWIN__) || defined(EAI_ADDRFAMILY)
+#ifdef HAVE_EAI_ADDRFAMILY
                 case EAI_ADDRFAMILY: /*no addresses in requested family*/
 #endif
-#if  !defined(__CYGWIN__) || defined(EAI_SYSTEM)
+#ifdef HAVE_EAI_SYSTEM
                 case EAI_SYSTEM: /*system error, check errno*/
 #endif
+#ifdef HAVE_EAI_NODATA
                 case EAI_NODATA: /*address exists, but no data*/
+#endif
                 case EAI_MEMORY: /*out of memory*/
                 case EAI_FAIL: /*name server returned permanent error*/
                     errbits |= 2;