summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
7fba804)
Never invoke several content display processes in parallel, but always
wait for the previous to finish before executing the next one. The idea
behind this is generating console output only, but not spawning any
graphical windows. All output of displaying one message should go to one
single pager invocation. Any other kinds of attachments are to be stored
and afterwards displayed manually. This is the way all the other MUAs do it
and it matches the modern understanding of emails: a message and attachments.
This is contrary to the original design of MIME, true.
Also, removed the %p alias for the %l escape.
static void DisplayMsgHeader(CT, char *);
static int show_switch(CT, int);
static int show_content(CT, int);
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);
static int show_text(CT, int);
static int show_multi(CT, int);
static int show_multi_internal(CT, int);
/* NOTREACHED */
default:
/* NOTREACHED */
default:
/*
** Parse the display string for displaying generic content
*/
/*
** 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
show_content_aux(CT ct, int alternate, char *cp, char *cracked)
{
int fd, len, buflen, quoted;
- int xstdin, xlist, xtty;
char *bp, *pp, *file, buffer[BUFSIZ];
CI ci = &ct->c_ctinfo;
char *bp, *pp, *file, buffer[BUFSIZ];
CI ci = &ct->c_ctinfo;
if (cracked) {
strncpy(buffer, cp, sizeof(buffer));
if (cracked) {
strncpy(buffer, cp, sizeof(buffer));
- case 'e':
- /* exclusive execution */
- xtty = 1;
- break;
-
- /* %e, %f, and stdin is terminal not content */
+ /* %f, and stdin is terminal not content */
/* and fall... */
case 'f':
/* and fall... */
case 'f':
case 'l':
/*
** display listing prior to displaying content
case 'l':
/*
** display listing prior to displaying content
got_command:
return show_content_aux2(ct, alternate, cracked, buffer,
got_command:
return show_content_aux2(ct, alternate, cracked, buffer,
- fd, xlist, xstdin, xtty);
}
/*
** Routine to actually display the content
*/
}
/*
** Routine to actually display the content
*/
static int
show_content_aux2(CT ct, int alternate, char *cracked,
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)
+ if (xpid) {
+ pidcheck(pidwait(xpid, NOTOK));
+ xpid = 0;
+ }
+
if (debugsw || cracked) {
fflush(stdout);
if (debugsw || cracked) {
fflush(stdout);
fprintf(stderr, " using command %s\n", buffer);
}
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);
if (xlist) {
if (ct->c_type == CT_MULTIPART)
list_content(ct, -1, 1, 0, 0);
show_multi_aux(CT ct, int alternate, char *cp)
{
int len, buflen, quoted;
show_multi_aux(CT ct, int alternate, char *cp)
{
int len, buflen, quoted;
char *bp, *pp, *file, buffer[BUFSIZ];
struct multipart *m = (struct multipart *) ct->c_ctparams;
struct part *part;
char *bp, *pp, *file, buffer[BUFSIZ];
struct multipart *m = (struct multipart *) ct->c_ctparams;
struct part *part;
/* get buffer ready to go */
bp = buffer;
/* get buffer ready to go */
bp = buffer;
- case 'e':
- /* exclusive execution */
- xtty = 1;
- break;
-
- /* %e and %f */
- xtty = 1;
- /* and fall... */
-
case 'f':
/* insert filename(s) containing content */
{
case 'f':
/* insert filename(s) containing content */
{
case 'l':
/*
** display listing prior to displaying content
case 'l':
/*
** display listing prior to displaying content
}
return show_content_aux2(ct, alternate, NULL, buffer,
}
return show_content_aux2(ct, alternate, NULL, buffer,
- NOTOK, xlist, 0, xtty);
/* default method for message/rfc822 */
if (ct->c_subtype == MESSAGE_RFC822) {
/* 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);
}
return show_content_aux(ct, alternate, cp, NULL);
}