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;
vec[nvec++] = tmpfil;
vec[nvec] = NULL;
- if ((child_id = fork()) == NOTOK) {
- /* report failure and then send it */
- adios(NULL, "unable to fork");
+ if ((status = execprog(*vec, vec))) {
+ /* spost failed, save draft as dead.letter */
+ int in, out;
- } 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);
- done(status ? 1 : 0);
- }
- cpydata(in, out, tmpfil, "dead.letter");
- close(in);
- close(out);
- fprintf(stderr, "Letter saved in dead.letter\n");
+ in = open(tmpfil, O_RDONLY);
+ out = creat("dead.letter", 0600);
+ if (in == -1 || out == -1) {
+ fprintf(stderr, "Letter left at %s.\n",
+ tmpfil);
+ done(status ? 1 : 0);
}
- unlink(tmpfil);
- done(status ? 1 : 0);
+ cpydata(in, out, tmpfil, "dead.letter");
+ close(in);
+ close(out);
+ fprintf(stderr, "Letter saved in dead.letter\n");
}
-
+ unlink(tmpfil);
+ done(status ? 1 : 0);
return 0; /* dead code to satisfy the compiler */
}