Lars Schneider <larsxschnei...@gmail.com> writes: >> I do not offhand know if the topic is otherwise ready as-is, or >> needs further work. When you need to reroll, you'd also need to >> fetch from the result of the above from me first and then start your >> work from it, though, if we go that route. > > Sounds good to me!
OK, here is what I queued, then. -- >8 -- From: Lars Schneider <larsxschnei...@gmail.com> Date: Tue, 20 Sep 2016 21:02:39 +0200 Subject: [PATCH] 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 <larsxschnei...@gmail.com> Signed-off-by: Ramsay Jones <ram...@ramsayjones.plus.com> Signed-off-by: Junio C Hamano <gits...@pobox.com> --- run-command.c | 17 +++++++++++++++-- run-command.h | 2 +- write_or_die.c | 13 ------------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/run-command.c b/run-command.c index 5a4dbb6..3269362 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; diff --git a/run-command.h b/run-command.h index 5066649..cf29a31 100644 --- a/run-command.h +++ b/run-command.h @@ -139,7 +139,7 @@ struct async { int start_async(struct async *async); int finish_async(struct async *async); int in_async(void); -void NORETURN async_exit(int code); +void check_pipe(int err); /** * This callback should initialize the child process and preload the diff --git a/write_or_die.c b/write_or_die.c index 0734432..eab8c8d 100644 --- a/write_or_die.c +++ b/write_or_die.c @@ -1,19 +1,6 @@ #include "cache.h" #include "run-command.h" -static 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); - } -} - /* * Some cases use stdio, but want to flush after the write * to get error handling (and to get better interactive -- 2.10.0-530-g67247c9