if (utmp_data->ubuf.ut_type == USER_PROCESS && strncmp (line->ut_line, utmp_data->ubuf.ut_line, sizeof line->ut_line) == 0)
(utmp_data->ubuf.ut_type == USER_PROCESS || utmp_data->ubuf.ut_type == LOGIN_PROCESS) && #endif ! strncmp (line->ut_line, utmp_data->ubuf.ut_line, sizeof line->ut_line))
getutline_r (const struct utmp *line, struct utmp **utmp,	     struct utmp_data *utmp_data){  /* Open utmp file if not already done.  */  if (utmp_data->ut_fd == -1)    {      setutent_r (utmp_data);      if (utmp_data->ut_fd == -1)	return -1;    }  /* Position file correctly.  */  if (lseek (utmp_data->ut_fd, utmp_data->loc_utmp, SEEK_SET) == -1)    return -1;  while (1)    {      /* Read the next entry.  */      if (read (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))	  != sizeof (struct utmp))	{	  utmp_data->loc_utmp = 0; /* Mark UTMP_DATA->ubuf invalid.  */	  errno = ESRCH;	  return -1;	}      /* Update position pointer.  */      utmp_data->loc_utmp += sizeof (struct utmp);#if _HAVE_UT_TYPE - 0      if (utmp_data->ubuf.ut_type == USER_PROCESS	  && strncmp (line->ut_line, utmp_data->ubuf.ut_line,		      sizeof line->ut_line) == 0)	/* Stop if we found an user entry.  */	break;      if (utmp_data->ubuf.ut_type == LOGIN_PROCESS)	/* Stop if we found a login entry.  */	break;#else	/* !_HAVE_UT_TYPE */      if (strncmp (line->ut_line, utmp_data->ubuf.ut_line,		      sizeof line->ut_line) == 0)	/* Stop if the line match.  */	break;#endif    }  *utmp = &utmp_data->ubuf;  return 0;}