aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Dennedy <ddennedy@ddennedy.localdomain>2008-03-27 09:48:02 -0700
committerDan Dennedy <ddennedy@ddennedy.localdomain>2008-03-27 09:48:02 -0700
commita118281f859d9a4e47d682da04e88c1d2f3c4ddd (patch)
tree9928bedfcda1253996f394c309b07ea03151e5e1
parent77b6ef1f9e9f963a5e39cb844169379848a1118c (diff)
downloadlibraw1394-a118281f859d9a4e47d682da04e88c1d2f3c4ddd.tar.gz
eventloop.c: apply patch from Jonas Bonn to retry read when failed with EINTR.
This can occur when libraw1394 caller receives a signal while in this read and the caller is not using a signal handler set with signal().
-rw-r--r--src/eventloop.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/eventloop.c b/src/eventloop.c
index 0ddd455..4a027b2 100644
--- a/src/eventloop.c
+++ b/src/eventloop.c
@@ -21,6 +21,7 @@
#include <config.h>
#include <unistd.h>
#include <byteswap.h>
+#include <errno.h>
#include "raw1394.h"
#include "kernel-raw1394.h"
@@ -32,8 +33,8 @@ int raw1394_loop_iterate(struct raw1394_handle *handle)
struct raw1394_request req;
int retval = 0, channel;
- if (read(handle->fd, &req, sizeof(req)) < 0) {
- return -1;
+ while (read(handle->fd, &req, sizeof(req)) < 0) {
+ if (errno != EINTR) return -1;
}
switch (req.type) {