Remove #ifdef around use of sigsetjmp().
[mmh] / uip / mhshowsbr.c
index 71f55a4..efa9ad3 100644 (file)
@@ -2,7 +2,9 @@
 /*
  * mhshowsbr.c -- routines to display the contents of MIME messages
  *
- * $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.
  */
 
 #include <h/mh.h>
 #include <errno.h>
 #include <setjmp.h>
 #include <signal.h>
-#include <zotnet/mts/mts.h>
-#include <zotnet/tws/tws.h>
+#include <h/mts.h>
+#include <h/tws.h>
 #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
-
-extern int errno;
 extern int debugsw;
 
 int pausesw  = 1;
@@ -115,7 +103,7 @@ show_all_messages (CT *cts)
        ct = *ctp;
 
        /* if top-level type is ok, then display message */
-       if (type_ok (ct, 0))
+       if (type_ok (ct, 1))
            show_single_message (ct, formsw);
     }
 }
@@ -130,13 +118,11 @@ show_single_message (CT ct, char *form)
 {
     sigset_t set, oset;
 
-#ifdef WAITINT
     int status;
-#else
-    union wait status;
-#endif
 
-    umask (ct->c_umask);
+    /* Allow user executable bit so that temporary directories created by
+     * the viewer (e.g., lynx) are going to be accessible */
+    umask (ct->c_umask & ~(0100));
 
     /*
      * If you have a format file, then display
@@ -166,11 +152,7 @@ show_single_message (CT ct, char *form)
     SIGPROCMASK (SIG_BLOCK, &set, &oset);
 
     while (wait (&status) != NOTOK) {
-#ifdef WAITINT
        pidcheck (status);
-#else
-       pidcheck (status.w_status);
-#endif
        continue;
     }
 
@@ -740,7 +722,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);
@@ -779,11 +761,7 @@ show_multi_internal (CT ct, int serial, int alternate)
     if (serial && !nowserial) {
        pid_t pid;
        int kids;
-#ifdef WAITINT
        int status;
-#else
-       union wait status;
-#endif
 
        kids = 0;
        for (part = m->mp_parts; part; part = part->mp_next) {
@@ -798,11 +776,7 @@ show_multi_internal (CT ct, int serial, int alternate)
        }
 
        while (kids > 0 && (pid = wait (&status)) != NOTOK) {
-#ifdef WAITINT
            pidcheck (status);
-#else
-           pidcheck (status.w_status);
-#endif
 
            for (part = m->mp_parts; part; part = part->mp_next) {
                p = part->mp_part;