mhshow-show-*: Made %e escape the default, i.e. always serialize the output.
[mmh] / uip / mhshowsbr.c
index e2cde4d..4a7fc0c 100644 (file)
@@ -51,7 +51,7 @@ static void show_single_message(CT, char *);
 static void DisplayMsgHeader(CT, char *);
 static int show_switch(CT, int);
 static int show_content(CT, int);
-static int show_content_aux2(CT, int, char *, char *, int, int, int, int);
+static int show_content_aux2(CT, int, char *, char *, int, int, int);
 static int show_text(CT, int);
 static int show_multi(CT, int);
 static int show_multi_internal(CT, int);
@@ -182,7 +182,7 @@ DisplayMsgHeader(CT ct, char *form)
                /* NOTREACHED */
 
        default:
-               xpid = -child_id;
+               xpid = child_id;
                break;
        }
 }
@@ -273,12 +273,11 @@ show_content(CT ct, int alternate)
 /*
 ** Parse the display string for displaying generic content
 */
-
 int
 show_content_aux(CT ct, int alternate, char *cp, char *cracked)
 {
        int fd, len, buflen, quoted;
-       int xstdin, xlist, xtty;
+       int xstdin, xlist;
        char *bp, *pp, *file, buffer[BUFSIZ];
        CI ci = &ct->c_ctinfo;
 
@@ -298,7 +297,6 @@ show_content_aux(CT ct, int alternate, char *cp, char *cracked)
 
        xlist  = 0;
        xstdin = 0;
-       xtty   = 0;
 
        if (cracked) {
                strncpy(buffer, cp, sizeof(buffer));
@@ -353,15 +351,9 @@ show_content_aux(CT ct, int alternate, char *cp, char *cracked)
                                }
                                break;
 
-                       case 'e':
-                               /* exclusive execution */
-                               xtty = 1;
-                               break;
-
                        case 'F':
-                               /* %e, %f, and stdin is terminal not content */
+                               /* %f, and stdin is terminal not content */
                                xstdin = 1;
-                               xtty = 1;
                                /* and fall... */
 
                        case 'f':
@@ -380,7 +372,6 @@ show_content_aux(CT ct, int alternate, char *cp, char *cracked)
                                pp = bp;
                                break;
 
-                       case 'p':
                        case 'l':
                                /*
                                ** display listing prior to displaying content
@@ -455,20 +446,24 @@ raw:
 
 got_command:
        return show_content_aux2(ct, alternate, cracked, buffer,
-                       fd, xlist, xstdin, xtty);
+                       fd, xlist, xstdin);
 }
 
 
 /*
 ** Routine to actually display the content
 */
-
 static int
 show_content_aux2(CT ct, int alternate, char *cracked,
-       char *buffer, int fd, int xlist, int xstdin, int xtty)
+       char *buffer, int fd, int xlist, int xstdin)
 {
        pid_t child_id;
 
+       if (xpid) {
+               pidcheck(pidwait(xpid, NOTOK));
+               xpid = 0;
+       }
+
        if (debugsw || cracked) {
                fflush(stdout);
 
@@ -483,13 +478,6 @@ show_content_aux2(CT ct, int alternate, char *cracked,
                        fprintf(stderr, " using command %s\n", buffer);
        }
 
-       if (xpid < 0 || (xtty && xpid)) {
-               if (xpid < 0)
-                       xpid = -xpid;
-               pidcheck(pidwait(xpid, NOTOK));
-               xpid = 0;
-       }
-
        if (xlist) {
                if (ct->c_type == CT_MULTIPART)
                        list_content(ct, -1, 1, 0, 0);
@@ -691,7 +679,7 @@ static int
 show_multi_aux(CT ct, int alternate, char *cp)
 {
        int len, buflen, quoted;
-       int xlist, xtty;
+       int xlist;
        char *bp, *pp, *file, buffer[BUFSIZ];
        struct multipart *m = (struct multipart *) ct->c_ctparams;
        struct part *part;
@@ -722,7 +710,6 @@ show_multi_aux(CT ct, int alternate, char *cp)
        }
 
        xlist = 0;
-       xtty = 0;
 
        /* get buffer ready to go */
        bp = buffer;
@@ -771,16 +758,7 @@ show_multi_aux(CT ct, int alternate, char *cp)
                                }
                                break;
 
-                       case 'e':
-                               /* exclusive execution */
-                               xtty = 1;
-                               break;
-
                        case 'F':
-                               /* %e and %f */
-                               xtty = 1;
-                               /* and fall... */
-
                        case 'f':
                                /* insert filename(s) containing content */
                        {
@@ -806,7 +784,6 @@ show_multi_aux(CT ct, int alternate, char *cp)
                        }
                        break;
 
-                       case 'p':
                        case 'l':
                                /*
                                ** display listing prior to displaying content
@@ -880,7 +857,7 @@ raw:
        }
 
        return show_content_aux2(ct, alternate, NULL, buffer,
-                       NOTOK, xlist, 0, xtty);
+                       NOTOK, xlist, 0);
 }
 
 
@@ -910,7 +887,7 @@ show_message_rfc822(CT ct, int alternate)
 
        /* default method for message/rfc822 */
        if (ct->c_subtype == MESSAGE_RFC822) {
-               cp = (ct->c_showproc = getcpy("%pshow -file '%F'"));
+               cp = (ct->c_showproc = getcpy("%lshow -file %F"));
                return show_content_aux(ct, alternate, cp, NULL);
        }