This makes mysignal implement reliable BSD semantics according to
Stevens' APUE. This was first attempted in 2001 but was reverted
due to problems with HP-UX 10.20 and select() and possibly grantpt().
Modern systems should be fine with it, but if any current platforms have
a problem with it now we can disable it just for those. ok djm@
memset(&sa, 0, sizeof(sa));
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
+ if (sig == SIGALRM) {
#ifdef SA_INTERRUPT
- if (sig == SIGALRM)
sa.sa_flags |= SA_INTERRUPT;
#endif
+ } else {
+#ifdef SA_RESTART
+ sa.sa_flags |= SA_RESTART;
+#endif
+ }
sa.sa_handler = act;
if (sigaction(sig, &sa, NULL) == -1)
return (mysig_t) -1;