Re: [PATCH 0/5] replace signal() with sigaction()
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- May 28, 2014, 07:40 UTC
- Message-ID
- <53859307.8080506@viscovery.net>
- In-Reply-To
- <1401257655-6043-1-git-send-email-jmmahler@gmail.com>
Am 5/28/2014 8:14, schrieb Jeremiah Mahler:
Show 9 quoted lines
> 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. > > This patch set replaces calls to signal() with sigaction() in all files > except sigchain.c. sigchain.c is a bit more complicated than the others > and will be done in a separate patch.
In compat/mingw.c we have:
int sigaction(int sig, struct sigaction *in, struct sigaction *out)
{
if (sig != SIGALRM)
return errno = EINVAL,
error("sigaction only implemented for SIGALRM");
if (out != NULL)
return errno = EINVAL,
error("sigaction: param 3 != NULL not implemented");timer_fn = in->sa_handler; return 0; }
Notice "only implemented for SIGALRM". Are adding the missing signals somewhere (here or in a later patch)?
Show 11 quoted lines
> Jeremiah Mahler (5): > progress.c: replace signal() with sigaction() > daemon.c run_service(): replace signal() with sigaction() > daemon.c child_handler(): replace signal() with sigaction() > daemon.c service_loop(): replace signal() with sigaction() > connect.c: replace signal() with sigaction() > > connect.c | 5 ++++- > daemon.c | 15 ++++++++++++--- > progress.c | 6 +++++- > 3 files changed, 21 insertions(+), 5 deletions(-)
Isn't this a bit too much of code churn, given that there were no bug reports where signal handling is identified as the culprit despite the warning you cited above?
-- Hannes