X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Finc.c;h=e6adb32f73b4d920dad68dd3dfa1f32e46aee545;hp=3209a97c8e3ca6c8f52b4fe99ec111ffebf7281e;hb=7d5df1b80b43bfe60de33b0b62c992eea1d8d531;hpb=877d0da4a8334e53ebc0a8b740efe489e0817e92 diff --git a/uip/inc.c b/uip/inc.c index 3209a97..e6adb32 100644 --- a/uip/inc.c +++ b/uip/inc.c @@ -68,6 +68,12 @@ # define KPOPminc(a) 0 #endif +#ifndef CYRUS_SASL +# define SASLminc(a) (a) +#else +# define SASLminc(a) 0 +#endif + static struct swit switches[] = { #define AUDSW 0 { "audit audit-file", 0 }, @@ -117,6 +123,10 @@ static struct swit switches[] = { { "snoop", -5 }, #define KPOPSW 23 { "kpop", KPOPminc (-4) }, +#define SASLSW 24 + { "sasl", SASLminc(-4) }, +#define SASLMECHSW 25 + { "saslmech", SASLminc(-8) }, { NULL, 0 } }; @@ -222,11 +232,11 @@ main (int argc, char **argv) int chgflag = 1, trnflag = 1; int noisy = 1, width = 0; int rpop, i, hghnum, msgnum; - int kpop = 0; + int kpop = 0, sasl = 0; char *cp, *maildir, *folder = NULL; char *format = NULL, *form = NULL; char *host = NULL, *user = NULL; - char *audfile = NULL, *from = NULL; + char *audfile = NULL, *from = NULL, *saslmech = NULL; char buf[BUFSIZ], **argp, *nfs, **arguments; struct msgs *mp; struct stat st, s1; @@ -235,6 +245,7 @@ main (int argc, char **argv) #ifdef POP int nmsgs, nbytes, p = 0; char *pass = NULL; + char *MAILHOST_env_variable; #endif #ifdef MHE @@ -243,7 +254,6 @@ main (int argc, char **argv) #ifdef HESIOD struct hes_postoffice *po; - char *tmphost; #endif /* absolutely the first thing we do is save our privileges, @@ -265,7 +275,6 @@ main (int argc, char **argv) argp = arguments; #ifdef POP -# ifdef HESIOD /* * Scheme is: * use MAILHOST environment variable if present, @@ -273,8 +282,9 @@ main (int argc, char **argv) * If that fails, use the default (if any) * provided by mts.conf in mts_init() */ - if ((tmphost = getenv("MAILHOST")) != NULL) - pophost = tmphost; + if ((MAILHOST_env_variable = getenv("MAILHOST")) != NULL) + pophost = MAILHOST_env_variable; +# ifdef HESIOD else if ((po = hes_getmailhost(getusername())) != NULL && strcmp(po->po_type, "POP") == 0) pophost = po->po_host; @@ -421,6 +431,15 @@ main (int argc, char **argv) case SNOOPSW: snoop++; continue; + + case SASLSW: + sasl++; + continue; + + case SASLMECHSW: + if (!(saslmech = *argp++) || *saslmech == '-') + adios (NULL, "missing argument to %s", argp[-2]); + continue; } } if (*cp == '+' || *cp == '@') { @@ -469,7 +488,7 @@ main (int argc, char **argv) if ( strcmp( POPSERVICE, "kpop" ) == 0 ) { kpop = 1; } - if (kpop || ( rpop > 0)) + if (kpop || sasl || ( rpop > 0)) pass = getusername (); else ruserpass (host, &user, &pass); @@ -477,7 +496,8 @@ main (int argc, char **argv) /* * initialize POP connection */ - if (pop_init (host, user, pass, snoop, kpop ? 1 : rpop, kpop) == NOTOK) + if (pop_init (host, user, pass, snoop, kpop ? 1 : rpop, kpop, + sasl, saslmech) == NOTOK) adios (NULL, "%s", response); /* Check if there are any messages */