packsz = 0; while(1){ n = readn(fd, buf, sizeof buf); if(n == 0) break; if(n == -1 || write(pfd, buf, n) != n) sysfatal("could not fetch packfile: %r"); packsz += n; }