changeset 17285:76707f1cca79

net_if-tests: port to older Solaris Problem reported by Tom G. Christensen in <http://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00086.html>. * modules/net_if-tests (NET_IF_LIB): New substitution. (test_net_if_LDADD): New makefile macro, which uses NET_IF_LIB. (HAVE_IF_NAMEINDEX): New C macro. * tests/test-net_if.c: Bypass most of the test if !HAVE_IF_NAMEINDEX.
author Paul Eggert <eggert@cs.ucla.edu>
date Sat, 12 Jan 2013 21:48:49 -0800
parents 4dd985ff8805
children e8b5dfc96156
files ChangeLog modules/net_if-tests tests/test-net_if.c
diffstat 3 files changed, 24 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2013-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 
+	net_if-tests: port to older Solaris
+	Problem reported by Tom G. Christensen in
+	<http://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00086.html>.
+	* modules/net_if-tests (NET_IF_LIB): New substitution.
+	(test_net_if_LDADD): New makefile macro, which uses NET_IF_LIB.
+	(HAVE_IF_NAMEINDEX): New C macro.
+	* tests/test-net_if.c: Bypass most of the test if !HAVE_IF_NAMEINDEX.
+
 	system-quote-tests: port to older Solaris
 	Problem reported by Tom G. Christensen in
 	<http://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00086.html>.
--- a/modules/net_if-tests
+++ b/modules/net_if-tests
@@ -5,7 +5,17 @@
 Depends-on:
 
 configure.ac:
+NET_IF_LIB=
+gl_saved_libs="$LIBS"
+AC_SEARCH_LIBS([if_nameindex], [socket],
+  [AC_DEFINE([HAVE_IF_NAMEINDEX], [1], [Define if you have if_nameindex.])
+   if test "$ac_cv_search_if_nameindex" != "none required"; then
+     NET_IF_LIB="$ac_cv_search_if_nameindex"
+   fi])
+LIBS="$gl_saved_libs"
+AC_SUBST([NET_IF_LIB])
 
 Makefile.am:
 TESTS += test-net_if
 check_PROGRAMS += test-net_if
+test_net_if_LDADD = $(LDADD) @NET_IF_LIB@
--- a/tests/test-net_if.c
+++ b/tests/test-net_if.c
@@ -24,7 +24,7 @@
 
 /* We do not yet have replacements for if_* functions on systems that
    lack a native <net/if.h>.  */
-#if HAVE_NET_IF_H
+#if HAVE_NET_IF_H && HAVE_IF_NAMEINDEX
 # include "signature.h"
 SIGNATURE_CHECK (if_freenameindex, void, (struct if_nameindex *));
 SIGNATURE_CHECK (if_indextoname, char *, (unsigned int, char *));
@@ -38,7 +38,7 @@
 int
 main (int argc, char *argv[])
 {
-#if HAVE_NET_IF_H
+#if HAVE_NET_IF_H && HAVE_IF_NAMEINDEX
   struct if_nameindex *ifnp, *p;
 
   p = ifnp = if_nameindex ();
@@ -89,5 +89,9 @@
   if_freenameindex (ifnp);
 #endif /* HAVE_NET_IF_H */
 
+#if !HAVE_NET_IF_H || HAVE_IF_NAMEINDEX
   return !IF_NAMESIZE + ni.if_index + !!ni.if_name;
+#else
+  return 0;
+#endif
 }