Separated send from whatnow, similar to the previous commit.
[mmh] / uip / send.c
index e77f2b1..bdcd83b 100644 (file)
@@ -33,23 +33,17 @@ static struct swit switches[] = {
        { "push", 0 },
 #define NPUSHSW  9
        { "nopush", 0 },
-#define UNIQSW  10
-       { "unique", -6 },
-#define NUNIQSW  11
-       { "nounique", -8 },
-#define VERBSW  12
+#define VERBSW  10
        { "verbose", 0 },
-#define NVERBSW  13
+#define NVERBSW  11
        { "noverbose", 0 },
-#define WATCSW  14
+#define WATCSW  12
        { "watch", 0 },
-#define NWATCSW  15
+#define NWATCSW  13
        { "nowatch", 0 },
-#define WIDTHSW  16
-       { "width columns", 0 },
-#define VERSIONSW  17
+#define VERSIONSW  14
        { "version", 0 },
-#define HELPSW  18
+#define HELPSW  15
        { "help", 0 },
        { NULL, 0 }
 };
@@ -58,7 +52,6 @@ extern int debugsw;  /* from sendsbr.c */
 extern int forwsw;
 extern int inplace;
 extern int pushsw;
-extern int unique;
 extern int verbsw;
 
 extern char *altmsg;  /*  .. */
@@ -69,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;
 
@@ -117,13 +111,6 @@ main(int argc, char **argv)
                                pushsw = 0;
                                continue;
 
-                       case UNIQSW:
-                               unique++;
-                               continue;
-                       case NUNIQSW:
-                               unique = 0;
-                               continue;
-
                        case FORWSW:
                                forwsw++;
                                continue;
@@ -152,7 +139,6 @@ main(int argc, char **argv)
 
                        case ALIASW:
                        case FILTSW:
-                       case WIDTHSW:
                                vec[vecp++] = --cp;
                                if (!(cp = *argp++) || *cp == '-')
                                        adios(NULL, "missing argument to %s",
@@ -175,7 +161,7 @@ main(int argc, char **argv)
                for (ap = brkstring(dp = getcpy(cp), " ", "\n"); ap && *ap;
                                ap++) {
                        vec[vecp++] = "-alias";
-                       vec[vecp++] = *ap;
+                       vec[vecp++] = getcpy(etcpath(*ap));
                }
        }
 
@@ -195,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);
                }
        }
@@ -214,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;
@@ -229,11 +223,7 @@ main(int argc, char **argv)
                vec[vecp++] = "-dist";
                distfile = getcpy(m_mktemp2(altmsg, invo_name, NULL, NULL));
                if (link(altmsg, distfile) == NOTOK) {
-                       if (errno != EXDEV
-#ifdef EISREMOTE
-                                       && errno != EISREMOTE
-#endif /* EISREMOTE */
-                               )
+                       if (errno != EXDEV)
                                adios(distfile, "unable to link %s to",
                                                altmsg);
                        free(distfile);
@@ -271,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: