Separated send from whatnow, similar to the previous commit.
[mmh] / uip / send.c
index 2092c37..bdcd83b 100644 (file)
@@ -29,56 +29,22 @@ static struct swit switches[] = {
        { "forward", 0 },
 #define NFORWSW  7
        { "noforward", 0 },
-#define MIMESW  8
-       { "mime", 0 },
-#define NMIMESW  9
-       { "nomime", 0 },
-#define MSGDSW  10
-       { "msgid", 0 },
-#define NMSGDSW  11
-       { "nomsgid", 0 },
-#define PUSHSW  12
+#define PUSHSW  8
        { "push", 0 },
-#define NPUSHSW  13
+#define NPUSHSW  9
        { "nopush", 0 },
-#define UNIQSW  14
-       { "unique", -6 },
-#define NUNIQSW  15
-       { "nounique", -8 },
-#define VERBSW  16
+#define VERBSW  10
        { "verbose", 0 },
-#define NVERBSW  17
+#define NVERBSW  11
        { "noverbose", 0 },
-#define WATCSW  18
+#define WATCSW  12
        { "watch", 0 },
-#define NWATCSW  19
+#define NWATCSW  13
        { "nowatch", 0 },
-#define WIDTHSW  20
-       { "width columns", 0 },
-#define VERSIONSW  21
+#define VERSIONSW  14
        { "version", 0 },
-#define HELPSW  22
+#define HELPSW  15
        { "help", 0 },
-#define BITSTUFFSW  23
-       { "dashstuffing", -12 },
-#define NBITSTUFFSW  24
-       { "nodashstuffing", -14 },
-#define MAILSW  25
-       { "mail", -4 },
-#define SAMLSW  26
-       { "saml", -4 },
-#define SENDSW  27
-       { "send", -4 },
-#define SOMLSW  28
-       { "soml", -4 },
-#define CLIESW  29
-       { "client host", -6 },
-#define SERVSW  30
-       { "server host", 6 },
-#define SNOOPSW  31
-       { "snoop", 5 },
-#define PORTSW  32
-       { "port server-port-name/number" , 4 },
        { NULL, 0 }
 };
 
@@ -86,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;  /*  .. */
@@ -97,12 +62,12 @@ extern char *distfile;
 int
 main(int argc, char **argv)
 {
-       int msgp = 0, distsw = 0, vecp = 1;
-       int mime = 0;
+       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;
 
@@ -146,13 +111,6 @@ main(int argc, char **argv)
                                pushsw = 0;
                                continue;
 
-                       case UNIQSW:
-                               unique++;
-                               continue;
-                       case NUNIQSW:
-                               unique = 0;
-                               continue;
-
                        case FORWSW:
                                forwsw++;
                                continue;
@@ -169,40 +127,18 @@ main(int argc, char **argv)
                                vec[vecp++] = --cp;
                                continue;
 
-                       case MIMESW:
-                               mime++;
-                               vec[vecp++] = --cp;
-                               continue;
-                       case NMIMESW:
-                               mime = 0;
-                               vec[vecp++] = --cp;
-                               continue;
-
                        case DEBUGSW:
                                debugsw++;  /* fall */
                        case NFILTSW:
                        case FRMTSW:
                        case NFRMTSW:
-                       case BITSTUFFSW:
-                       case NBITSTUFFSW:
-                       case MSGDSW:
-                       case NMSGDSW:
                        case WATCSW:
                        case NWATCSW:
-                       case MAILSW:
-                       case SAMLSW:
-                       case SENDSW:
-                       case SOMLSW:
-                       case SNOOPSW:
                                vec[vecp++] = --cp;
                                continue;
 
                        case ALIASW:
                        case FILTSW:
-                       case WIDTHSW:
-                       case CLIESW:
-                       case SERVSW:
-                       case PORTSW:
                                vec[vecp++] = --cp;
                                if (!(cp = *argp++) || *cp == '-')
                                        adios(NULL, "missing argument to %s",
@@ -225,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));
                }
        }
 
@@ -245,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);
                }
        }
@@ -264,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;
@@ -279,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);
@@ -321,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: