spost: Read profile and context now. Removed -library switch.
[mmh] / uip / spost.c
index 369f03e..fe2e34b 100644 (file)
 
 #define MAX_SM_FIELD 1476  /* < largest hdr field sendmail will accept */
 
-struct swit switches[] = {
+static struct swit switches[] = {
 #define VERBSW  0
        { "verbose", 0 },
 #define NVERBSW  1
-       { "noverbose", 0 },
-#define WATCSW  2
-       { "watch", 0 },
-#define NWATCSW  3
-       { "nowatch", 0 },
-#define ALIASW  4
+       { "noverbose", 2 },
+#define ALIASW  2
        { "alias aliasfile", 0 },
-#define NALIASW  5
-       { "noalias", 0 },
-#define VERSIONSW  6
-       { "version", 0 },
-#define HELPSW  7
+#define NALIASW  3
+       { "noalias", 2 },
+#define VERSIONSW  4
+       { "Version", 0 },
+#define HELPSW  5
        { "help", 0 },
-#define DEBUGSW  8
+#define DEBUGSW  6
        { "debug", -5 },
-#define DISTSW  9
+#define DISTSW  7
        { "dist", -4 },  /* interface from dist */
-#define PUSHSW  10  /* fork to sendmail then exit */
-       { "push", -4 },
-#define NPUSHSW  11  /* exec sendmail */
-       { "nopush", -6 },
-#define LIBSW  12
-       { "library directory", -7 },
        { NULL, 0 }
 };
 
@@ -109,11 +99,9 @@ static struct headers RHeaders[] = {
 };
 
 
-static int badmsg = 0;  /* message has bad semantics */
-static int verbose = 0;  /* spell it out */
-static int debug = 0;  /* debugging post */
-static int watch = 0;  /* watch the delivery process */
-static int pushflg = 0;  /* if going to fork to sendmail */
+static int badmsg = 0;
+static int verbose = 0;
+static int debug = 0;
 static int aliasflg = 0;  /* if going to process aliases */
 
 static unsigned msgflags = 0;  /* what we've seen */
@@ -152,14 +140,10 @@ main(int argc, char **argv)
        char *sargv[16], buf[BUFSIZ], name[NAMESZ];
        FILE *in;
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
 
-       /* foil search of user profile/context */
-       if (context_foil(NULL) == -1)
-               done(1);
+       context_read();
 
        arguments = getarguments(invo_name, argc, argv, 0);
        argp = arguments;
@@ -198,20 +182,6 @@ main(int argc, char **argv)
                                verbose = 0;
                                continue;
 
-                       case WATCSW:
-                               watch++;
-                               continue;
-                       case NWATCSW:
-                               watch = 0;
-                               continue;
-
-                       case PUSHSW:
-                               pushflg++;
-                               continue;
-                       case NPUSHSW:
-                               pushflg = 0;
-                               continue;
-
                        case ALIASW:
                                if (!(cp = *argp++) || *cp == '-')
                                        adios(NULL, "missing argument to %s",
@@ -223,15 +193,6 @@ main(int argc, char **argv)
                        case NALIASW:
                                aliasflg = 0;
                                continue;
-
-                       case LIBSW:
-                               if (!(cp = *argp++) || *cp == '-')
-                                       adios(NULL, "missing argument to %s",
-                                                       argp[-2]);
-                               /* create a minimal context */
-                               if (context_foil(cp) == -1)
-                                       done(1);
-                               continue;
                        }
                }
                if (msg)
@@ -312,17 +273,6 @@ main(int argc, char **argv)
                fcc(tmpfil, fccs);
        }
 
-       argp = sargv;
-       *argp++ = "send-mail";
-       *argp++ = "-m";  /* send to me too */
-       *argp++ = "-t";  /* read msg for recipients */
-       *argp++ = "-i";  /* don't stop on "." */
-       if (watch || verbose) {
-               *argp++ = "-v";
-               pushflg = 0;
-       }
-       *argp = NULL;
-
        if (bccs) {
                process_bccs(tmpfil);
                if (!(msgflags & MVIS)) {
@@ -341,21 +291,15 @@ main(int argc, char **argv)
        }
        unlink(tmpfil);
 
-       if (pushflg) {
-               /* fork to a child to run sendmail */
-               switch (fork()) {
-               case NOTOK:
-                       fprintf(verbose ? stdout : stderr,
-                                       "%s: can't fork to %s\n",
-                                       invo_name, sendmail);
-                       exit(-1);
-               case OK:
-                       /* we're the child .. */
-                       break;
-               default:
-                       exit(0);
-               }
+       argp = sargv;
+       *argp++ = "send-mail";
+       *argp++ = "-m";  /* send to me too */
+       *argp++ = "-t";  /* read msg for recipients */
+       *argp++ = "-i";  /* don't stop on "." */
+       if (verbose) {
+               *argp++ = "-v";
        }
+       *argp = NULL;
        execv(sendmail, sargv);
        adios(sendmail, "can't exec");
        return -1;
@@ -694,8 +638,7 @@ process_bccs(char *origmsg)
                fprintf(out, "------------\n");
                fclose(out);
 
-               snprintf(buf, sizeof buf, "send%s %s",
-                               pushflg ? " -push" : "", bccdraft);
+               snprintf(buf, sizeof buf, "send %s", bccdraft);
                if (system(buf) != 0) {
                        admonish(invo_name, "Problems to send Bcc to %s",
                                        mp->m_text);