if (use_nisplus) status = getpwent_next_nisplus_netgr (NULL, result, ent, buf, buffer, buflen, errnop); else status = getpwent_next_nis_netgr (NULL, result, ent, buf, buffer, buflen, errnop); if (status == NSS_STATUS_RETURN) continue;
if (innetgr (buf, NULL, result->pw_name, NULL)) return NSS_STATUS_SUCCESS; } else if (status == NSS_STATUS_RETURN)  return NSS_STATUS_NOTFOUND; else return status;
internal_getpwuid_r (uid_t uid, struct passwd *result, ent_t *ent,		     char *buffer, size_t buflen, int *errnop){  struct parser_data *data = (void *) buffer;  while (1)    {      fpos_t pos;      char *p;      int parse_res;      do	{	  fgetpos (ent->stream, &pos);	  buffer[buflen - 1] = '\xff';	  p = fgets (buffer, buflen, ent->stream);	  if (p == NULL && feof (ent->stream))	    return NSS_STATUS_NOTFOUND;	  if (p == NULL || buffer[buflen - 1] != '\xff')	    {	      fsetpos (ent->stream, &pos);	      *errnop = ERANGE;	      return NSS_STATUS_TRYAGAIN;	    }	  /* Terminate the line for any case.  */	  buffer[buflen - 1] = '\0';	  /* Skip leading blanks.  */	  while (isspace (*p))	    ++p;	}      while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines.  */	     /* Parse the line.  If it is invalid, loop to		get the next line of the file to parse.  */	     !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,						   errnop)));      if (parse_res == -1)	{	  /* The parser ran out of space.  */	  fsetpos (ent->stream, &pos);	  *errnop = ERANGE;	  return NSS_STATUS_TRYAGAIN;	}      /* This is a real entry.  */      if (result->pw_name[0] != '+' && result->pw_name[0] != '-')	{	  if (result->pw_uid == uid)	    return NSS_STATUS_SUCCESS;	  else	    continue;	}      /* -@netgroup */      if (result->pw_name[0] == '-' && result->pw_name[1] == '@'	  && result->pw_name[2] != '\0')	{	  /* XXX Do not use fixed length buffers.  */	  char buf2[1024];	  char *user, *host, *domain;	  struct __netgrent netgrdata;	  bzero (&netgrdata, sizeof (struct __netgrent));	  __internal_setnetgrent (&result->pw_name[2], &netgrdata);	  while (__internal_getnetgrent_r (&host, &user, &domain, &netgrdata,					   buf2, sizeof (buf2), errnop))	    {              if (user != NULL && user[0] != '-')                blacklist_store_name (user, ent);	    }	  __internal_endnetgrent (&netgrdata);	  continue;	}      /* +@netgroup */      if (result->pw_name[0] == '+' && result->pw_name[1] == '@'	  && result->pw_name[2] != '\0')	{	  char buf[strlen (result->pw_name)];	  int status;	  strcpy (buf, &result->pw_name[2]);	  ent->netgroup = TRUE;	  ent->first = TRUE;	  copy_pwd_changes (&ent->pwd, result, NULL, 0);	  do	    {	      if (use_nisplus)		status = getpwent_next_nisplus_netgr (NULL, result, ent, buf,						      buffer, buflen, errnop);	      else		status = getpwent_next_nis_netgr (NULL, result, ent, buf,						  buffer, buflen, errnop);	      if (status == NSS_STATUS_RETURN)		continue;	      if (status == NSS_STATUS_SUCCESS && uid == result->pw_uid)		return NSS_STATUS_SUCCESS;	    } while (status == NSS_STATUS_SUCCESS);	  continue;	}      /* -user */      if (result->pw_name[0] == '-' && result->pw_name[1] != '\0'	  && result->pw_name[1] != '@')	{          blacklist_store_name (&result->pw_name[1], ent);          continue;	}      /* +user */      if (result->pw_name[0] == '+' && result->pw_name[1] != '\0'	  && result->pw_name[1] != '@')	{	  enum nss_status status;	  /* Store the User in the blacklist for the "+" at the end of             /etc/passwd */          blacklist_store_name (&result->pw_name[1], ent);	  status = getpwnam_plususer (&result->pw_name[1], result, buffer,				      buflen, errnop);	  if (status == NSS_STATUS_SUCCESS && result->pw_uid == uid)	    break;	  else	    continue;	}      /* +:... */      if (result->pw_name[0] == '+' && result->pw_name[1] == '\0')	{	  enum nss_status status;	  status = getpwuid_plususer (uid, result, buffer, buflen, errnop);	  if (status == NSS_STATUS_SUCCESS) /* We found the entry. */	    break;	  else	    if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */	      return NSS_STATUS_NOTFOUND;	    else	      return status;	}    }  return NSS_STATUS_SUCCESS;}