- pid_t child_id;
- int i, in;
- char buf[BUFSIZ];
-
- for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
- sleep (5);
-
- switch (child_id) {
- case NOTOK:
- /* oops -- fork error */
- advise ("fork", "unable to");
-
- case OK:
- /* child process -- send it */
- SIGNAL (SIGHUP, SIG_IGN);
- SIGNAL (SIGINT, SIG_IGN);
- SIGNAL (SIGQUIT, SIG_IGN);
- SIGNAL (SIGTERM, SIG_IGN);
- if (forwsw) {
- if ((in = open (file, O_RDONLY)) == NOTOK) {
- admonish (file, "unable to re-open");
- } else {
- lseek (out, (off_t) 0, SEEK_END);
- strncpy (buf, "\nMessage not delivered to anyone.\n", sizeof(buf));
- write (out, buf, strlen (buf));
- strncpy (buf, "\n------- Unsent Draft\n\n", sizeof(buf));
- write (out, buf, strlen (buf));
- cpydgst (in, out, file, "temporary file");
- close (in);
- strncpy (buf, "\n------- End of Unsent Draft\n", sizeof(buf));
- write (out, buf, strlen (buf));
- if (rename (file, strncpy (buf, m_backup (file), sizeof(buf))) == NOTOK)
- admonish (buf, "unable to rename %s to", file);
- }
- }
- lseek (out, (off_t) 0, SEEK_SET);
- dup2 (out, fileno (stdin));
- close (out);
- /* create subject for error notification */
- snprintf (buf, sizeof(buf), "send failed on %s",
- forwsw ? "enclosed draft" : file);
-
- execlp (mailproc, r1bindex (mailproc, '/'), getusername (),
- "-subject", buf, NULL);
- fprintf (stderr, "unable to exec ");
- perror (mailproc);
- _exit (-1);
-
- default: /* no waiting... */
- break;
- }
+ pid_t child_id;
+ int i, in;
+ char buf[BUFSIZ];
+
+ for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
+ sleep(5);
+
+ switch (child_id) {
+ case NOTOK:
+ /* oops -- fork error */
+ advise("fork", "unable to");
+
+ case OK:
+ /* child process -- send it */
+ SIGNAL(SIGHUP, SIG_IGN);
+ SIGNAL(SIGINT, SIG_IGN);
+ SIGNAL(SIGQUIT, SIG_IGN);
+ SIGNAL(SIGTERM, SIG_IGN);
+ if (forwsw) {
+ if ((in = open(file, O_RDONLY)) == NOTOK) {
+ admonish(file, "unable to re-open");
+ } else {
+ lseek(out, (off_t) 0, SEEK_END);
+ strncpy(buf, "\nMessage not delivered to anyone.\n", sizeof(buf));
+ write(out, buf, strlen(buf));
+ strncpy(buf, "\n------- Unsent Draft\n\n", sizeof(buf));
+ write(out, buf, strlen(buf));
+ cpydgst(in, out, file, "temporary file");
+ close(in);
+ strncpy(buf, "\n------- End of Unsent Draft\n", sizeof(buf));
+ write(out, buf, strlen(buf));
+ if (rename(file, strncpy(buf, m_backup(file), sizeof(buf))) == NOTOK)
+ admonish(buf, "unable to rename %s to", file);
+ }
+ }
+ lseek(out, (off_t) 0, SEEK_SET);
+ dup2(out, fileno(stdin));
+ close(out);
+ /* create subject for error notification */
+ snprintf(buf, sizeof(buf), "send failed on %s",
+ forwsw ? "enclosed draft" : file);
+
+ execlp(mailproc, mhbasename(mailproc),
+ getusername(), "-subject", buf, NULL);
+ fprintf(stderr, "unable to exec ");
+ perror(mailproc);
+ _exit(-1);
+
+ default: /* no waiting... */
+ break;
+ }