diff --git a/t.c b/t.c index af2e3a8..71dbe88 100644 --- a/t.c +++ b/t.c @@ -121,13 +121,15 @@ int main(int argc,char* argv[]) { io_wantread(pfd[1]); size_t totalread = 0; size_t totalwrite = 0; - for (; iob_bytesleft(b) ;) { + for (;;) { io_wait(); int fd; while ((fd = io_canwrite()) != -1) { // printf("write event on fd %d\n", fd); long r = iob_send(pfd[0], b); if (r > 0) totalwrite += r; + if (r == 0) + io_dontwantwrite(pfd[0]); printf("r = %d (sum written %zu, total back size %zu)\n", r, totalwrite, total); } while ((fd = io_canread()) != -1) { @@ -135,6 +137,10 @@ int main(int argc,char* argv[]) { ssize_t r = read(fd, buf, sizeof buf); if (r > 0) totalread += r; if (r < sizeof buf) io_eagain(fd); + if (r == 0 || totalread == total) { + printf("read %zu bytes total\n", totalread); + return totalread == total; + } } }