autofs-5.1.8 - handle innetgr() not present in musl From: Fabian Groffen The function innetgr(3) may not be present in musl libc, add a check for this. Originally contributed by Fabian, modified by me. Signed-off-by: Fabian Groffen Signed-off-by: Ian Kent --- CHANGELOG | 1 + configure | 9 +++++---- configure.in | 2 +- include/config.h.in | 3 +++ modules/parse_amd.c | 7 +++++++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2b4ddeb9..1f7c93ab 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -26,6 +26,7 @@ - musl: define _SWORD_TYPE. - add autofs_strerror_r() helper for musl. - update configure. +- handle innetgr() not present in musl. 19/10/2021 autofs-5.1.8 - add xdr_exports(). diff --git a/configure b/configure index dc1c62db..90ce6e0e 100755 --- a/configure +++ b/configure @@ -4239,12 +4239,13 @@ fi -for ac_func in pipe2 +for ac_func in pipe2 innetgr do : - ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2" -if test "x$ac_cv_func_pipe2" = xyes; then : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_PIPE2 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi diff --git a/configure.in b/configure.in index 723bb30d..68cbd44a 100644 --- a/configure.in +++ b/configure.in @@ -169,7 +169,7 @@ AF_CHECK_SSS_LIB(SSS_AUTOFS, libsss_autofs.so) AC_SUBST(HAVE_SSS_AUTOFS) AC_SUBST(sssldir) -AC_CHECK_FUNCS(pipe2) +AC_CHECK_FUNCS(pipe2 innetgr) # # Newer mounts have the -s (sloppy) option to ignore unknown options, diff --git a/include/config.h.in b/include/config.h.in index 4e36b390..4f8daa86 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -30,6 +30,9 @@ /* Define to 1 if you have the `getservbyname' function. */ #undef HAVE_GETSERVBYNAME +/* Define to 1 if you have the `innetgr' function. */ +#undef HAVE_INNETGR + /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H diff --git a/modules/parse_amd.c b/modules/parse_amd.c index 163174cd..5090060d 100644 --- a/modules/parse_amd.c +++ b/modules/parse_amd.c @@ -425,6 +425,7 @@ static int sel_in_network(struct autofs_point *ap, return ret; } +#ifdef HAVE_INNETGR static int sel_netgrp(struct autofs_point *ap, struct selector *s, struct substvar *sv) { @@ -489,6 +490,7 @@ out: return ret; } +#endif static int eval_selector(struct autofs_point *ap, struct amd_entry *this, struct substvar *sv) @@ -628,7 +630,12 @@ static int eval_selector(struct autofs_point *ap, switch (s->sel->selector) { case SEL_NETGRP: case SEL_NETGRPD: +#ifndef HAVE_INNETGR + error(logopt, MODPREFIX + "netgroups not available, function innetgr(3) not available"); +#else ret = sel_netgrp(ap, s, sv); +#endif break; default: