X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhshowsbr.c;h=9f69c54da73afab625cc344590c95f4d0f7097cf;hp=0136ca32d13a542e5e26e789dac383ef6c9648a5;hb=dfa0332c4e6144699dedd5c9795219adc0f9c0d2;hpb=5b792c4424571f05bc2008e3109797d18d7d00d1 diff --git a/uip/mhshowsbr.c b/uip/mhshowsbr.c index 0136ca3..9f69c54 100644 --- a/uip/mhshowsbr.c +++ b/uip/mhshowsbr.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -35,23 +34,11 @@ extern int debugsw; -int pausesw = 1; int serialsw = 0; int nolist = 0; - -char *progsw = NULL; - -/* flags for moreproc/header display */ -int nomore = 0; char *formsw = NULL; - pid_t xpid = 0; -static sigjmp_buf intrenv; - - -/* termsbr.c */ -int SOprintf(char *, ...); /* mhparse.c */ int pidcheck(int); @@ -79,8 +66,7 @@ static void show_single_message(CT, char *); static void DisplayMsgHeader(CT, char *); static int show_switch(CT, int, int); static int show_content(CT, int, int); -static int show_content_aux2(CT, int, int, char *, char *, - int, int, int, int, int); +static int show_content_aux2(CT, int, int, char *, char *, int, int, int, int); static int show_text(CT, int, int); static int show_multi(CT, int, int); static int show_multi_internal(CT, int, int); @@ -88,7 +74,6 @@ static int show_multi_aux(CT, int, int, char *); static int show_message_rfc822(CT, int, int); static int show_partial(CT, int, int); static int show_external(CT, int, int); -static RETSIGTYPE intrser(int); /* @@ -110,7 +95,7 @@ show_all_messages(CT *cts) /* ** If form is "mhl.null", suppress display of header. */ - if (!strcmp(formsw, "mhl.null")) + if (strcmp(formsw, "mhl.null")==0) formsw = NULL; for (ctp = cts; *ctp; ctp++) { @@ -189,49 +174,34 @@ show_single_message(CT ct, char *form) /* -** Use the mhlproc to show the header fields +** Use mhl to show the header fields */ - static void DisplayMsgHeader(CT ct, char *form) { pid_t child_id; - int i, vecp; + int vecp; char *vec[8]; vecp = 0; - vec[vecp++] = mhbasename(mhlproc); + vec[vecp++] = "mhl"; vec[vecp++] = "-form"; vec[vecp++] = form; vec[vecp++] = "-nobody"; vec[vecp++] = ct->c_file; - - /* - ** If we've specified -(no)moreproc, - ** then just pass that along. - */ - if (nomore) { - vec[vecp++] = "-nomoreproc"; - } else if (progsw) { - vec[vecp++] = "-moreproc"; - vec[vecp++] = progsw; - } vec[vecp] = NULL; fflush(stdout); - for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++) - sleep(5); - - switch (child_id) { + switch (child_id = fork()) { case NOTOK: adios("fork", "unable to"); /* NOTREACHED */ case OK: - execvp(mhlproc, vec); + execvp("mhl", vec); fprintf(stderr, "unable to exec "); - perror(mhlproc); + perror("mhl"); _exit(-1); /* NOTREACHED */ @@ -333,7 +303,7 @@ int show_content_aux(CT ct, int serial, int alternate, char *cp, char *cracked) { int fd, len, buflen, quoted; - int xstdin, xlist, xpause, xtty; + int xstdin, xlist, xtty; char *bp, *pp, *file, buffer[BUFSIZ]; CI ci = &ct->c_ctinfo; @@ -348,11 +318,10 @@ show_content_aux(CT ct, int serial, int alternate, char *cp, char *cracked) file = NULL; if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK) return NOTOK; - if (ct->c_showproc && !strcmp(ct->c_showproc, "true")) + if (ct->c_showproc && strcmp(ct->c_showproc, "true")==0) return (alternate ? DONE : OK); xlist = 0; - xpause = 0; xstdin = 0; xtty = 0; @@ -430,10 +399,6 @@ show_content_aux(CT ct, int serial, int alternate, char *cp, char *cracked) break; case 'p': - /* %l, and pause prior to displaying content */ - xpause = pausesw; - /* and fall... */ - case 'l': /* ** display listing prior to displaying content @@ -526,7 +491,7 @@ raw: got_command: return show_content_aux2(ct, serial, alternate, cracked, buffer, - fd, xlist, xpause, xstdin, xtty); + fd, xlist, xstdin, xtty); } @@ -536,10 +501,9 @@ got_command: static int show_content_aux2(CT ct, int serial, int alternate, char *cracked, - char *buffer, int fd, int xlist, int xpause, int xstdin, int xtty) + char *buffer, int fd, int xlist, int xstdin, int xtty) { pid_t child_id; - int i; char *vec[4], exec[BUFSIZ + sizeof "exec "]; if (debugsw || cracked) { @@ -564,33 +528,10 @@ show_content_aux2(CT ct, int serial, int alternate, char *cracked, } if (xlist) { - char prompt[BUFSIZ]; - if (ct->c_type == CT_MULTIPART) list_content(ct, -1, 1, 0, 0); else list_switch(ct, -1, 1, 0, 0); - - if (xpause && SOprintf("Press to show content...")) - printf("Press to show content..."); - - if (xpause) { - int intr; - SIGNAL_HANDLER istat; - - istat = SIGNAL(SIGINT, intrser); - if ((intr = sigsetjmp(intrenv, 1)) == OK) { - fflush(stdout); - prompt[0] = 0; - read(fileno(stdout), prompt, sizeof(prompt)); - } - SIGNAL(SIGINT, istat); - if (intr != OK || prompt[0] == 'n') { - (*ct->c_ceclosefnx) (ct); - return (alternate ? DONE : NOTOK); - } - if (prompt[0] == 'q') done(OK); - } } snprintf(exec, sizeof(exec), "exec %s", buffer); @@ -602,9 +543,7 @@ show_content_aux2(CT ct, int serial, int alternate, char *cracked, fflush(stdout); - for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++) - sleep(5); - switch (child_id) { + switch (child_id = fork()) { case NOTOK: advise("fork", "unable to"); (*ct->c_ceclosefnx) (ct); @@ -664,9 +603,7 @@ show_text(CT ct, int serial, int alternate) ** if it is not a text part of a multipart/alternative */ if (!alternate || ct->c_subtype == TEXT_PLAIN) { - snprintf(buffer, sizeof(buffer), "%%p%s '%%F'", - progsw ? progsw : moreproc && *moreproc ? - moreproc : "more"); + snprintf(buffer, sizeof(buffer), "%%p%s '%%F'", defaultpager); cp = (ct->c_showproc = getcpy(buffer)); return show_content_aux(ct, serial, alternate, cp, NULL); } @@ -860,7 +797,7 @@ static int show_multi_aux(CT ct, int serial, int alternate, char *cp) { int len, buflen, quoted; - int xlist, xpause, xtty; + int xlist, xtty; char *bp, *pp, *file, buffer[BUFSIZ]; struct multipart *m = (struct multipart *) ct->c_ctparams; struct part *part; @@ -884,14 +821,13 @@ show_multi_aux(CT ct, int serial, int alternate, char *cp) /* I'm not sure if this is necessary? */ p->c_storage = getcpy(file); - if (p->c_showproc && !strcmp(p->c_showproc, "true")) + if (p->c_showproc && strcmp(p->c_showproc, "true")==0) return (alternate ? DONE : OK); (*p->c_ceclosefnx) (p); } } xlist = 0; - xpause = 0; xtty = 0; /* get buffer ready to go */ @@ -970,10 +906,6 @@ show_multi_aux(CT ct, int serial, int alternate, char *cp) break; case 'p': - /* %l, and pause prior to displaying content */ - xpause = pausesw; - /* and fall... */ - case 'l': /* ** display listing prior to displaying content @@ -1066,7 +998,7 @@ raw: } return show_content_aux2(ct, serial, alternate, NULL, buffer, - NOTOK, xlist, xpause, 0, xtty); + NOTOK, xlist, 0, xtty); } @@ -1143,15 +1075,3 @@ show_external(CT ct, int serial, int alternate) return NOTOK; #endif } - - -static RETSIGTYPE -intrser(int i) -{ -#ifndef RELIABLE_SIGNALS - SIGNAL(SIGINT, intrser); -#endif - - putchar('\n'); - siglongjmp(intrenv, DONE); -}