-
/*
* signals.c -- general signals interface for nmh
*
- * $Id$
- *
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
SIGPROCMASK (int how, const sigset_t *set, sigset_t *oset)
{
#ifdef POSIX_SIGNALS
- return sigprocmask(how, set, oset);
+ return sigprocmask(how, set, oset);
#else
# ifdef BSD_SIGNALS
- switch(how) {
- case SIG_BLOCK:
- *oset = sigblock(*set);
- break;
- case SIG_UNBLOCK:
- sigfillset(*oset);
- *oset = sigsetmask(*oset);
- sigsetmask(*oset & ~(*set));
- break;
- case SIG_SETMASK:
- *oset = sigsetmask(*set);
- break;
- default:
- adios(NULL, "unknown flag in SIGPROCMASK");
- break;
- }
- return 0;
+ switch(how) {
+ case SIG_BLOCK:
+ *oset = sigblock(*set);
+ break;
+ case SIG_UNBLOCK:
+ sigfillset(*oset);
+ *oset = sigsetmask(*oset);
+ sigsetmask(*oset & ~(*set));
+ break;
+ case SIG_SETMASK:
+ *oset = sigsetmask(*set);
+ break;
+ default:
+ adios(NULL, "unknown flag in SIGPROCMASK");
+ break;
+ }
+ return 0;
# endif
#endif
}
SIGNAL (int sig, SIGNAL_HANDLER func)
{
#ifdef POSIX_SIGNALS
- struct sigaction act, oact;
+ struct sigaction act, oact;
- act.sa_handler = func;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
+ act.sa_handler = func;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
- if (sig == SIGALRM) {
+ if (sig == SIGALRM) {
# ifdef SA_INTERRUPT
- act.sa_flags |= SA_INTERRUPT; /* SunOS */
+ act.sa_flags |= SA_INTERRUPT; /* SunOS */
# endif
- } else {
+ } else {
# ifdef SA_RESTART
- act.sa_flags |= SA_RESTART; /* SVR4, BSD4.4 */
+ act.sa_flags |= SA_RESTART; /* SVR4, BSD4.4 */
# endif
- }
- if (sigaction(sig, &act, &oact) < 0)
- return (SIG_ERR);
- return (oact.sa_handler);
+ }
+ if (sigaction(sig, &act, &oact) < 0)
+ return (SIG_ERR);
+ return (oact.sa_handler);
#else
- return signal (sig, func);
+ return signal (sig, func);
#endif
}
SIGNAL2 (int sig, SIGNAL_HANDLER func)
{
#ifdef POSIX_SIGNALS
- struct sigaction act, oact;
+ struct sigaction act, oact;
- if (sigaction(sig, NULL, &oact) < 0)
- return (SIG_ERR);
- if (oact.sa_handler != SIG_IGN) {
- act.sa_handler = func;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
+ if (sigaction(sig, NULL, &oact) < 0)
+ return (SIG_ERR);
+ if (oact.sa_handler != SIG_IGN) {
+ act.sa_handler = func;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
- if (sig == SIGALRM) {
+ if (sig == SIGALRM) {
# ifdef SA_INTERRUPT
- act.sa_flags |= SA_INTERRUPT; /* SunOS */
+ act.sa_flags |= SA_INTERRUPT; /* SunOS */
# endif
- } else {
+ } else {
# ifdef SA_RESTART
- act.sa_flags |= SA_RESTART; /* SVR4, BSD4.4 */
+ act.sa_flags |= SA_RESTART; /* SVR4, BSD4.4 */
# endif
+ }
+ if (sigaction(sig, &act, &oact) < 0)
+ return (SIG_ERR);
}
- if (sigaction(sig, &act, &oact) < 0)
- return (SIG_ERR);
- }
- return (oact.sa_handler);
+ return (oact.sa_handler);
#else
- SIGNAL_HANDLER ofunc;
+ SIGNAL_HANDLER ofunc;
- if ((ofunc = signal (sig, SIG_IGN)) != SIG_IGN)
- signal (sig, func);
- return ofunc;
+ if ((ofunc = signal (sig, SIG_IGN)) != SIG_IGN)
+ signal (sig, func);
+ return ofunc;
#endif
}
-