X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Finc.c;h=38ab687394ebe08cdefc6e3133288f456b3af22f;hb=c05210483d82bf5f3786725ff80e12444088a701;hp=ef1b08febc408334e5467ca4db48f436b25be541;hpb=38615191e71744b066425e0c44412b62dbe49cc2;p=mmh diff --git a/uip/inc.c b/uip/inc.c index ef1b08f..38ab687 100644 --- a/uip/inc.c +++ b/uip/inc.c @@ -2,8 +2,6 @@ /* * inc.c -- incorporate messages from a maildrop into a folder * - * $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. @@ -37,10 +35,6 @@ # include #endif -#ifdef HESIOD -# include -#endif - #include #include #include @@ -55,24 +49,6 @@ # define POPminc(a) 0 #endif -#ifndef RPOP -# define RPOPminc(a) (a) -#else -# define RPOPminc(a) 0 -#endif - -#ifndef APOP -# define APOPminc(a) (a) -#else -# define APOPminc(a) 0 -#endif - -#ifndef KPOP -# define KPOPminc(a) (a) -#else -# define KPOPminc(a) 0 -#endif - #ifndef CYRUS_SASL # define SASLminc(a) (a) #else @@ -102,14 +78,8 @@ static struct swit switches[] = { { "pack file", POPminc (-4) }, #define NPACKSW 10 { "nopack", POPminc (-6) }, -#define APOPSW 11 - { "apop", APOPminc (-4) }, -#define NAPOPSW 12 - { "noapop", APOPminc (-6) }, -#define RPOPSW 13 - { "rpop", RPOPminc (-4) }, -#define NRPOPSW 14 - { "norpop", RPOPminc (-6) }, +#define PORTSW 13 + { "port name/number", POPminc (-4) }, #define SILSW 15 { "silent", 0 }, #define NSILSW 16 @@ -126,8 +96,6 @@ static struct swit switches[] = { { "help", 0 }, #define SNOOPSW 22 { "snoop", -5 }, -#define KPOPSW 23 - { "kpop", KPOPminc (-4) }, #define SASLSW 24 { "sasl", SASLminc(-4) }, #define SASLMECHSW 25 @@ -207,12 +175,6 @@ if (geteuid() != 0) DROPGROUPPRIVS() #define SAVEGROUPPRIVS() #endif /* not MAILGROUP */ -#ifdef POP -#define DROPUSERPRIVS() setuid(getuid()) -#else -#define DROPUSERPRIVS() -#endif - /* these variables have to be globals so that done() can correctly clean up the lockfile */ static int locked = 0; static char *newmail; @@ -223,7 +185,7 @@ static FILE *in; */ char *map_name(char *); -static void inc_done(int); +static void inc_done(int) NORETURN; #ifdef POP static int pop_action(char *); static int pop_pack(char *); @@ -236,18 +198,18 @@ main (int argc, char **argv) { int chgflag = 1, trnflag = 1; int noisy = 1, width = 0; - int rpop, i, hghnum, msgnum; - int kpop = 0, sasl = 0; - char *cp, *maildir, *folder = NULL; + int i, hghnum = 0, msgnum = 0; + int sasl = 0; + char *cp, *maildir = NULL, *folder = NULL; char *format = NULL, *form = NULL; - char *host = NULL, *user = NULL, *proxy = NULL; + char *host = NULL, *port = NULL, *user = NULL, *proxy = NULL; char *audfile = NULL, *from = NULL, *saslmech = NULL; char buf[BUFSIZ], **argp, *nfs, **arguments; - struct msgs *mp; + struct msgs *mp = NULL; struct stat st, s1; FILE *aud = NULL; - char b[MAXPATHLEN + 1]; - char *maildir_copy; /* copy of mail directory because the static gets overwritten */ + char b[MAXPATHLEN + 1]; + char *maildir_copy = NULL; /* copy of mail directory because the static gets overwritten */ #ifdef POP int nmsgs, nbytes, p = 0; @@ -259,10 +221,6 @@ main (int argc, char **argv) FILE *mhe = NULL; #endif -#ifdef HESIOD - struct hes_postoffice *po; -#endif - done=inc_done; /* absolutely the first thing we do is save our privileges, @@ -293,11 +251,6 @@ main (int argc, char **argv) */ 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; -# endif /* HESIOD */ /* * If there is a valid "pophost" entry in mts.conf, * then use it as the default host. @@ -309,8 +262,6 @@ main (int argc, char **argv) snoop++; #endif /* POP */ - rpop = 0; - while ((cp = *argp++)) { if (*cp == '-') { switch (smatch (++cp, switches)) { @@ -399,6 +350,12 @@ main (int argc, char **argv) if (!(host = *argp++) || *host == '-') adios (NULL, "missing argument to %s", argp[-2]); continue; + + case PORTSW: + if (!(host = *argp++) || *port == '-') + adios (NULL, "missing argument to %s", argp[-2]); + continue; + case USERSW: if (!(user = *argp++) || *user == '-') adios (NULL, "missing argument to %s", argp[-2]); @@ -419,24 +376,6 @@ main (int argc, char **argv) #endif /* POP */ continue; - case APOPSW: - rpop = -1; - continue; - case NAPOPSW: - rpop = 0; - continue; - - case RPOPSW: - rpop = 1; - continue; - case NRPOPSW: - rpop = 0; - continue; - - case KPOPSW: - kpop = 1; - continue; - case SNOOPSW: snoop++; continue; @@ -471,8 +410,6 @@ main (int argc, char **argv) #ifdef POP if (host && !*host) host = NULL; - if (from || !host || rpop <= 0) - DROPUSERPRIVS(); #endif /* POP */ /* guarantee dropping group priveleges; we might not have done so earlier */ @@ -498,10 +435,7 @@ main (int argc, char **argv) if (inc_type == INC_POP) { if (user == NULL) user = getusername (); - if ( strcmp( POPSERVICE, "kpop" ) == 0 ) { - kpop = 1; - } - if (kpop || sasl || ( rpop > 0)) + if (sasl) pass = getusername (); else ruserpass (host, &user, &pass); @@ -509,16 +443,14 @@ main (int argc, char **argv) /* * initialize POP connection */ - if (pop_init (host, user, pass, proxy, snoop, kpop ? 1 : rpop, kpop, - sasl, saslmech) == NOTOK) + if (pop_init (host, port, user, pass, proxy, snoop, sasl, + saslmech) == NOTOK) adios (NULL, "%s", response); /* Check if there are any messages */ if (pop_stat (&nmsgs, &nbytes) == NOTOK) adios (NULL, "%s", response); - if (rpop > 0) - DROPUSERPRIVS(); if (nmsgs == 0) { pop_quit(); adios (NULL, "no mail to incorporate"); @@ -545,7 +477,7 @@ main (int argc, char **argv) adios (NULL, "no mail to incorporate"); if ((cp = strdup(newmail)) == (char *)0) - adios (maildir, "error allocating memory to copy newmail"); + adios (NULL, "error allocating memory to copy newmail"); newmail = cp; } @@ -622,10 +554,9 @@ go_to_it: #ifdef POP fprintf (aud, from ? "<> %s -ms %s\n" - : host ? "<> %s -host %s -user %s%s\n" + : host ? "<> %s -host %s -user %s\n" : "<> %s\n", - dtimenow (0), from ? from : host, user, - rpop < 0 ? " -apop" : rpop > 0 ? " -rpop" : ""); + dtimenow (0), from ? from : host, user); #else /* POP */ fprintf (aud, from ? "<> %s -ms %s\n" : "<> %s\n", dtimenow (0), from);