From 08003ea30d86a8b983be89f6a161d3baacdaa038 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 6 Nov 2016 23:40:54 -0800
Subject: [PATCH] Musl does not have _r versions of getent() and getpwent()
 APIs

Taken from gentoo
http://data.gpo.zugaina.org/musl/net-fs/samba/files/samba-4.3.9-remove-getpwent_r.patch

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 source4/torture/local/nss_tests.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/source4/torture/local/nss_tests.c b/source4/torture/local/nss_tests.c
index 2943122..bc185ca 100644
--- a/source4/torture/local/nss_tests.c
+++ b/source4/torture/local/nss_tests.c
@@ -247,7 +247,6 @@ static bool test_getgrnam_r(struct torture_context *tctx,
 	return true;
 }
 
-
 static bool test_getgrgid(struct torture_context *tctx,
 			  gid_t gid,
 			  struct group *grp_p)
@@ -333,6 +332,7 @@ static bool test_enum_passwd(struct torture_context *tctx,
 	return true;
 }
 
+#if HAVE_GETPWENT_R
 static bool test_enum_r_passwd(struct torture_context *tctx,
 			       struct passwd **pwd_array_p,
 			       size_t *num_pwd_p)
@@ -383,6 +383,7 @@ static bool test_enum_r_passwd(struct torture_context *tctx,
 
 	return true;
 }
+#endif
 
 static bool torture_assert_passwd_equal(struct torture_context *tctx,
 					const struct passwd *p1,
@@ -434,7 +435,7 @@ static bool test_passwd_r(struct torture_context *tctx)
 	struct passwd *pwd, pwd1, pwd2;
 	size_t num_pwd;
 
-	torture_assert(tctx, test_enum_r_passwd(tctx, &pwd, &num_pwd),
+	torture_assert(tctx, test_enum_passwd(tctx, &pwd, &num_pwd),
 						"failed to enumerate passwd");
 
 	for (i=0; i < num_pwd; i++) {
@@ -462,7 +463,7 @@ static bool test_passwd_r_cross(struct torture_context *tctx)
 	struct passwd *pwd, pwd1, pwd2, pwd3, pwd4;
 	size_t num_pwd;
 
-	torture_assert(tctx, test_enum_r_passwd(tctx, &pwd, &num_pwd),
+	torture_assert(tctx, test_enum_passwd(tctx, &pwd, &num_pwd),
 						"failed to enumerate passwd");
 
 	for (i=0; i < num_pwd; i++) {
@@ -533,6 +534,7 @@ static bool test_enum_group(struct torture_context *tctx,
 	return true;
 }
 
+#if HAVE_GETGRENT_R
 static bool test_enum_r_group(struct torture_context *tctx,
 			      struct group **grp_array_p,
 			      size_t *num_grp_p)
@@ -583,6 +585,7 @@ static bool test_enum_r_group(struct torture_context *tctx,
 
 	return true;
 }
+#endif
 
 static bool torture_assert_group_equal(struct torture_context *tctx,
 				       const struct group *g1,
@@ -639,7 +642,7 @@ static bool test_group_r(struct torture_context *tctx)
 	struct group *grp, grp1, grp2;
 	size_t num_grp;
 
-	torture_assert(tctx, test_enum_r_group(tctx, &grp, &num_grp),
+	torture_assert(tctx, test_enum_group(tctx, &grp, &num_grp),
 					       "failed to enumerate group");
 
 	for (i=0; i < num_grp; i++) {
@@ -667,7 +670,7 @@ static bool test_group_r_cross(struct torture_context *tctx)
 	struct group *grp, grp1, grp2, grp3, grp4;
 	size_t num_grp;
 
-	torture_assert(tctx, test_enum_r_group(tctx, &grp, &num_grp),
+	torture_assert(tctx, test_enum_group(tctx, &grp, &num_grp),
 					       "failed to enumerate group");
 
 	for (i=0; i < num_grp; i++) {
-- 
2.25.1

