parse_res = _nss_nisplus_parse_spent (ent->result, result, buffer, buflen);
if ((parse_res = _nss_nisplus_parse_spent (ent->result, result, buffer, buflen)) == -1) { ent->first = saved_first; nis_freeresult (ent->result); ent->result = saved_res; __set_errno (ERANGE); return NSS_STATUS_TRYAGAIN; } else { if (!saved_first) nis_freeresult (saved_res); }
getspent_next_nisplus (struct spwd *result, ent_t *ent, char *buffer,                       size_t buflen){  int parse_res;  size_t p2len;  char *p2;  p2len = spwd_need_buflen (&ent->pwd);  if (p2len > buflen)    {      __set_errno (ERANGE);      return NSS_STATUS_TRYAGAIN;    }  p2 = buffer + (buflen - p2len);  buflen -= p2len;  do    {      if (ent->first)        {          ent->result = nis_first_entry(pwdtable);          if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)            {              ent->nis = 0;              give_spwd_free (&ent->pwd);              return niserr2nss (ent->result->status);            }          ent->first = FALSE;        }      else        {          nis_result *res;          res = nis_next_entry(pwdtable, &ent->result->cookie);          nis_freeresult (ent->result);          ent->result = res;          if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)            {	      ent->nis = 0;	      give_spwd_free (&ent->pwd);	      return niserr2nss (ent->result->status);            }        }      parse_res = _nss_nisplus_parse_spent (ent->result, result, buffer,                                            buflen);      if (parse_res &&          in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))        parse_res = 0; /* if result->pw_name in blacklist,search next entry */    }  while (!parse_res);  copy_spwd_changes (result, &ent->pwd, p2, p2len);  return NSS_STATUS_SUCCESS;}