summaryrefslogtreecommitdiffstats
path: root/run-command.c
diff options
context:
space:
mode:
authorLars Schneider <larsxschneider@gmail.com>2016-10-16 16:20:27 -0700
committerJunio C Hamano <gitster@pobox.com>2016-10-17 11:36:49 -0700
commitb992fe104ecde5a362a31d610de96518f398d5c0 (patch)
tree7b63544375c45467f481b0e9898146c3b5a6c147 /run-command.c
parented54970324ec0be0f11e1c2af100ea8b1c01a05a (diff)
downloadgit-b992fe104ecde5a362a31d610de96518f398d5c0.tar.gz
git-b992fe104ecde5a362a31d610de96518f398d5c0.tar.xz
run-command: move check_pipe() from write_or_die to run_command
Move check_pipe() to run_command and make it public. This is necessary to call the function from pkt-line in a subsequent patch. While at it, make async_exit() static to run_command.c as it is no longer used from outside. Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'run-command.c')
-rw-r--r--run-command.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/run-command.c b/run-command.c
index 5a4dbb66d..326936273 100644
--- a/run-command.c
+++ b/run-command.c
@@ -634,7 +634,7 @@ int in_async(void)
return !pthread_equal(main_thread, pthread_self());
}
-void NORETURN async_exit(int code)
+static void NORETURN async_exit(int code)
{
pthread_exit((void *)(intptr_t)code);
}
@@ -684,13 +684,26 @@ int in_async(void)
return process_is_async;
}
-void NORETURN async_exit(int code)
+static void NORETURN async_exit(int code)
{
exit(code);
}
#endif
+void check_pipe(int err)
+{
+ if (err == EPIPE) {
+ if (in_async())
+ async_exit(141);
+
+ signal(SIGPIPE, SIG_DFL);
+ raise(SIGPIPE);
+ /* Should never happen, but just in case... */
+ exit(141);
+ }
+}
+
int start_async(struct async *async)
{
int need_in, need_out;