Fixed make_bcc_file () to use contents of From: in draft, if draft_from masquerade...
[mmh] / uip / inc.c
index 09cfa95..4903e21 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -131,11 +131,11 @@ static struct swit switches[] = {
     { "sasl", SASLminc(-4) },
 #define SASLMECHSW                25
     { "saslmech", SASLminc(-8) },
+#define PROXYSW                   26
+    { "proxy command", POPminc(-5) },
     { NULL, 0 }
 };
 
-extern int errno;
-
 /*
  * flags for the mail source
  */
@@ -239,13 +239,14 @@ main (int argc, char **argv)
     int kpop = 0, sasl = 0;
     char *cp, *maildir, *folder = NULL;
     char *format = NULL, *form = NULL;
-    char *host = NULL, *user = NULL;
+    char *host = NULL, *user = NULL, *proxy = NULL;
     char *audfile = NULL, *from = NULL, *saslmech = NULL;
     char buf[BUFSIZ], **argp, *nfs, **arguments;
     struct msgs *mp;
     struct stat st, s1;
     FILE *aud = NULL;
     char       b[MAXPATHLEN + 1];
+    char       *maildir_copy;          /* copy of mail directory because the static gets overwritten */
 
 #ifdef POP
     int nmsgs, nbytes, p = 0;
@@ -445,6 +446,10 @@ main (int argc, char **argv)
                if (!(saslmech = *argp++) || *saslmech == '-')
                    adios (NULL, "missing argument to %s", argp[-2]);
                continue;
+           case PROXYSW:
+               if (!(proxy = *argp++) || *proxy == '-')
+                   adios (NULL, "missing argument to %s", argp[-2]);
+               continue;
            }
        }
        if (*cp == '+' || *cp == '@') {
@@ -501,7 +506,7 @@ main (int argc, char **argv)
        /*
         * initialize POP connection
         */
-       if (pop_init (host, user, pass, snoop, kpop ? 1 : rpop, kpop,
+       if (pop_init (host, user, pass, proxy, snoop, kpop ? 1 : rpop, kpop,
                      sasl, saslmech) == NOTOK)
            adios (NULL, "%s", response);
 
@@ -535,6 +540,11 @@ main (int argc, char **argv)
        }
        if (stat (newmail, &s1) == NOTOK || s1.st_size == 0)
            adios (NULL, "no mail to incorporate");
+
+       if ((cp = strdup(newmail)) == (char *)0)
+           adios (maildir, "error allocating memory to copy newmail");
+
+       newmail = cp;
     }
 
 #ifdef POP
@@ -549,6 +559,9 @@ main (int argc, char **argv)
        folder = getfolder (0);
     maildir = m_maildir (folder);
 
+    if ((maildir_copy = strdup(maildir)) == (char *)0)
+        adios (maildir, "error allocating memory to copy maildir");
+
     if (stat (maildir, &st) == NOTOK) {
        if (errno != ENOENT)
            adios (maildir, "error on folder");
@@ -830,7 +843,7 @@ go_to_it:
                 *  Run the external program hook on the message.
                 */
 
-               (void)snprintf(b, sizeof (b), "%s/%d", maildir, msgnum + 1);
+               (void)snprintf(b, sizeof (b), "%s/%d", maildir_copy, msgnum + 1);
                (void)ext_hook("add-hook", b, (char *)0);
 
                if (aud)