vm/filecopy: support nonblocking fd in read_all

This will be needed to (non blocking) check if data is available on pipe -
especially to receive possible error from the other end (which will be
introduced sometime later).
This commit is contained in:
Marek Marczykowski 2012-08-25 01:22:00 +02:00
parent 4ca3961684
commit 591a89c9d2

View File

@ -75,9 +75,14 @@ int read_all(int fd, void *buf, int size)
return 0; return 0;
} }
if (ret < 0) { if (ret < 0) {
perror_wrapper("read"); if (errno != EAGAIN)
perror_wrapper("read");
return 0; return 0;
} }
if (got_read == 0) {
// force blocking operation on further reads
set_block(fd);
}
got_read += ret; got_read += ret;
} }
// fprintf(stderr, "read %d bytes\n", size); // fprintf(stderr, "read %d bytes\n", size);