diff options
author | Jeff King <peff@peff.net> | 2019-03-05 05:11:39 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-03-05 07:02:01 +0100 |
commit | 37c80012f1415bc4ff23def735a87cbd395bca31 (patch) | |
tree | e0bc7f5f016e97443f5ae9753cc52701123bdacd /pkt-line.c | |
parent | Git 2.20.1 (diff) | |
download | git-37c80012f1415bc4ff23def735a87cbd395bca31.tar.xz git-37c80012f1415bc4ff23def735a87cbd395bca31.zip |
fetch: avoid calling write_or_die()
The write_or_die() function has one quirk that a caller might not
expect: when it sees EPIPE from the write() call, it translates that
into a death by SIGPIPE. This doesn't change the overall behavior (the
program exits either way), but it does potentially confuse test scripts
looking for a non-signal exit code.
Let's switch away from using write_or_die() in a few code paths, which
will give us more consistent exit codes. It also gives us the
opportunity to write more descriptive error messages, since we have
context that write_or_die() does not.
Note that this won't do much by itself, since we'd typically be killed
by SIGPIPE before write_or_die() even gets a chance to do its thing.
That will be addressed in the next patch.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to '')
-rw-r--r-- | pkt-line.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/pkt-line.c b/pkt-line.c index 04d10bbd03..9944c7c75d 100644 --- a/pkt-line.c +++ b/pkt-line.c @@ -88,13 +88,15 @@ static void packet_trace(const char *buf, unsigned int len, int write) void packet_flush(int fd) { packet_trace("0000", 4, 1); - write_or_die(fd, "0000", 4); + if (write_in_full(fd, "0000", 4) < 0) + die_errno(_("unable to write flush packet")); } void packet_delim(int fd) { packet_trace("0001", 4, 1); - write_or_die(fd, "0001", 4); + if (write_in_full(fd, "0001", 4) < 0) + die_errno(_("unable to write delim packet")); } int packet_flush_gently(int fd) |