Update copy_fd to return a meaningful errno on failure.

Signed-off-by: Ronnie Sahlberg <sahlb...@google.com>
Signed-off-by: Jonathan Nieder <jrnie...@gmail.com>
---
 copy.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/copy.c b/copy.c
index f2970ec..a8d366e 100644
--- a/copy.c
+++ b/copy.c
@@ -8,12 +8,17 @@ int copy_fd(int ifd, int ofd)
                if (!len)
                        break;
                if (len < 0) {
-                       return error("copy-fd: read returned %s",
-                                    strerror(errno));
+                       int save_errno = errno;
+                       error("copy-fd: read returned %s", strerror(errno));
+                       errno = save_errno;
+                       return -1;
+               }
+               if (write_in_full(ofd, buffer, len) < 0) {
+                       int save_errno = errno;
+                       error("copy-fd: write returned %s", strerror(errno));
+                       errno = save_errno;
+                       return -1;
                }
-               if (write_in_full(ofd, buffer, len) < 0)
-                       return error("copy-fd: write returned %s",
-                                    strerror(errno));
        }
        return 0;
 }
-- 
2.1.0.rc2.206.gedb03e5

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to