X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/de4636bb664106d9932ae7acb517e471b848f1f3..d6b2ae5fa68b9a82ffc006c233aef64c5cdb3bd2:/uip/forw.c diff --git a/uip/forw.c b/uip/forw.c index 58c61309..12a323bb 100644 --- a/uip/forw.c +++ b/uip/forw.c @@ -78,7 +78,7 @@ static struct swit aqrl[] = { { "replace", 0, YESW }, { "list", 0, LISTDSW }, { "refile +folder", 0, REFILSW }, - { NULL, 0 } + { NULL, 0, 0 } }; static char drft[BUFSIZ]; @@ -116,16 +116,9 @@ main (int argc, char **argv) char **argp, **arguments; struct stat st; struct msgs_array msgs = { 0, 0, NULL }; - int buildsw = 0; -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); - - /* read user profile/context */ - context_read(); + if (nmh_init(argv[0], 1)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -363,7 +356,7 @@ try_it_again: adios (maildir, "unable to change directory to"); /* read folder and create message structure */ - if (!(mp = folder_read (folder))) + if (!(mp = folder_read (folder, 1))) adios (NULL, "unable to read folder %s", folder); /* check for empty folder */ @@ -496,12 +489,13 @@ mhl_draft (int out, char *digest, int volume, int issue, int i, msgnum, pd[2]; char buf1[BUFSIZ]; char buf2[BUFSIZ]; + char *program; struct msgs_array vec = { 0, 0, NULL }; if (pipe (pd) == NOTOK) adios ("pipe", "unable to create"); - app_msgarg(&vec, r1bindex (mhlproc, '/')); + argsplit_msgarg(&vec, mhlproc, &program); for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) sleep (5); @@ -515,7 +509,6 @@ mhl_draft (int out, char *digest, int volume, int issue, dup2 (pd[1], 1); close (pd[1]); - i = 1; app_msgarg(&vec, "-forwall"); app_msgarg(&vec, "-form"); app_msgarg(&vec, filter); @@ -548,7 +541,7 @@ mhl_draft (int out, char *digest, int volume, int issue, app_msgarg(&vec, NULL); - execvp (mhlproc, vec.msgs); + execvp (program, vec.msgs); fprintf (stderr, "unable to exec "); perror (mhlproc); _exit (-1); @@ -605,7 +598,9 @@ copy_draft (int out, char *digest, char *file, int volume, int issue, int dashst strncpy (bp, "\n\n", buflen); } - write (out, buffer, strlen (buffer)); + if (write (out, buffer, strlen (buffer)) < 0) { + advise (drft, "write"); + } if ((fd = open (msgnam = m_name (msgnum), O_RDONLY)) == NOTOK) { admonish (msgnam, "unable to read message"); @@ -632,7 +627,9 @@ copy_draft (int out, char *digest, char *file, int volume, int issue, int dashst snprintf (buffer, sizeof(buffer), "\n------- End of Forwarded Message%s\n", mp->numsel > 1 ? "s" : ""); } - write (out, buffer, strlen (buffer)); + if (write (out, buffer, strlen (buffer)) < 0) { + advise (drft, "write"); + } if (digest) { snprintf (buffer, sizeof(buffer), "End of %s Digest [Volume %d Issue %d]\n", @@ -642,7 +639,9 @@ copy_draft (int out, char *digest, char *file, int volume, int issue, int dashst *bp++ = '*'; *bp++ = '\n'; *bp = 0; - write (out, buffer, strlen (buffer)); + if (write (out, buffer, strlen (buffer)) < 0) { + advise (drft, "write"); + } } } @@ -659,11 +658,17 @@ copy_mime_draft (int out) snprintf (buffer, sizeof(buffer), "#forw [forwarded message%s] +%s", mp->numsel == 1 ? "" : "s", mp->foldpath); - write (out, buffer, strlen (buffer)); + if (write (out, buffer, strlen (buffer)) < 0) { + advise (drft, "write"); + } for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) if (is_selected (mp, msgnum)) { snprintf (buffer, sizeof(buffer), " %s", m_name (msgnum)); - write (out, buffer, strlen (buffer)); + if (write (out, buffer, strlen (buffer)) < 0) { + advise (drft, "write"); + } } - write (out, "\n", 1); + if (write (out, "\n", 1) < 0) { + advise (drft, "write newline"); + } }