From: Ray Strode Date: Wed, 16 May 2007 19:50:31 +0000 (-0400) Subject: add ply_fd_has_data and ply_fd_can_take_data apis X-Git-Tag: 0.1.0~292 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7c3b04e4f9293d01f494bafb84243b02abb22ad;p=thirdparty%2Fplymouth.git add ply_fd_has_data and ply_fd_can_take_data apis The calls in this commit just do a one-off poll of the passed in fd to see if the fd is read for read or write call --- diff --git a/src/ply-utils.c b/src/ply-utils.c index 5db4a7fd..b793c614 100644 --- a/src/ply-utils.c +++ b/src/ply-utils.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -70,3 +71,31 @@ ply_write (int fd, return bytes_left_to_write == 0; } + +bool +ply_fd_has_data (int fd) +{ + struct pollfd poll_data; + int result; + + poll_data.fd = fd; + poll_data.events = POLLIN | POLLPRI; + poll_data.revents = 0; + result = poll (&poll_data, 1, 10); + + return result == 1; +} + +bool +ply_fd_can_take_data (int fd) +{ + struct pollfd poll_data; + int result; + + poll_data.fd = fd; + poll_data.events = POLLOUT; + poll_data.revents = 0; + result = poll (&poll_data, 1, 10); + + return result == 1; +} diff --git a/src/ply-utils.h b/src/ply-utils.h index 8b2ceee3..32bf6186 100644 --- a/src/ply-utils.h +++ b/src/ply-utils.h @@ -44,6 +44,8 @@ bool ply_open_unidirectional_pipe (int *sender_fd, bool ply_write (int fd, const void *buffer, size_t number_of_bytes); +bool ply_fd_has_data (int fd); +bool ply_fd_can_take_data (int fd); #endif #endif /* PLY_UTILS_H */