X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhshowsbr.c;h=550669aa0e66d3d8bbfa2b1ae04a257961d6e687;hb=ac99d23ec89df5e72b39c7ae950c084ca0377eca;hp=efa9ad3c1e72fced6e977b286323e23de7e4e653;hpb=07661da3d824585f12d0b5d19cc262115bea979a;p=mmh diff --git a/uip/mhshowsbr.c b/uip/mhshowsbr.c index efa9ad3..550669a 100644 --- a/uip/mhshowsbr.c +++ b/uip/mhshowsbr.c @@ -19,6 +19,7 @@ #include #include #include +#include extern int debugsw; @@ -37,12 +38,6 @@ pid_t xpid = 0; static sigjmp_buf intrenv; -/* termsbr.c */ -int SOprintf (char *, ...); - -/* mhparse.c */ -int pidcheck (int); - /* mhmisc.c */ int part_ok (CT, int); int type_ok (CT, int); @@ -74,7 +69,7 @@ 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); +static void intrser (int); /* @@ -149,7 +144,7 @@ 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) { pidcheck (status); @@ -157,7 +152,7 @@ show_single_message (CT ct, char *form) } /* reset the signal mask */ - SIGPROCMASK (SIG_SETMASK, &oset, &set); + sigprocmask (SIG_SETMASK, &oset, &set); xpid = 0; flush_errors (); @@ -468,7 +463,8 @@ raw: } } - if (buflen <= 0 || (ct->c_termproc && buflen <= strlen(ct->c_termproc))) { + if (buflen <= 0 || + (ct->c_termproc && (size_t) buflen <= strlen(ct->c_termproc))) { /* content_error would provide a more useful error message * here, except that if we got overrun, it probably would * too. @@ -531,13 +527,13 @@ show_content_aux2 (CT ct, int serial, int alternate, char *cracked, char *buffer else list_switch (ct, -1, 1, 0, 0); - if (xpause && SOprintf ("Press to show content...")) - printf ("Press to show content..."); - - if (xpause) { + if (xpause && isatty (fileno (stdout))) { int intr; SIGNAL_HANDLER istat; + if (SOprintf ("Press to show content...")) + printf ("Press to show content..."); + istat = SIGNAL (SIGINT, intrser); if ((intr = sigsetjmp (intrenv, 1)) == OK) { fflush (stdout); @@ -562,7 +558,7 @@ show_content_aux2 (CT ct, int serial, int alternate, char *cracked, char *buffer fflush (stdout); - for (i = 0; (child_id = vfork ()) == NOTOK && i < 5; i++) + for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++) sleep (5); switch (child_id) { case NOTOK: @@ -709,7 +705,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); } /* @@ -795,7 +791,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; @@ -983,7 +979,8 @@ raw: } } - if (buflen <= 0 || (ct->c_termproc && buflen <= strlen(ct->c_termproc))) { + if (buflen <= 0 || + (ct->c_termproc && buflen <= (ssize_t) strlen(ct->c_termproc))) { /* content_error would provide a more useful error message * here, except that if we got overrun, it probably would * too. @@ -1050,6 +1047,9 @@ show_message_rfc822 (CT ct, int serial, int alternate) static int show_partial (CT ct, int serial, int alternate) { + NMH_UNUSED (serial); + NMH_UNUSED (alternate); + content_error (NULL, ct, "in order to display this message, you must reassemble it"); return NOTOK; @@ -1080,12 +1080,10 @@ show_external (CT ct, int serial, int alternate) } -static RETSIGTYPE +static void intrser (int i) { -#ifndef RELIABLE_SIGNALS - SIGNAL (SIGINT, intrser); -#endif + NMH_UNUSED (i); putchar ('\n'); siglongjmp (intrenv, DONE);