Separated send from whatnow, similar to the previous commit.
[mmh] / uip / send.c
index da5f23b..bdcd83b 100644 (file)
@@ -62,11 +62,12 @@ extern char *distfile;
 int
 main(int argc, char **argv)
 {
-       int msgp = 0, distsw = 0, vecp = 1;
+       int msgp = 0, msgp2 = 0, distsw = 0, vecp = 1;
        int msgnum, status;
        char *cp, *maildir = NULL;
        char buf[BUFSIZ], **ap, **argp, **arguments;
        char *msgs[MAXARGS], *vec[MAXARGS];
+       char *msgs2[MAXARGS];
        struct msgs *mp;
        struct stat st;
 
@@ -180,14 +181,22 @@ main(int argc, char **argv)
                adios(NULL, "no messages in draft folder %s", draftfolder);
 
        /* parse all the message ranges/sequences and set SELECTED */
-       for (msgnum = 0; msgnum < msgp; msgnum++)
-               if (!m_convert(mp, msgs[msgnum]))
+       msgp2 = 0;
+       for (msgnum = 0; msgnum < msgp; msgnum++) {
+               if (*msgs[msgnum] == '/') {
+                       /* absolute path */
+                       msgs2[msgp2++] = msgs[msgnum];
+                       continue;
+               }
+               if (!m_convert(mp, msgs[msgnum])) {
                        done(1);
+               }
+       }
        seq_setprev(mp);  /* set the previous-sequence */
 
        for (msgp = 0, msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
                if (is_selected(mp, msgnum)) {
-                       msgs[msgp++] = getcpy(m_name(msgnum));
+                       msgs2[msgp2++] = getcpy(m_name(msgnum));
                        unset_exists(mp, msgnum);
                }
        }
@@ -199,9 +208,9 @@ main(int argc, char **argv)
                if ((cp = context_find("signature")) && *cp)
                        m_putenv("SIGNATURE", cp);
 
-       for (msgnum = 0; msgnum < msgp; msgnum++)
-               if (stat(msgs[msgnum], &st) == NOTOK)
-                       adios(msgs[msgnum], "unable to stat draft file");
+       for (msgnum = 0; msgnum < msgp2; msgnum++)
+               if (stat(msgs2[msgnum], &st) == NOTOK)
+                       adios(msgs2[msgnum], "unable to stat draft file");
 
        if ((annotext = getenv("mhannotate")) == NULL || *annotext == 0)
                annotext = NULL;
@@ -252,8 +261,8 @@ main(int argc, char **argv)
        vec[0] = mhbasename(postproc);
        closefds(3);
 
-       for (msgnum = 0; msgnum < msgp; msgnum++) {
-               switch (sendsbr(vec, vecp, msgs[msgnum], &st, 1)) {
+       for (msgnum = 0; msgnum < msgp2; msgnum++) {
+               switch (sendsbr(vec, vecp, msgs2[msgnum], &st, 1)) {
                case DONE:
                        done(++status);
                case NOTOK: