On Wed, May 28, 2014 at 08:07:38PM +1200, Chris Packham wrote: > On 28/05/14 18:14, Jeremiah Mahler wrote: > > From signal(2) > > > > 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. See Portability below. > > Minor nit. The last sentence applies to the man page you're quoting and > doesn't really make sense when viewed in the context of this commit > message. Same applies to other patches in this series. > Yes, that is confusing. ... > > @@ -66,8 +66,12 @@ static void set_progress_signal(void) > > static void clear_progress_signal(void) > > { > > struct itimerval v = {{0,},}; > > + struct sigaction sa; > > + > > + memset(&sa, 0, sizeof(sa)); > > + sa.sa_handler = SIG_IGN; > > A C99 initialiser here would save the call to memset. Unfortunately > Documentation/CodingGuidelines is fairly clear on not using C99 > initialisers, given the fact we're now at git 2.0 maybe it's time to > revisit this policy? > struct sigaction sa = { .sa_handler = SIG_IGN }; I do like that. This brings up another issue. memset(&sa, 0, sizeof(sa)); The sigaction examples I have seen always use memset. The manpage for sigaction(2) doesn't mention it. Other code it Git uses memset with sigaction (see fast-import.c line 530). Is this struct guaranteed to be initialized to zero so I don't have to use memset? -- Jeremiah Mahler jmmahler@xxxxxxxxx http://github.com/jmahler -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html