static inline bool
desirable_utmp_entry (STRUCT_UTMP const *u, int options)
{
- return ! (options & READ_UTMP_CHECK_PIDS
- && IS_USER_PROCESS (u)
- && (UT_PID (u) <= 0
- || (kill (UT_PID (u), 0) < 0 && errno == ESRCH)));
+ int up = IS_USER_PROCESS (u);
+ if ((options & READ_UTMP_USER_PROCESS) && !up)
+ return false;
+ if ((options & READ_UTMP_CHECK_PIDS)
+ && up
+ && (UT_PID (u) <= 0
+ || (kill (UT_PID (u), 0) < 0 && errno == ESRCH)))
+ return false;
+ return true;
}
/* Read the utmp entries corresponding to file FILE into freshly-