From 6971c383a933046341da07d30270a91434322426 Mon Sep 17 00:00:00 2001 From: hpa Date: Mon, 20 Dec 2004 22:31:04 +0000 Subject: [PATCH] Add support to deal with EAGAIN --- com32/lib/sys/line_input.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/com32/lib/sys/line_input.c b/com32/lib/sys/line_input.c index c24cf92..afeeec0 100644 --- a/com32/lib/sys/line_input.c +++ b/com32/lib/sys/line_input.c @@ -33,17 +33,23 @@ */ #include "file.h" +#include ssize_t __line_input(struct file_info *fp, char *buf, size_t bufsize, ssize_t (*get_char)(struct file_info *, void *, size_t)) { size_t n = 0; char ch; + int rv; ssize_t (* const Write)(struct file_info *, const void *, size_t) = fp->oop->write; for(;;) { - if ( get_char(fp, &ch, 1) != 1 ) + rv = get_char(fp, &ch, 1); + + if ( rv == -1 && (errno == EINTR || errno == EAGAIN) ) + continue; + else if ( rv != 1 ) return n; switch ( ch ) { -- 2.7.4