diff options
author | Dan Dennedy <ddennedy@ddennedy.localdomain> | 2008-03-27 09:48:02 -0700 |
---|---|---|
committer | Dan Dennedy <ddennedy@ddennedy.localdomain> | 2008-03-27 09:48:02 -0700 |
commit | a118281f859d9a4e47d682da04e88c1d2f3c4ddd (patch) | |
tree | 9928bedfcda1253996f394c309b07ea03151e5e1 | |
parent | 77b6ef1f9e9f963a5e39cb844169379848a1118c (diff) | |
download | libraw1394-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.c | 5 |
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) { |