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>
This commit is contained in:
parent
ed54970324
commit
b992fe104e
@ -634,7 +634,7 @@ int in_async(void)
|
|||||||
return !pthread_equal(main_thread, pthread_self());
|
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);
|
pthread_exit((void *)(intptr_t)code);
|
||||||
}
|
}
|
||||||
@ -684,13 +684,26 @@ int in_async(void)
|
|||||||
return process_is_async;
|
return process_is_async;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NORETURN async_exit(int code)
|
static void NORETURN async_exit(int code)
|
||||||
{
|
{
|
||||||
exit(code);
|
exit(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#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 start_async(struct async *async)
|
||||||
{
|
{
|
||||||
int need_in, need_out;
|
int need_in, need_out;
|
||||||
|
@ -139,7 +139,7 @@ struct async {
|
|||||||
int start_async(struct async *async);
|
int start_async(struct async *async);
|
||||||
int finish_async(struct async *async);
|
int finish_async(struct async *async);
|
||||||
int in_async(void);
|
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
|
* This callback should initialize the child process and preload the
|
||||||
|
@ -1,19 +1,6 @@
|
|||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
#include "run-command.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
|
* Some cases use stdio, but want to flush after the write
|
||||||
* to get error handling (and to get better interactive
|
* to get error handling (and to get better interactive
|
||||||
|
Loading…
x
Reference in New Issue
Block a user