summaryrefslogtreecommitdiff
path: root/nss/getXXent_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'nss/getXXent_r.c')
-rw-r--r--nss/getXXent_r.c39
1 files changed, 18 insertions, 21 deletions
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index b709a4a935..1d27cfc66a 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -261,32 +261,29 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
&& errno == ERANGE)
break;
- no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct,
- status, 0);
+ do
+ {
+ no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct,
+ status, 0);
- if (is_last_nip)
- last_nip = nip;
+ if (is_last_nip)
+ last_nip = nip;
- if (! no_more && current_nip != nip)
- /* Call the `setXXent' function. This wasn't done before. */
- do
- {
- set_function sfct;
+ if (! no_more)
+ {
+ /* Call the `setXXent' function. This wasn't done before. */
+ set_function sfct;
- no_more = __nss_lookup (&nip, SETFUNC_NAME_STRING,
- (void **) &sfct);
+ no_more = __nss_lookup (&nip, SETFUNC_NAME_STRING,
+ (void **) &sfct);
- if (! no_more)
- status = (*sfct) (STAYOPEN_TMPVAR);
- else
- {
+ if (! no_more)
+ status = (*sfct) (STAYOPEN_TMPVAR);
+ else
status = NSS_STATUS_NOTFOUND;
- if (no_more == 1)
- /* There is no more module to search. */
- break;
- }
- }
- while (! no_more && status != NSS_STATUS_SUCCESS);
+ }
+ }
+ while (! no_more && status != NSS_STATUS_SUCCESS);
}
__libc_lock_unlock (lock);