diff src/sighandlers.cc @ 5144:25b090e1be9f

[project @ 2005-02-15 12:06:05 by jwe]
author jwe
date Tue, 15 Feb 2005 12:06:44 +0000
parents 0f9108f298ab
children 4c8a2e4e0717
line wrap: on
line diff
--- a/src/sighandlers.cc	Mon Feb 14 15:48:47 2005 +0000
+++ b/src/sighandlers.cc	Tue Feb 15 12:06:44 2005 +0000
@@ -176,11 +176,28 @@
 {
 #if defined (HAVE_POSIX_SIGNALS)
   struct sigaction act, oact;
+
   act.sa_handler = handler;
   act.sa_flags = 0;
+
+  if (sig == SIGALRM)
+    {
+#if defined (SA_INTERRUPT)
+      act.sa_flags |= SA_INTERRUPT;
+#endif
+    }
+  else
+    {
+#if defined (SA_RESTART)
+      act.sa_flags |= SA_RESTART;
+#endif
+    }
+
   sigemptyset (&act.sa_mask);
   sigemptyset (&oact.sa_mask);
+
   sigaction (sig, &act, &oact);
+
   return oact.sa_handler;
 #else
   return signal (sig, handler);