if (_nss_files_parse_spent (p, result, data, buflen))
if ((parse_res = _nss_files_parse_spent (p, result, data, buflen)) == -1) { ent->netgrdata.cursor = saved_cursor; return NSS_STATUS_TRYAGAIN; }  if (parse_res)
getspent_next_nis_netgr (struct spwd *result, ent_t *ent, char *group,			 char *buffer, size_t buflen){  struct parser_data *data = (void *) buffer;  char *ypdomain, *host, *user, *domain, *outval, *p, *p2;  int status, outvallen;  size_t p2len;  if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)    {      ent->netgroup = 0;      ent->first = 0;      give_spwd_free (&ent->pwd);      return NSS_STATUS_UNAVAIL;    }  if (ent->first == TRUE)    {      bzero (&ent->netgrdata, sizeof (struct __netgrent));      __internal_setnetgrent (group, &ent->netgrdata);      ent->first = FALSE;    }  while (1)    {      status = __internal_getnetgrent_r (&host, &user, &domain,					 &ent->netgrdata, buffer, buflen);      if (status != 1)	{	  __internal_endnetgrent (&ent->netgrdata);	  ent->netgroup = 0;	  give_spwd_free (&ent->pwd);	  return NSS_STATUS_RETURN;	}      if (user == NULL || user[0] == '-')	continue;      if (domain != NULL && strcmp (ypdomain, domain) != 0)	continue;      if (yp_match (ypdomain, "shadow.byname", user,		    strlen (user), &outval, &outvallen)	  != YPERR_SUCCESS)	continue;      p2len = spwd_need_buflen (&ent->pwd);      if (p2len > buflen)	{	  __set_errno (ERANGE);	  return NSS_STATUS_TRYAGAIN;	}      p2 = buffer + (buflen - p2len);      buflen -= p2len;      p = strncpy (buffer, outval, buflen);      while (isspace (*p))	p++;      free (outval);      if (_nss_files_parse_spent (p, result, data, buflen))	{	  copy_spwd_changes (result, &ent->pwd, p2, p2len);	  break;	}    }  return NSS_STATUS_SUCCESS;}