We are making POSIX signal support a requirement; remove all support for
authorKen Hornstein <kenh@pobox.com>
Mon, 9 Jan 2012 18:56:30 +0000 (13:56 -0500)
committerKen Hornstein <kenh@pobox.com>
Mon, 9 Jan 2012 18:56:30 +0000 (13:56 -0500)
other signal interfaces.

15 files changed:
configure.ac
h/signals.h
sbr/context_save.c
sbr/lock_file.c
sbr/seq_save.c
sbr/signals.c
uip/mhlsbr.c
uip/mhmail.c
uip/mhshowsbr.c
uip/msh.c
uip/post.c
uip/prompter.c
uip/rcvtty.c
uip/sendsbr.c
uip/slocal.c

index db75827..2a56e97 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl configure.in -- autoconf template for nmh
+dnl configure.ac -- autoconf template for nmh
 dnl
 
 dnl Move this up a bit
@@ -487,8 +487,7 @@ AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
 dnl ---------------
 dnl CHECK FUNCTIONS
 dnl ---------------
-AC_CHECK_FUNCS(writev lstat tzset getutent nl_langinfo sigaction sigprocmask \
-              sigblock sigsetmask sighold sigrelse)
+AC_CHECK_FUNCS(writev lstat tzset getutent nl_langinfo)
 
 dnl Look for the initgroups() declaration.  On AIX 4.[13], Solaris 4.1.3, and
 dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in
@@ -763,18 +762,6 @@ AC_TYPE_UID_T
 AC_TYPE_MODE_T
 AC_TYPE_SIZE_T
 
