Subject: bug#31218: kill() not wrapped with HAVE_WORKING_FORK

From: "Burton, Ross" <[email-masked]>
Date: Thu, 19 Apr 2018 10:59:44 +0100

Hi,

In sdiff.c the use of kill() is guarded in cleanup():

static void
cleanup (int signo __attribute__((unused)))
{
#if HAVE_WORKING_FORK
  if (0 < diffpid)
    kill (diffpid, SIGPIPE);
#endif
  if (tmpname)
    unlink (tmpname);
}

However, in checksigs() it isn't.  A simple fix to help build
diffutils under mingw (which doesn't have kill()) is:

+--- a/src/sdiff.c
++++ b/src/sdiff.c
+@@ -805,7 +805,9 @@
+
+       /* Yield an exit status indicating that a signal was received.  */
+       untrapsig (s);
++#if HAVE_WORKING_FORK
+       kill (getpid (), s);
++#endif
+
+       /* That didn't work, so exit with error status.  */
+       exit (EXIT_TROUBLE);

Cheers,
Ross