From: Chris Packham Date: Sat, 31 May 2014 10:39:39 GMT Subject: Re: [PATCH v2 2/2] connect.c: replace signal() with sigaction() Message-ID: <5389B16B.6070004@gmail.com> In-Reply-To: <1d11d5da7ebc3a6e0d4ab64802b601526c19113c.1401482787.git.jmmahler@gmail.com> On 31/05/14 08:58, Jeremiah Mahler wrote: > From signal(2) man page: > > The behavior of signal() varies across UNIX versions, and has also var‐ > ied historically across different versions of Linux. Avoid its use: > use sigaction(2) instead. > > Replaced signal() with sigaction() in connect.c > > Signed-off-by: Jeremiah Mahler > --- > connect.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/connect.c b/connect.c > index a983d06..b2a33c9 100644 > --- a/connect.c > +++ b/connect.c > @@ -665,11 +665,14 @@ struct child_process *git_connect(int fd[2], const char *url, > enum protocol protocol; > const char **arg; > struct strbuf cmd = STRBUF_INIT; > + struct sigaction sa; > > /* Without this we cannot rely on waitpid() to tell > * what happened to our children. > */ > - signal(SIGCHLD, SIG_DFL); > + memset(&sa, 0, sizeof(sa)); > + sa.sa_handler = SIG_DFL; > + sigaction(SIGCHLD, &sa, 0); I think this got lost in the wash with v1 but Documentation/CodingGuidelines says to use NULL here instead of 0. > > protocol = parse_connect_url(url, &hostandport, &path); > if (flags & CONNECT_DIAG_URL) { >