X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhshowsbr.c;h=ea9f72e09ff0118af8c178c6c2e2b60470bcdefc;hp=b7452d8a1b8cc3d39d714b8279d97511c6fc6f91;hb=ac0b9fcce4167e2959ebc5b8d6efb8511acec66d;hpb=a4605f68e8ff04d4539e402a6fb00ff188944e1c diff --git a/uip/mhshowsbr.c b/uip/mhshowsbr.c index b7452d8..ea9f72e 100644 --- a/uip/mhshowsbr.c +++ b/uip/mhshowsbr.c @@ -13,43 +13,20 @@ #include #include #include -#include #include #include #include #include - -#ifdef HAVE_SYS_WAIT_H -# include -#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 extern int debugsw; int serialsw = 0; int nolist = 0; - -char *progsw = NULL; - -/* flags for moreproc/header display */ -int nomore = 0; char *formsw = NULL; - pid_t xpid = 0; -/* termsbr.c */ -int SOprintf(char *, ...); - /* mhparse.c */ int pidcheck(int); @@ -126,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 @@ -164,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(); @@ -184,49 +152,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 = fork()) == 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 */ @@ -529,7 +482,6 @@ show_content_aux2(CT ct, int serial, int alternate, char *cracked, 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) { @@ -569,9 +521,7 @@ show_content_aux2(CT ct, int serial, int alternate, char *cracked, fflush(stdout); - for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) - sleep(5); - switch (child_id) { + switch (child_id = fork()) { case NOTOK: advise("fork", "unable to"); (*ct->c_ceclosefnx) (ct); @@ -631,9 +581,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); } @@ -717,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); } /* @@ -730,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); @@ -769,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) { @@ -788,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; @@ -811,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;