-dnl Check for sigset_t.  Currently I'm looking in
-dnl <sys/types.h> and <signal.h>.  Others might need
-dnl to be added.
-AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <signal.h>]], [[sigset_t tempsigset;]])],
-nmh_cv_type_sigset_t=yes,nmh_cv_type_sigset_t=no)])
-if test $nmh_cv_type_sigset_t = no; then
-  AC_DEFINE(sigset_t, unsigned int,
-    [Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't define.])
-fi
-
 dnl ----------------
 dnl CHECK STRUCTURES
 dnl ----------------
@@ -795,34 +782,6 @@ AC_CHECK_MEMBERS(struct utmp.ut_type,,,[#include <utmp.h>])
 
 AC_STRUCT_DIRENT_D_TYPE
 
-dnl -------------
-dnl CHECK SIGNALS
-dnl -------------
-dnl What style of signal do you have (POSIX, BSD, or SYSV)?
-AH_TEMPLATE(RELIABLE_SIGNALS, [Define to 1 if you have reliable signals.])
-AC_MSG_CHECKING(what style of signals to use)
-if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
-  signals_style=POSIX_SIGNALS
-  AC_DEFINE(POSIX_SIGNALS, 1,
-    [Define to 1 if you use POSIX style signal handling.])
-  AC_DEFINE(RELIABLE_SIGNALS)
-elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
-  signals_style=BSD_SIGNALS
-  AC_DEFINE(BSD_SIGNALS,1,
-    [Define to 1 if you use BSD style signal handling (and can block signals).])
-  AC_DEFINE(RELIABLE_SIGNALS)
-elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
-  signals_style=SYSV_SIGNALS
-  AC_DEFINE(SYSV_SIGNALS,1,
-    [Define to 1 if you use SYSV style signal handling (and can block signals).])
-else
-  signals_style=NO_SIGNAL_BLOCKING
-  AC_DEFINE(NO_SIGNAL_BLOCKING,1,
-    [Define to 1 if you have no signal blocking at all (bummer).])
-fi
-
-AC_MSG_RESULT($signals_style)
-
 dnl Where is <signal.h> located?  Needed as input for signames.awk
 AC_CACHE_CHECK(where signal.h is located, nmh_cv_path_signal_h,
 [for SIGNAL_H in /usr/include/bsd/sys/signal.h  dnl Next
index 905b811..6f7ed6c 100644 (file)
 typedef void (*SIGNAL_HANDLER)(int);
 
 /*
- * If not a POSIX machine, then we create our
- * own POSIX style signal sets functions. This
- * currently assumes you have 31 signals, which
- * should be true on most pure BSD machines.
- */
-#ifndef POSIX_SIGNALS
-# define sigemptyset(s)    (*(s) = 0)
-# define sigfillset(s)     (*(s) = ~((sigset_t) 0), 0)
-# define sigaddset(s,n)    (*(s) |=  (1 << ((n) - 1)), 0)
-# define sigdelset(s,n)    (*(s) &= ~(1 << ((n) - 1)), 0)
-# define sigismember(s,n)  ((*(s) & (1 << ((n) - 1))) != 0)
-#endif
-
-/*
  * prototypes
  */
-int SIGPROCMASK (int, const sigset_t *, sigset_t *);
 SIGNAL_HANDLER SIGNAL (int, SIGNAL_HANDLER);
 SIGNAL_HANDLER SIGNAL2 (int, SIGNAL_HANDLER);
index 4ee40ca..33cd23d 100644 (file)
@@ -41,7 +41,7 @@ context_save (void)
     sigaddset (&set, SIGINT);
     sigaddset (&set, SIGQUIT);
     sigaddset (&set, SIGTERM);
-    SIGPROCMASK (SIG_BLOCK, &set, &oset);
+    sigprocmask (SIG_BLOCK, &set, &oset);
 
     if (!(out = lkfopen (ctxpath, "w")))
        adios (ctxpath, "unable to write");
@@ -50,7 +50,7 @@ context_save (void)
            fprintf (out, "%s: %s\n", np->n_name, np->n_field);
     lkfclose (out, ctxpath);
 
-    SIGPROCMASK (SIG_SETMASK, &oset, &set); /* reset the signal mask */
+    sigprocmask (SIG_SETMASK, &oset, &set); /* reset the signal mask */
 
     if (action == 0)
        _exit (0);              /* we are child, time to die */
index 8f2242a..c4353b5 100644 (file)
@@ -591,10 +591,6 @@ alrmser (int sig)
     char *lockfile;
     struct lock *lp;
 
-#ifndef        RELIABLE_SIGNALS
-    SIGNAL (SIGALRM, alrmser);
-#endif
-
     /* update the ctime of all the lock files */
     for (lp = l_top; lp; lp = lp->l_next) {
        lockfile = lp->l_lock;
index 94b7543..4055f9d 100644 (file)
@@ -87,7 +87,7 @@ priv:
                sigaddset(&set, SIGINT);
                sigaddset(&set, SIGQUIT);
                sigaddset(&set, SIGTERM);
-               SIGPROCMASK (SIG_BLOCK, &set, &oset);
+               sigprocmask (SIG_BLOCK, &set, &oset);
            }
            fprintf (fp, "%s: %s\n", mp->msgattrs[i], cp);
        }
@@ -95,7 +95,7 @@ priv:
 
     if (fp) {
        lkfclose (fp, seqfile);
-       SIGPROCMASK (SIG_SETMASK, &oset, &set);  /* reset signal mask */
+       sigprocmask (SIG_SETMASK, &oset, &set);  /* reset signal mask */
     } else {
        /*
         * If folder is not readonly, and we didn't save any
index 919b8e0..eb26e63 100644 (file)
 #include <h/signals.h>
 
 
-int
-SIGPROCMASK (int how, const sigset_t *set, sigset_t *oset)
-{
-#ifdef POSIX_SIGNALS
-    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;
-# endif
-#endif
-}
-
-
 /*
  * A version of the function `signal' that uses reliable
  * signals, if the machine supports them.  Also, (assuming
  * OS support), it restarts interrupted system calls for all
  * signals except SIGALRM.
+ *
+ * Since we are now assuming POSIX signal support everywhere, we always
+ * use reliable signals.
  */
 
 SIGNAL_HANDLER
 SIGNAL (int sig, SIGNAL_HANDLER func)
 {
-#ifdef POSIX_SIGNALS
     struct sigaction act, oact;
 
     act.sa_handler = func;
@@ -69,9 +42,6 @@ SIGNAL (int sig, SIGNAL_HANDLER func)
     if (sigaction(sig, &act, &oact) < 0)
        return (SIG_ERR);
     return (oact.sa_handler);
-#else
-    return signal (sig, func);
-#endif
 }
 
 
@@ -84,7 +54,6 @@ SIGNAL (int sig, SIGNAL_HANDLER func)
 SIGNAL_HANDLER
 SIGNAL2 (int sig, SIGNAL_HANDLER func)
 {
-#ifdef POSIX_SIGNALS
     struct sigaction act, oact;
 
     if (sigaction(sig, NULL, &oact) < 0)
@@ -107,12 +76,5 @@ SIGNAL2 (int sig, SIGNAL_HANDLER func)
            return (SIG_ERR);
     }
     return (oact.sa_handler);
-#else
-    SIGNAL_HANDLER ofunc;
-
-    if ((ofunc = signal (sig, SIG_IGN)) != SIG_IGN)
-       signal (sig, func);
-    return ofunc;
-#endif
 }
 
index ed8c477..4cd3770 100644 (file)
@@ -1447,10 +1447,6 @@ putch (char ch)
 static void
 intrser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGINT, intrser);
-#endif
-
     discard (stdout);
     putchar ('\n');
     longjmp (env, DONE);
@@ -1460,10 +1456,6 @@ intrser (int i)
 static void
 pipeser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGPIPE, pipeser);
-#endif
-
     done (NOTOK);
 }
 
@@ -1471,10 +1463,6 @@ pipeser (int i)
 static void
 quitser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGQUIT, quitser);
-#endif
-
     putchar ('\n');
     fflush (stdout);
     done (NOTOK);
index 377fccd..990776c 100644 (file)
@@ -200,11 +200,6 @@ main (int argc, char **argv)
 static void
 intrser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    if (i)
-       SIGNAL (i, SIG_IGN);
-#endif
-
     unlink (tmpfil);
     done (i != 0 ? 1 : 0);
 }
