]> diplodocus.org Git - nmh/blobdiff - uip/forw.c
Merge commit '8206fbf', due to my screwup of committing it on a detached
[nmh] / uip / forw.c
index 97714dc412f2d3caa7afc7a5d12f9b0f9d00eac2..12a323bb874cfe2746ffa161846e64871f3a1dd5 100644 (file)
@@ -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");
+    }
 }