From: Junio C Hamano Date: Mon, 20 Feb 2012 22:11:24 GMT Subject: Re: [PATCH] Ignore SIGPIPE when running a filter driver Message-ID: <7vsji5jgtv.fsf@alter.siamese.dyndns.org> In-Reply-To: <1329771217-9088-1-git-send-email-jehan@orb.com> Jehan Bing writes: > 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?