X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Finc.c;h=4903e21856486e4410dcd7069be33fd1c5bc986c;hp=09cfa9584cfa82494df18c52e1042153270a334f;hb=99e5043db7ee6cf80f93708610a6e584a8068c6a;hpb=7afa1855f4255c6c6127283e2bd3768da814e7ef diff --git a/uip/inc.c b/uip/inc.c index 09cfa95..4903e21 100644 --- 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)