diff --git a/main.c b/main.c index c3b391d..b0cfdd6 100644 --- a/main.c +++ b/main.c @@ -2557,12 +2557,14 @@ copy_fd_to_fd (int sfd, int dfd, char *buf, size_t buf_size) break; written = 0; - { - ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); - if (ret < 0) - return ret; - nread -= ret; - } + do + { + ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); + if (ret < 0) + return ret; + nread -= ret; + written += ret; + } while (nread); } return 0;