svn commit: samba r25868 - in branches/SAMBA_4_0/source/lib/nss_wrapper: .

metze at samba.org metze at samba.org
Tue Nov 6 09:26:43 GMT 2007


Author: metze
Date: 2007-11-06 09:26:42 +0000 (Tue, 06 Nov 2007)
New Revision: 25868

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25868

Log:
nss_wrapper: add solaris versions of getpwent_r and getgrent_r

metze
Modified:
   branches/SAMBA_4_0/source/lib/nss_wrapper/nss_wrapper.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/nss_wrapper/nss_wrapper.c
===================================================================
--- branches/SAMBA_4_0/source/lib/nss_wrapper/nss_wrapper.c	2007-11-06 09:15:11 UTC (rev 25867)
+++ branches/SAMBA_4_0/source/lib/nss_wrapper/nss_wrapper.c	2007-11-06 09:26:42 UTC (rev 25868)
@@ -892,6 +892,36 @@
 	return pw;
 }
 
+#ifdef SOLARIS_GETPWENT_R
+_PUBLIC_ struct passwd *nwrap_getpwent_r(struct passwd *pwdst,
+					 char *buf,
+					 int buflen)
+{
+	struct passwd *pw;
+	struct passwd *pwdstp = NULL;
+	int ret;
+
+	if (!nwrap_enabled()) {
+		return real_getpwent_r(pwdst, buf, buflen);
+	}
+
+	pw = nwrap_getpwent();
+	if (!pw) {
+		if (errno == 0) {
+			errno = ENOENT;
+		}
+		return NULL;
+	}
+
+	ret = nwrap_pw_copy_r(pw, pwdst, buf, buflen, &pwdstp);
+	if (ret != 0) {
+		errno = ret;
+		return NULL;
+	}
+
+	return pwdstp;
+}
+#else
 _PUBLIC_ int nwrap_getpwent_r(struct passwd *pwdst, char *buf,
 			      size_t buflen, struct passwd **pwdstp)
 {
@@ -911,6 +941,7 @@
 
 	return nwrap_pw_copy_r(pw, pwdst, buf, buflen, pwdstp);
 }
+#endif
 
 _PUBLIC_ void nwrap_endpwent(void)
 {
@@ -1064,6 +1095,36 @@
 	return gr;
 }
 
+#ifdef SOLARIS_GETGRENT_R
+_PUBLIC_ struct group *nwrap_getgrent_r(struct group *grdst,
+					char *buf,
+					int buflen)
+{
+	struct group *gr;
+	struct group *grdstp = NULL;
+	int ret;
+
+	if (!nwrap_enabled()) {
+		return real_getgrent_r(grdst, buf, buflen);
+	}
+
+	gr = nwrap_getgrent();
+	if (!gr) {
+		if (errno == 0) {
+			errno = ENOENT;
+		}
+		return NULL;
+	}
+
+	ret = nwrap_gr_copy_r(gr, grdst, buf, buflen, &grdstp);
+	if (ret != 0) {
+		errno = ret;
+		return NULL;
+	}
+
+	return grdstp;
+}
+#else
 _PUBLIC_ int nwrap_getgrent_r(struct group *grdst, char *buf,
 			      size_t buflen, struct group **grdstp)
 {
@@ -1083,6 +1144,7 @@
 
 	return nwrap_gr_copy_r(gr, grdst, buf, buflen, grdstp);
 }
+#endif
 
 _PUBLIC_ void nwrap_endgrent(void)
 {



More information about the samba-cvs mailing list