#include <string.h>
#include <sys/poll.h>
#include <sys/ioctl.h>
+#include <errno.h>
#include <glib.h>
}
gboolean
-poll_serial (int fd, gint32 *error)
+poll_serial (int fd, gint32 *error, int timeout)
{
struct pollfd pinfo;
pinfo.events = POLLIN;
pinfo.revents = 0;
- if (poll (&pinfo, 1, 0) == -1) {
+ if (poll (&pinfo, 1, timeout) == -1) {
+ /* EINTR is an OK condition, we should not throw in the upper layer an IOException */
+ if (errno == EINTR)
+ return FALSE;
*error = -1;
return FALSE;
}