summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar ddennedy 2008-03-27 20:25:23 +0000
committerGravatar ddennedy 2008-03-27 20:25:23 +0000
commit8bb915dd16bfc27fa206a850e9f56439e5e424ee (patch)
tree9928bedfcda1253996f394c309b07ea03151e5e1
parentfix documentation on raw1394_update_config_rom (diff)
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(). git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@177 53a565d1-3bb7-0310-b661-cf11e63c67ab
-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) {
amp;id=9c582d04bc1e4107adfe5a07a3d32dd6077f16ac&follow=1'>added specGravatar John Cowan 2-0/+383 2020-10-18fix plist size proc; rewrite dict-entries to use foldGravatar Arvydas Silanskas 2-3/+10 2020-10-18alist dict predicate check only first element; plist and alist size remove un...Gravatar Arvydas Silanskas 2-17/+5 2020-10-18remove old test fileGravatar Arvydas Silanskas 1-392/+0 2020-10-18add srfi69 implGravatar Arvydas Silanskas 9-55/+223 2020-10-18tests against externals; registration; alist and plist implementations:Gravatar Arvydas Silanskas 7-53/+669 2020-09-16internals impl; testsGravatar Arvydas Silanskas 3-74/+589