X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=copy.c;h=c225d1b0ff0a67e637f7200ab5c2a917b550af4f;hb=5410a02ab9e6a1987147724f8ea65e6a077b3832;hp=7100eedbc3277b9b0997311459d054ba06950b61;hpb=c2f3bf071ee90b01f2d629921bb04c4f798f02fa;p=git.git diff --git a/copy.c b/copy.c index 7100eedbc..c225d1b0f 100644 --- a/copy.c +++ b/copy.c @@ -3,10 +3,9 @@ int copy_fd(int ifd, int ofd) { while (1) { - int len; char buffer[8192]; char *buf = buffer; - len = xread(ifd, buffer, sizeof(buffer)); + ssize_t len = xread(ifd, buffer, sizeof(buffer)); if (!len) break; if (len < 0) { @@ -22,14 +21,16 @@ int copy_fd(int ifd, int ofd) buf += written; len -= written; } - else if (!written) + else if (!written) { + close(ifd); return error("copy-fd: write returned 0"); - else + } else { + close(ifd); return error("copy-fd: write returned %s", strerror(errno)); + } } } close(ifd); return 0; } -