X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhmail.c;h=9936261f7543de272e606cd5764b20bc0a44df37;hp=46b16fd21d58decf6ad9d2f8c38835362be31587;hb=5a12e4b0477d3ad699f5713682d26079f2792d17;hpb=a26d3f6e071fa5704406317fe50a1805659ed2f8 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); }