From: markus schnalke Date: Sat, 14 Feb 2015 16:44:14 +0000 (+0100) Subject: Merge branch 'master' of ssh://marmaro.de:443/var/git/mmh X-Git-Tag: mmh-0.2-RC1~56 X-Git-Url: http://git.marmaro.de/?a=commitdiff_plain;h=5a12e4b0477d3ad699f5713682d26079f2792d17;hp=a26d3f6e071fa5704406317fe50a1805659ed2f8;p=mmh Merge branch 'master' of ssh://marmaro.de:443/var/git/mmh Conflicts: uip/mhl.c uip/mhlist.c uip/mhmail.c uip/pick.c uip/send.c --- diff --git a/man/mhmail.man1 b/man/mhmail.man1 index b2381c1..acecbbc 100644 --- a/man/mhmail.man1 +++ b/man/mhmail.man1 @@ -124,12 +124,12 @@ This program was intended for the use of programs such as which expect to send mail automatically to various addresses. It was also used by various .B nmh -commands to mail various -error notifications. +commands to mail various error notifications. .PP -When invoked without arguments, it had simply invokes +When invoked without arguments, it had once simply invoked .B inc to incorporate new messages from the user's maildrop. +It does this no longer. .SH BUGS .B mhmail diff --git a/sbr/execprog.c b/sbr/execprog.c index 9cc8879..ce38307 100644 --- a/sbr/execprog.c +++ b/sbr/execprog.c @@ -27,7 +27,7 @@ execprog(char *cmd, char **arg) default: /* parent */ - return (pidwait(pid, -1) & 0377 ? 1 : 0); + return pidXwait(pid, cmd); } return 1; /* NOT REACHED */ diff --git a/uip/mhl.c b/uip/mhl.c index 45113f3..5403673 100644 --- a/uip/mhl.c +++ b/uip/mhl.c @@ -565,8 +565,7 @@ process(char *fname, int ofilen, int ofilec) FILE *fp = NULL; struct mcomp *c1; - switch (setjmp(env)) { - case OK: + if (setjmp(env) == 0) { if (fname) { fp = fopen(fname, "r"); if (fp == NULL) { @@ -580,20 +579,18 @@ process(char *fname, int ofilen, int ofilec) } SIGNAL(SIGINT, intrser); mhlfile(fp, fname, ofilen, ofilec); - /* FALL THROUGH! */ - default: - SIGNAL(SIGINT, SIG_IGN); - if (fp != stdin) - fclose(fp); - if (holder.c_text) { - free(holder.c_text); - holder.c_text = NULL; - } - free_queue(&msghd, &msgtl); - for (c1 = fmthd; c1; c1 = c1->c_next) - c1->c_flags &= ~HDROUTPUT; - break; } + + SIGNAL(SIGINT, SIG_IGN); + if (fp != stdin) + fclose(fp); + if (holder.c_text) { + free(holder.c_text); + holder.c_text = NULL; + } + free_queue(&msghd, &msgtl); + for (c1 = fmthd; c1; c1 = c1->c_next) + c1->c_flags &= ~HDROUTPUT; } diff --git a/uip/mhmail.c b/uip/mhmail.c index 46b16fd..9936261 100644 --- a/uip/mhmail.c +++ b/uip/mhmail.c @@ -40,7 +40,6 @@ static void intrser(int); int main(int argc, char **argv) { - pid_t child_id; int status, iscc = 0, nvec; char *cp, *tolist = NULL, *cclist = NULL, *subject = NULL; char *from = NULL, *body = NULL, **argp, **arguments; @@ -161,42 +160,26 @@ main(int argc, char **argv) vec[nvec++] = tmpfil; vec[nvec] = NULL; - if ((child_id = fork()) == NOTOK) { - /* report failure and then send it */ - adios(NULL, "unable to fork"); - - } else if (child_id == 0) { - /* child process */ - execvp(*vec, vec); - fprintf(stderr, "unable to exec "); - perror(*vec); - _exit(-1); - - } else { - /* parent process */ - if ((status = pidXwait(child_id, *vec))) { - /* spost failed, save draft as dead.letter */ - int in, out; - - in = open(tmpfil, O_RDONLY); - out = creat("dead.letter", 0600); - if (in == -1 || out == -1) { - fprintf(stderr, "Letter left at %s.\n", - tmpfil); - /* sysexits.h exit-status from spost */ - exit(status ? 1 : 0); - } - cpydata(in, out, tmpfil, "dead.letter"); - close(in); - close(out); - fprintf(stderr, "Letter saved in dead.letter\n"); + if ((status = execprog(*vec, vec))) { + /* spost failed, save draft as dead.letter */ + int in, out; + + in = open(tmpfil, O_RDONLY); + out = creat("dead.letter", 0600); + if (in == -1 || out == -1) { + fprintf(stderr, "Letter left at %s.\n", + tmpfil); + /* sysexits.h exit-status from spost */ + exit(status ? 1 : 0); } - unlink(tmpfil); - /* sysexits.h exit status from spost */ - exit(status ? 1 : 0); + cpydata(in, out, tmpfil, "dead.letter"); + close(in); + close(out); + fprintf(stderr, "Letter saved in dead.letter\n"); } - - return 0; /* dead code to satisfy the compiler */ + unlink(tmpfil); + /* sysexits.h exit status from spost */ + exit(status ? 1 : 0); } diff --git a/uip/mhparse.c b/uip/mhparse.c index 205c41a..f4c26cc 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/uip/mhshowsbr.c b/uip/mhshowsbr.c index 71c1699..fe40f9d 100644 --- a/uip/mhshowsbr.c +++ b/uip/mhshowsbr.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/uip/mhstore.c b/uip/mhstore.c index 5b56b09..6a268f2 100644 --- a/uip/mhstore.c +++ b/uip/mhstore.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/uip/pick.c b/uip/pick.c index ae1fa03..6c59add 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -163,7 +163,7 @@ main(int argc, char **argv) adios(NULL, "too many sequences (more than %d) specified", NUMATTRS); if (!seq_nameok(cp)) - exit(1); + exit(1); seqs[seqp++] = cp; continue; diff --git a/uip/prompter.c b/uip/prompter.c index 03038a6..4d0ce86 100644 --- a/uip/prompter.c +++ b/uip/prompter.c @@ -269,7 +269,7 @@ getln(char *buffer, int n) *cp = '\0'; switch (setjmp(sigenv)) { - case OK: + case 0: wtuser = 1; break; diff --git a/uip/send.c b/uip/send.c index 492f027..234dfb2 100644 --- a/uip/send.c +++ b/uip/send.c @@ -283,8 +283,7 @@ sendsbr(char **vec, int vecp, char *drft, struct stat *st) break; } - switch (status = sendaux(vec, vecp, drft, st)) { - case OK: + if ((status = sendaux(vec, vecp, drft, st)) == OK) { /* move original draft to +trash folder */ /* temporary close stdin, for refile not to ask */ dupfd = dup(0); @@ -296,11 +295,8 @@ sendsbr(char **vec, int vecp, char *drft, struct stat *st) } dup2(dupfd, 0); close(dupfd); - break; - - default: + } else { status = DONE; - break; } if (distfile) {