- n = snprintf(buffer, buflen, "%s", gbufp->gr_name);
+ if (fct_start == NULL &&
+ __nss_group_lookup(&startp, fct_name, &fct_start) != 0) {
+ free(buf);
+ return NSS_STATUS_UNAVAIL;
+ }
+ nip = startp;
+ fct.ptr = fct_start;
+ do {
+ if (fct.l == _nss_nonlocal_getgrnam_r)
+ status = NSS_STATUS_NOTFOUND;
+ else
+ status = DL_CALL_FCT(fct.l, (name, &gbuf, buf, buflen, errnop));
+ if (status == NSS_STATUS_TRYAGAIN && *errnop == ERANGE)
+ break;
+ } while (__nss_next(&nip, fct_name, &fct.ptr, status, 0) == 0);
+
+ if (status == NSS_STATUS_SUCCESS) {
+ n = snprintf(buffer, buflen, "%s", gbuf.gr_name);