From: Seija Kijin <doremylover123@xxxxxxxxx> Use pthread_exit instead of async_exit. This means we do not have to deal with Windows's implementation requiring an unsigned exit coded despite the POSIX exit code requiring a signed exit code. Signed-off-by: Seija Kijin <doremylover123@xxxxxxxxx> --- run-command: remove async_exit Use pthread_exit instead of async_exit. This means we do not have to deal with Windows's implementation requiring an unsigned exit coded despite the POSIX exit code requiring a signed exit code. Signed-off-by: Seija Kijin doremylover123@xxxxxxxxx Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1423%2FAtariDreams%2Fconsistency-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1423/AtariDreams/consistency-v3 Pull-Request: https://github.com/git/git/pull/1423 Range-diff vs v2: 1: d4cf19107ed ! 1: 21833375dca run-command: make async_exit usage consistent @@ Metadata Author: Seija Kijin <doremylover123@xxxxxxxxx> ## Commit message ## - run-command: make async_exit usage consistent + run-command: remove async_exit - Use async_exit instead of pthread_exit, - and make async_exit inline. + Use pthread_exit instead of async_exit. - Functions were reordered - so that this would compile. + This means we do not have + to deal with Windows's implementation + requiring an unsigned exit coded + despite the POSIX exit code requiring + a signed exit code. Signed-off-by: Seija Kijin <doremylover123@xxxxxxxxx> @@ run-command.c: static void *run_thread(void *data) + return 0; /* no asyncs started yet */ + return !pthread_equal(main_thread, pthread_self()); +} -+ -+static inline void NORETURN async_exit(int code) -+{ -+ pthread_exit((void *)(intptr_t)code); -+} + static NORETURN void die_async(const char *err, va_list params) { report_fn die_message_fn = get_die_message_routine(); -@@ run-command.c: static NORETURN void die_async(const char *err, va_list params) - close(async->proc_in); - if (async->proc_out >= 0) - close(async->proc_out); -- pthread_exit((void *)128); -+ async_exit(128); - } - - exit(128); @@ run-command.c: static int async_die_is_recursing(void) return ret != NULL; } @@ run-command.c: int in_async(void) } -static void NORETURN async_exit(int code) -+static inline void NORETURN async_exit(int code) +-{ +- exit(code); +-} +- + #endif + + void check_pipe(int err) { - exit(code); - } + if (err == EPIPE) { +- if (in_async()) +- async_exit(141); ++ if (in_async()) { ++#ifdef NO_PTHREADS ++ exit(141); ++#else ++ pthread_exit((void *)141); ++#endif ++ } + + signal(SIGPIPE, SIG_DFL); + raise(SIGPIPE); run-command.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/run-command.c b/run-command.c index 756f1839aab..4a9bcd6c841 100644 --- a/run-command.c +++ b/run-command.c @@ -1030,6 +1030,13 @@ static void *run_thread(void *data) return (void *)ret; } +int in_async(void) +{ + if (!main_thread_set) + return 0; /* no asyncs started yet */ + return !pthread_equal(main_thread, pthread_self()); +} + static NORETURN void die_async(const char *err, va_list params) { report_fn die_message_fn = get_die_message_routine(); @@ -1055,18 +1062,6 @@ static int async_die_is_recursing(void) return ret != NULL; } -int in_async(void) -{ - if (!main_thread_set) - return 0; /* no asyncs started yet */ - return !pthread_equal(main_thread, pthread_self()); -} - -static void NORETURN async_exit(int code) -{ - pthread_exit((void *)(intptr_t)code); -} - #else static struct { @@ -1112,18 +1107,18 @@ int in_async(void) return process_is_async; } -static void NORETURN async_exit(int code) -{ - exit(code); -} - #endif void check_pipe(int err) { if (err == EPIPE) { - if (in_async()) - async_exit(141); + if (in_async()) { +#ifdef NO_PTHREADS + exit(141); +#else + pthread_exit((void *)141); +#endif + } signal(SIGPIPE, SIG_DFL); raise(SIGPIPE); base-commit: a38d39a4c50d1275833aba54c4dbdfce9e2e9ca1 -- gitgitgadget