Re: [PATCH] Ignore SIGPIPE when running a filter driver
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 20, 2012, 22:11 UTC
- Message-ID
- <7vsji5jgtv.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1329771217-9088-1-git-send-email-jehan@orb.com>
Jehan Bing <jehan@orb.com> writes:
Show 26 quoted lines
> diff --git a/convert.c b/convert.c
> index c06309f..5d312cb 100644
> --- a/convert.c
> +++ b/convert.c
> @@ -2,6 +2,7 @@
> #include "attr.h"
> #include "run-command.h"
> #include "quote.h"
> +#include "sigchain.h"
>
> /*
> * convert.c - convert a file when checking it out and checking it in.
> @@ -360,12 +361,16 @@ static int filter_buffer(int in, int out, void *data)
> if (start_command(&child_process))
> return error("cannot fork to run external filter %s", params->cmd);
>
> + sigchain_push(SIGPIPE, SIG_IGN);
> +
> write_err = (write_in_full(child_process.in, params->src, params->size) < 0);
> if (close(child_process.in))
> write_err = 1;
> if (write_err)
> error("cannot feed the input to external filter %s", params->cmd);
>
> + sigchain_pop(SIGPIPE);
> +Thanks.
I think this is OK on a POSIX system where this function is run by start_async() which is implemented with a forked child process.
I do not now if it poses a issue on Windows, though. Johannes, any comments?