Recover from EINTR

This commit is contained in:
Justin Ethier 2017-08-16 22:43:00 -04:00
parent af30ac8066
commit d41b9e8d95

View file

@ -5686,10 +5686,15 @@ int read_from_port(port_type *p)
FILE *fp = p->fp;
char *buf = p->mem_buf;
while(1) {
errno = 0;
rv = fread(buf, sizeof(char), CYC_IO_BUF_LEN, fp);
//if (NULL == fgets(buf, CYC_IO_BUF_LEN, fp)) {
// rv = 0;
//}
if (rv != 0 || !ferror(fp) || errno != EINTR) {
break;
}
}
p->mem_buf_len = rv;
p->buf_idx = 0;
return rv;