!_nss_files_parse_pwent (p, result, data, buflen));
!(parse_res = _nss_files_parse_pwent (p, result, data, buflen)));  if (parse_res == -1) {  fsetpos (ent->stream, &pos); __set_errno (ERANGE); return NSS_STATUS_TRYAGAIN; }
getpwent_next_file (struct passwd *result, ent_t *ent,		    char *buffer, size_t buflen){  struct parser_data *data = (void *) buffer;  while (1)    {      char *p;      do	{	  p = fgets (buffer, buflen, ent->stream);	  if (p == NULL)	    return NSS_STATUS_NOTFOUND;	  /* 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.  */	     !_nss_files_parse_pwent (p, result, data, buflen));      if (result->pw_name[0] != '+' && result->pw_name[0] != '-')	/* This is a real entry.  */	break;      /* -@netgroup */      if (result->pw_name[0] == '-' && result->pw_name[1] == '@'	  && result->pw_name[2] != '\0')	{	  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)))	    {	      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')	{	  int status;	  ent->netgroup = TRUE;	  ent->first = TRUE;	  copy_pwd_changes (&ent->pwd, result, NULL, 0);	  status = getpwent_next_netgr (result, ent, &result->pw_name[2],					buffer, buflen);	  if (status == NSS_STATUS_RETURN)	    continue;	  else	    return status;	}      /* -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;	  status = getpwent_next_file_plususer (result, buffer, buflen);	  if (status == NSS_STATUS_SUCCESS) /* We found the entry. */	    break;	  else	    if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */	      continue;	    else	      return status;	}      /* +:... */      if (result->pw_name[0] == '+' && result->pw_name[1] == '\0')	{	  ent->nis = TRUE;	  ent->first = TRUE;	  copy_pwd_changes (&ent->pwd, result, NULL, 0);	  if (use_nisplus)	    return getpwent_next_nisplus (result, ent, buffer, buflen);	  else	    return getpwent_next_nis (result, ent, buffer, buflen);	}    }  return NSS_STATUS_SUCCESS;}