index c2bb48a..5225825 100644 (file)
@@ -150,7 +150,7 @@ show_single_message (CT ct, char *form)
     sigaddset (&set, SIGINT);
     sigaddset (&set, SIGQUIT);
     sigaddset (&set, SIGTERM);
-    SIGPROCMASK (SIG_BLOCK, &set, &oset);
+    sigprocmask (SIG_BLOCK, &set, &oset);
 
     while (wait (&status) != NOTOK) {
        pidcheck (status);
@@ -158,7 +158,7 @@ show_single_message (CT ct, char *form)
     }
 
     /* reset the signal mask */
-    SIGPROCMASK (SIG_SETMASK, &oset, &set);
+    sigprocmask (SIG_SETMASK, &oset, &set);
 
     xpid = 0;
     flush_errors ();
@@ -710,7 +710,7 @@ show_multi_internal (CT ct, int serial, int alternate)
        sigaddset (&set, SIGINT);
        sigaddset (&set, SIGQUIT);
        sigaddset (&set, SIGTERM);
-       SIGPROCMASK (SIG_BLOCK, &set, &oset);
+       sigprocmask (SIG_BLOCK, &set, &oset);
     }
 
 /*
@@ -796,7 +796,7 @@ show_multi_internal (CT ct, int serial, int alternate)
 out:
     if (!nowserial) {
        /* reset the signal mask */
-       SIGPROCMASK (SIG_SETMASK, &oset, &set);
+       sigprocmask (SIG_SETMASK, &oset, &set);
     }
 
     return result;
@@ -1084,10 +1084,6 @@ show_external (CT ct, int serial, int alternate)
 static void
 intrser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGINT, intrser);
-#endif
-
     putchar ('\n');
     siglongjmp (intrenv, DONE);
 }
index c0fc4e7..07110fd 100644 (file)
--- a/uip/msh.c
+++ b/uip/msh.c
@@ -1621,10 +1621,6 @@ seq_setcur (struct msgs *mp, int msgnum)
 static void
 intrser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGINT, intrser);
-#endif
-
     discard (stdout);
     interrupted++;
 
@@ -1638,10 +1634,6 @@ intrser (int i)
 static void
 pipeser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGPIPE, pipeser);
-#endif
-
     if (broken_pipe++ == 0)
        fprintf (stderr, "broken pipe\n");
     told_to_quit++;
@@ -1657,10 +1649,6 @@ pipeser (int i)
 static void
 quitser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGQUIT, quitser);
-#endif
-
     told_to_quit++;
     interrupted++;
 
index 0d71c31..6429cb4 100644 (file)
@@ -1614,10 +1614,6 @@ do_text (char *file, int fd)
 static void
 sigser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (i, SIG_IGN);
-#endif
-
     unlink (tmpfil);
     if (msgflags & MINV)
        unlink (bccfil);
index 872d742..a016c1f 100644 (file)
@@ -396,10 +396,6 @@ getln (char *buffer, int n)
 static void
 intrser (int i)
 {
-#ifndef        RELIABLE_SIGNALS
-    SIGNAL (SIGINT, intrser);
-#endif
-
     if (wtuser)
        longjmp (sigenv, NOTOK);
     sigint++;
index 6c08dae..5a3093b 100644 (file)
@@ -207,10 +207,6 @@ main (int argc, char **argv)
 static void
 alrmser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGALRM, alrmser);
-#endif
-
     longjmp (myctx, 1);
 }
 
index 110050d..f0c84f5 100644 (file)
@@ -977,14 +977,14 @@ anno (int fd, struct stat *st)
            sigaddset (&set, SIGINT);
            sigaddset (&set, SIGQUIT);
            sigaddset (&set, SIGTERM);
-           SIGPROCMASK (SIG_BLOCK, &set, &oset);
+           sigprocmask (SIG_BLOCK, &set, &oset);
 
            annoaux (fd);
            if (child_id == OK)
                _exit (0);
 
            /* reset the signal mask */
-           SIGPROCMASK (SIG_SETMASK, &oset, &set);
+           sigprocmask (SIG_SETMASK, &oset, &set);
 
            chdir (cwd);
            break;
index 6b4c306..54960f3 100644 (file)
@@ -1214,10 +1214,6 @@ usr_pipe (int fd, char *cmd, char *pgm, char **vec, int suppress)
 static void
 alrmser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGALRM, alrmser);
-#endif
-
     longjmp (myctx, DONE);
 }