(interrupt_handler):
authorJim Meyering <jim@meyering.net>
Tue, 18 Jan 2000 07:28:47 +0000 (07:28 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 18 Jan 2000 07:28:47 +0000 (07:28 +0000)
Don't use SA_INTERRUPT to decide whether to call sigaction, as
POSIX.1 doesn't require SA_INTERRUPT and some systems
(e.g. Solaris 7) don't define it.  Use SA_NOCLDSTOP instead;
it's been part of POSIX.1 since day 1 (in 1988).
(install_handler): Use SA_NOCLDSTOP, not _POSIX_VERSION,
to decide whether to call sigaction; this fixes an old typo.

src/dd.c

index 4bb46c6c96f7e0cb854c83b61d172e92c05804fb..f2b8a63cbb8e7429b78dbfd2f376955dfee5a000 100644 (file)
--- a/src/dd.c
+++ b/src/dd.c
@@ -1,5 +1,5 @@
 /* dd -- convert a file while copying it.
-   Copyright (C) 85, 90, 91, 1995-1999 Free Software Foundation, Inc.
+   Copyright (C) 85, 90, 91, 1995-2000 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -381,16 +381,16 @@ quit (int code)
 static RETSIGTYPE
 interrupt_handler (int sig)
 {
-#ifdef SA_INTERRUPT
+#ifdef SA_NOCLDSTOP
   struct sigaction sigact;
 
   sigact.sa_handler = SIG_DFL;
   sigemptyset (&sigact.sa_mask);
   sigact.sa_flags = 0;
   sigaction (sig, &sigact, NULL);
-#else                          /* !SA_INTERRUPT */
+#else
   signal (sig, SIG_DFL);
-#endif                         /* SA_INTERRUPT */
+#endif
   cleanup ();
   kill (getpid (), sig);
 }
@@ -406,7 +406,7 @@ siginfo_handler (int sig ATTRIBUTE_UNUSED)
 static void
 install_handler (int sig_num, RETSIGTYPE (*sig_handler) (int sig))
 {
-#ifdef _POSIX_VERSION
+#ifdef SA_NOCLDSTOP
   struct sigaction sigact;
   sigaction (sig_num, NULL, &sigact);
   if (sigact.sa_handler != SIG_IGN)