Sophie

Sophie

distrib > Mageia > 8 > armv7hl > by-pkgid > e945bf1db28d250e817909875c564e18 > files > 35

am-utils-6.2.0-8.mga8.src.rpm

am-utils-6.2 - use Linux libtirpc if present

From: Ian Kent <raven@themaw.net>

For Linux systems, if the header files and shared libraries of libtirpc
are present use them instead of the glibc RPC implementation.

Signed-off-by: Ian Kent <raven@themaw.net>
---
 Makefile.am                       |    3 ++-
 configure.ac                      |    4 ++++
 include/am_compat.h               |    8 ++++++--
 m4/macros/check_linux_libtirpc.m4 |   14 ++++++++++++++
 4 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100644 m4/macros/check_linux_libtirpc.m4

diff --git a/Makefile.am b/Makefile.am
index bae4615e..e094e950 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -146,7 +146,8 @@ EXTRA_DIST_M4 =				\
 	m4/macros/type_xdrproc_t.m4			\
 	m4/macros/type_xfs_args.m4			\
 	m4/macros/type_yp_order_outorder.m4		\
-	m4/macros/with_addon.m4
+	m4/macros/with_addon.m4				\
+	m4/macros/check_linux_libtirpc.m4
 
 EXTRA_DIST_CONF =			\
 	conf/autofs/autofs_default.h		\
diff --git a/configure.ac b/configure.ac
index ce619257..98b444d3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -222,6 +222,9 @@ dnl lots of code.  So I am forced to use a special purpose macro that sets
 dnl the libraries based on the OS.  Sigh.  -Erez.
 AMU_CHECK_OS_LIBS
 
+dnl use Linux libtirpc if possible
+AMU_CHECK_LIBTIRPC
+
 dnl librpc and librpcsvc are needed on Solaris
 AC_CHECK_LIB(rpc, clnt_sperrno)
 AC_CHECK_LIB(rpcsvc, xdr_fhandle)
@@ -433,6 +436,7 @@ AC_CHECK_HEADERS(			\
 	arpa/nameser.h			\
 	arpa/inet.h			\
 	bsd/rpc/rpc.h			\
+	tirpc/netconfig.h		\
 	cdfs/cdfsmount.h		\
  	cdfs/cdfs_mount.h		\
 	fs/udf/udf_mount.h		\
diff --git a/include/am_compat.h b/include/am_compat.h
index 3463f3fa..d6826fc7 100644
--- a/include/am_compat.h
+++ b/include/am_compat.h
@@ -454,11 +454,15 @@ struct hsfs_args {
 /*
  * Define a dummy struct netconfig for non-TLI systems
  */
-#if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H)
+#if !defined(HAVE_NETCONFIG_H)
+# if !defined(HAVE_SYS_NETCONFIG_H)
+#  if !defined(HAVE_TIRPC_NETCONFIG_H)
 struct netconfig {
   int dummy;
 };
-#endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */
+#  endif /* not HAVE_TIRPC_NETCONFIG_H */
+# endif /* not HAVE_SYS_NETCONFIG_H */
+#endif /* not HAVE_NETCONFIG_H */
 
 /* some OSs don't define INADDR_NONE and assume it's unsigned -1 */
 #ifndef INADDR_NONE
diff --git a/m4/macros/check_linux_libtirpc.m4 b/m4/macros/check_linux_libtirpc.m4
new file mode 100644
index 00000000..0abd1ad3
--- /dev/null
+++ b/m4/macros/check_linux_libtirpc.m4
@@ -0,0 +1,14 @@
+dnl ######################################################################
+dnl Check for Linux libtirpc library
+AC_DEFUN([AMU_CHECK_LIBTIRPC],[
+AC_CHECK_HEADER(tirpc/netconfig.h,[
+  amu_check_libtirpc_save_CPPFLAGS=$CPPFLAGS
+  CPPFLAGS="$CPPFLAGS -I/usr/include/tirpc"
+  AC_CHECK_LIB(tirpc,clnt_tli_create,,amu_check_libtirpc=notfound)])
+  if test "$amu_check_libtirpc" = "notfound"
+  then
+    CPPFLAGS="$amu_check_libtirpc_save_CPPFLAGS"
+  else
+    AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed])
+  fi
+])