From: cee1 <fykc...@gmail.com> --- src/util.c | 34 ++++++---------------------------- 1 files changed, 6 insertions(+), 28 deletions(-)
diff --git a/src/util.c b/src/util.c index a46897a..1cb2626 100644 --- a/src/util.c +++ b/src/util.c @@ -2858,21 +2858,10 @@ ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) { continue; if (k < 0 && errno == EAGAIN && do_poll) { - struct pollfd pollfd; + int r = fd_pollin(fd, true); - zero(pollfd); - pollfd.fd = fd; - pollfd.events = POLLIN; - - if (poll(&pollfd, 1, -1) < 0) { - if (errno == EINTR) - continue; - - return n > 0 ? n : -errno; - } - - if (pollfd.revents != POLLIN) - return n > 0 ? n : -EIO; + if (r < 0) + return n > 0 ? n : r; continue; } @@ -2906,21 +2895,10 @@ ssize_t loop_write(int fd, const void *buf, size_t nbytes, bool do_poll) { continue; if (k < 0 && errno == EAGAIN && do_poll) { - struct pollfd pollfd; - - zero(pollfd); - pollfd.fd = fd; - pollfd.events = POLLOUT; - - if (poll(&pollfd, 1, -1) < 0) { - if (errno == EINTR) - continue; - - return n > 0 ? n : -errno; - } + int r = fd_pollout(fd, true); - if (pollfd.revents != POLLOUT) - return n > 0 ? n : -EIO; + if (r < 0) + return n > 0 ? n : r; continue; } -- 1.7.7.4 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel