Moved some variables into struct pop

(main): Added support for `-i'


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@853 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1996-10-17 19:38:24 +00:00
parent d30ef8d57e
commit b8dc2786d1

View File

@@ -12,12 +12,6 @@ static char SccsId[] = "@(#)@(#)pop_init.c 2.1 2.1 3/18/91";
#include <popper.h>
RCSID("$Id$");
#ifdef KERBEROS
AUTH_DAT kdata;
#endif /* KERBEROS */
extern int errno;
static
int
krb_authenticate(POP *p, struct sockaddr_in *addr)
@@ -33,19 +27,20 @@ krb_authenticate(POP *p, struct sockaddr_in *addr)
strcpy(instance, "*");
auth = krb_recvauth(0L, 0, &ticket, "pop", instance,
addr, (struct sockaddr_in *) NULL,
&kdata, "", schedule, version);
&p->kdata, "", schedule, version);
if (auth != KSUCCESS) {
pop_msg(p, POP_FAILURE, "Kerberos authentication failure: %s",
krb_get_err_text(auth));
pop_log(p, POP_FAILURE, "%s: (%s.%s@%s) %s", p->client,
kdata.pname, kdata.pinst, kdata.prealm, krb_get_err_text(auth));
p->kdata.pname, p->kdata.pinst, p->kdata.prealm,
krb_get_err_text(auth));
exit (1);
}
#ifdef DEBUG
pop_log(p, POP_DEBUG, "%s.%s@%s (%s): ok", kdata.pname,
kdata.pinst, kdata.prealm, inet_ntoa(addr->sin_addr));
pop_log(p, POP_DEBUG, "%s.%s@%s (%s): ok", p->kdata.pname,
p->kdata.pinst, p->kdata.prealm, inet_ntoa(addr->sin_addr));
#endif /* DEBUG */
#endif /* KERBEROS */
@@ -76,6 +71,7 @@ pop_init(POP *p,int argcount,char **argmessage)
int options = 0;
int sp = 0; /* Socket pointer */
char * trace_file_name;
int inetd = 0;
/* Initialize the POP parameter block */
memset (p,0, sizeof(POP));
@@ -94,7 +90,7 @@ pop_init(POP *p,int argcount,char **argmessage)
#ifdef KERBEROS
"k"
#endif
"dt:")) != EOF)
"dit:")) != EOF)
switch (c) {
/* Debugging requested */
@@ -127,6 +123,10 @@ pop_init(POP *p,int argcount,char **argmessage)
pop_timeout = atoi(optarg);
break;
/* Fake inetd */
case 'i':
inetd = 1;
break;
/* Unknown option received */
default:
errflag++;
@@ -134,10 +134,18 @@ pop_init(POP *p,int argcount,char **argmessage)
/* Exit if bad options specified */
if (errflag) {
(void)fprintf(stderr,"Usage: %s [-d]\n",argmessage[0]);
fprintf(stderr,
"Usage: %s [-T timeout] [-d] [-k] [-i]\n",
argmessage[0]);
exit (1);
}
/* Fake inetd */
if (inetd)
mini_inetd (p->kerberosp ?
k_getportbyname("kpop", "tcp", htons(1109)) :
k_getportbyname("pop", "tcp", htons(110)));
/* Get the address and socket of the client to whom I am speaking */
len = sizeof(cs);
if (getpeername(sp,(struct sockaddr *)&cs,&len) < 0){