errno = 0;
struct passwd *p = fgetpwent(stream);
- if (!p && errno != ENOENT)
- return errno_or_else(EIO);
+ if (!p && !IN_SET(errno, 0, ENOENT))
+ return -errno;
*pw = p;
return !!p;
errno = 0;
struct spwd *s = fgetspent(stream);
- if (!s && errno != ENOENT)
- return errno_or_else(EIO);
+ if (!s && !IN_SET(errno, 0, ENOENT))
+ return -errno;
*sp = s;
return !!s;
errno = 0;
struct group *g = fgetgrent(stream);
- if (!g && errno != ENOENT)
- return errno_or_else(EIO);
+ if (!g && !IN_SET(errno, 0, ENOENT))
+ return -errno;
*gr = g;
return !!g;
errno = 0;
struct sgrp *s = fgetsgent(stream);
- if (!s && errno != ENOENT)
- return errno_or_else(EIO);
+ if (!s && !IN_SET(errno, 0, ENOENT))
+ return -errno;
*sg = s;
return !!s;