summaryrefslogtreecommitdiff
path: root/copy.c
diff options
context:
space:
mode:
authorAriel Badichi <abadichi@bezeqint.net>2008-04-23 01:05:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-04-23 04:21:08 (GMT)
commit8b1f6de854ae95eb3f4225a71aad29ca086cfd2e (patch)
treec1baf44b966272055beebd49045f2c9244ec6a82 /copy.c
parent82881b38235d0a46a4486dc5dc819c5d0ee3f2c1 (diff)
downloadgit-8b1f6de854ae95eb3f4225a71aad29ca086cfd2e.zip
git-8b1f6de854ae95eb3f4225a71aad29ca086cfd2e.tar.gz
git-8b1f6de854ae95eb3f4225a71aad29ca086cfd2e.tar.bz2
copy.c: copy_fd - correctly report write errors
Previously, the errno could have been lost due to an intervening close() call. This patch also contains minor cosmetic changes. Signed-off-by: Ariel Badichi <abadichi@bezeqint.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'copy.c')
-rw-r--r--copy.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/copy.c b/copy.c
index afc4fbf..e54d15a 100644
--- a/copy.c
+++ b/copy.c
@@ -9,8 +9,7 @@ int copy_fd(int ifd, int ofd)
if (!len)
break;
if (len < 0) {
- int read_error;
- read_error = errno;
+ int read_error = errno;
close(ifd);
return error("copy-fd: read returned %s",
strerror(read_error));
@@ -25,9 +24,10 @@ int copy_fd(int ifd, int ofd)
close(ifd);
return error("copy-fd: write returned 0");
} else {
+ int write_error = errno;
close(ifd);
return error("copy-fd: write returned %s",
- strerror(errno));
+ strerror(write_error));
}
}
}
@@ -48,7 +48,7 @@ int copy_file(const char *dst, const char *src, int mode)
}
status = copy_fd(fdi, fdo);
if (close(fdo) != 0)
- return error("%s: write error: %s", dst, strerror(errno));
+ return error("%s: close error: %s", dst, strerror(errno));
if (!status && adjust_shared_perm(dst))
return -1;