summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/waiter/waiter.c7
-rw-r--r--ui/ncurses/nc-cui.c2
-rw-r--r--ui/twin/main-generic.c2
3 files changed, 7 insertions, 4 deletions
diff --git a/lib/waiter/waiter.c b/lib/waiter/waiter.c
index e201ad1..d684348 100644
--- a/lib/waiter/waiter.c
+++ b/lib/waiter/waiter.c
@@ -3,6 +3,7 @@
#include <stdbool.h>
#include <string.h>
#include <assert.h>
+#include <errno.h>
#include <sys/time.h>
#include <talloc/talloc.h>
@@ -222,11 +223,13 @@ int waiter_poll(struct waitset *set)
timeout_ms = -1;
}
-
rc = poll(set->pollfds, set->n_io_waiters, timeout_ms);
- if (rc < 0)
+ if (rc < 0) {
+ if (errno == EINTR)
+ rc = 0;
goto out;
+ }
for (i = 0; i < set->n_io_waiters; i++) {
struct waiter *waiter = set->io_waiters[i];
diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c
index 4baaec1..71fec5e 100644
--- a/ui/ncurses/nc-cui.c
+++ b/ui/ncurses/nc-cui.c
@@ -594,7 +594,7 @@ int cui_run(struct cui *cui, struct pmenu *main, unsigned int default_item)
while (1) {
int result = waiter_poll(cui->waitset);
- if (result < 0 && errno != EINTR) {
+ if (result < 0) {
pb_log("%s: poll: %s\n", __func__, strerror(errno));
break;
}
diff --git a/ui/twin/main-generic.c b/ui/twin/main-generic.c
index fcda709..99520d0 100644
--- a/ui/twin/main-generic.c
+++ b/ui/twin/main-generic.c
@@ -204,7 +204,7 @@ static int run(struct pbt_client *client)
while (1) {
int result = waiter_poll(client->waitset);
- if (result < 0 && errno != EINTR) {
+ if (result < 0) {
pb_log("%s: poll: %s\n", __func__, strerror(errno));
break;
}
OpenPOWER on IntegriCloud