Re: [PATCH] copy.c: make copy_fd preserve meaningful errno
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 17, 2014, 23:08 UTC
- Message-ID
- <xmqq4mtxxw5z.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1416262453-30349-1-git-send-email-sbeller@google.com>
Stefan Beller <sbeller@google.com> writes:
> This patch was sent previously to the list as part of > that series[2], but it seems to be unrelated to me.
I am fine to queue obvious and trivial bits first before the larger main course. For now I'll queue this one and also the series that has been queued for a while, but at some point I suspect we would have to drop the latter.
Thanks.
Show 32 quoted lines
> [1] http://www.mail-archive.com/git@vger.kernel.org/msg61051.html
> [2] http://www.spinics.net/lists/git/msg240784.html
> 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;
> }