We are making POSIX signal support a requirement.
[mmh] / uip / mhshowsbr.c
index 9f69c54..ea9f72e 100644 (file)
 #include <h/mime.h>
 #include <h/mhparse.h>
 #include <h/utils.h>
-
-#ifdef HAVE_SYS_WAIT_H
-# include <sys/wait.h>
-#endif
-
-/*
-** Just use sigjmp/longjmp on older machines that
-** don't have sigsetjmp/siglongjmp.
-*/
-#ifndef HAVE_SIGSETJMP
-# define sigjmp_buf jmp_buf
-# define sigsetjmp(env,mask) setjmp(env)
-# define siglongjmp(env,val) longjmp(env,val)
-#endif
+#include <sys/wait.h>
 
 extern int debugsw;
 
@@ -116,12 +103,7 @@ static void
 show_single_message(CT ct, char *form)
 {
        sigset_t set, oset;
-
-#ifdef HAVE_UNION_WAIT
-       union wait status;
-#else
        int status;
-#endif
 
        /*
        ** Allow user executable bit so that temporary directories created by
@@ -154,19 +136,15 @@ 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) {
-#ifdef HAVE_UNION_WAIT
-               pidcheck(status.w_status);
-#else
                pidcheck(status);
-#endif
                continue;
        }
 
        /* reset the signal mask */
-       SIGPROCMASK(SIG_SETMASK, &oset, &set);
+       sigprocmask(SIG_SETMASK, &oset, &set);
 
        xpid = 0;
        flush_errors();
@@ -687,7 +665,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);
        }
 
 /*
@@ -700,7 +678,7 @@ show_multi_internal(CT ct, int serial, int alternate)
        for (part = m->mp_parts; part; part = part->mp_next) {
                p = part->mp_part;
 
-               if (part_ok(p, 0) && type_ok(p, 0)) {
+               if (part_ok(p, 1) && type_ok(p, 1)) {
                        int inneresult;
 
                        inneresult = show_switch(p, nowserial, nowalternate);
@@ -739,11 +717,7 @@ show_multi_internal(CT ct, int serial, int alternate)
        if (serial && !nowserial) {
                pid_t pid;
                int kids;
-#ifdef HAVE_UNION_WAIT
-               union wait status;
-#else
                int status;
-#endif
 
                kids = 0;
                for (part = m->mp_parts; part; part = part->mp_next) {
@@ -758,11 +732,7 @@ show_multi_internal(CT ct, int serial, int alternate)
                }
 
                while (kids > 0 && (pid = wait(&status)) != NOTOK) {
-#ifdef HAVE_UNION_WAIT
-                       pidcheck(status.w_status);
-#else
                        pidcheck(status);
-#endif
 
                        for (part = m->mp_parts; part; part = part->mp_next) {
                                p = part->mp_part;
@@ -781,7 +751,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;