net_if-tests: port to older Solaris
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 13 Jan 2013 05:48:49 +0000 (21:48 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 13 Jan 2013 05:49:35 +0000 (21:49 -0800)
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.

ChangeLog
modules/net_if-tests
tests/test-net_if.c

index 7afe8e6..79f857e 100644 (file)
--- 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>.
index ace657d..1318803 100644 (file)
@@ -5,7 +5,17 @@ tests/signature.h
 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@
index f3f0b2e..13ca82e 100644 (file)
@@ -24,7 +24,7 @@ static struct if_nameindex ni;
 
 /* 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 @@ SIGNATURE_CHECK (if_nametoindex, unsigned int, (const char *));
 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 @@ main (int argc, char *argv[])
   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
 }