Added -nocontentid (and -contentid, for symmetry) switch to mhbuild. This allows...
[mmh] / uip / send.c
index 2370ea4..514f073 100644 (file)
@@ -3,6 +3,10 @@
  * send.c -- send a composed message
  *
  * $Id$
+ *
+ * This code is Copyright (c) 2002, by the authors of nmh.  See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
  */
 
 #include <h/mh.h>
 #include <signal.h>
 
 
+#ifndef CYRUS_SASL
+# define SASLminc(a) (a)
+#else /* CYRUS_SASL */
+# define SASLminc(a)  0
+#endif /* CYRUS_SASL */
+
 static struct swit switches[] = {
 #define        ALIASW                 0
     { "alias aliasfile", 0 },
@@ -67,7 +77,7 @@ static struct swit switches[] = {
 #define VERSIONSW             26
     { "version", 0 },
 #define        HELPSW                27
-    { "help", 4 },
+    { "help", 0 },
 #define BITSTUFFSW            28
     { "dashstuffing", -12 },
 #define NBITSTUFFSW           29
@@ -86,6 +96,14 @@ static struct swit switches[] = {
     { "server host", -6 },
 #define        SNOOPSW               36
     { "snoop", -5 },
+#define SASLSW                37
+    { "sasl", SASLminc(-4) },
+#define SASLMECHSW            38
+    { "saslmech", SASLminc(-5) },
+#define USERSW                39
+    { "user", SASLminc(-4) },
+#define ATTACHSW              40
+    { "attach", 6 },
     { NULL, 0 }
 };
 
@@ -111,7 +129,6 @@ extern char *altmsg;                /*  .. */
 extern char *annotext;
 extern char *distfile;
 
-extern int   errno;
 
 int
 main (int argc, char **argv)
@@ -124,6 +141,7 @@ main (int argc, char **argv)
     char *msgs[MAXARGS], *vec[MAXARGS];
     struct msgs *mp;
     struct stat st;
+    char       *attach = (char *)0;    /* header field name for attachments */
 #ifdef UCI
     FILE *fp;
 #endif /* UCI */
@@ -241,6 +259,7 @@ main (int argc, char **argv)
                case SENDSW: 
                case SOMLSW: 
                case SNOOPSW: 
+               case SASLSW:
                    vec[vecp++] = --cp;
                    continue;
 
@@ -249,11 +268,18 @@ main (int argc, char **argv)
                case WIDTHSW: 
                case CLIESW: 
                case SERVSW: 
+               case SASLMECHSW:
+               case USERSW:
                    vec[vecp++] = --cp;
                    if (!(cp = *argp++) || *cp == '-')
                        adios (NULL, "missing argument to %s", argp[-2]);
                    vec[vecp++] = cp;
                    continue;
+               
+               case ATTACHSW:
+                   if (!(attach = *argp++) || *attach == '-')
+                       adios (NULL, "missing argument to %s", argp[-2]);
+                   continue;
            }
        } else {
            msgs[msgp++] = cp;
@@ -417,7 +443,7 @@ go_to_it:
     closefds (3);
 
     for (msgnum = 0; msgnum < msgp; msgnum++) {
-       switch (sendsbr (vec, vecp, msgs[msgnum], &st, 1)) {
+       switch (sendsbr (vec, vecp, msgs[msgnum], &st, 1, attach)) {
            case DONE: 
                done (++status);
            case NOTOK: 
@@ -428,5 +454,5 @@ go_to_it:
     }
 
     context_save ();   /* save the context file */
-    done (status);
+    return done (status);
 }