mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-15 16:57:35 +02:00
Recover from EINTR
This commit is contained in:
parent
af30ac8066
commit
d41b9e8d95
1 changed files with 9 additions and 4 deletions
13
runtime.c
13
runtime.c
|
@ -5686,10 +5686,15 @@ int read_from_port(port_type *p)
|
||||||
FILE *fp = p->fp;
|
FILE *fp = p->fp;
|
||||||
char *buf = p->mem_buf;
|
char *buf = p->mem_buf;
|
||||||
|
|
||||||
rv = fread(buf, sizeof(char), CYC_IO_BUF_LEN, fp);
|
while(1) {
|
||||||
//if (NULL == fgets(buf, CYC_IO_BUF_LEN, fp)) {
|
errno = 0;
|
||||||
// rv = 0;
|
rv = fread(buf, sizeof(char), CYC_IO_BUF_LEN, fp);
|
||||||
//}
|
|
||||||
|
if (rv != 0 || !ferror(fp) || errno != EINTR) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
p->mem_buf_len = rv;
|
p->mem_buf_len = rv;
|
||||||
p->buf_idx = 0;
|
p->buf_idx = 0;
|
||||||
return rv;
|
return rv;
|
||||||
|
|
Loading…
Add table
Reference in a new issue