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 */