Remove XTND, and XTND XMIT. Rename XTND XOVER to XOVER.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1779 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -34,22 +34,22 @@ OBJECTS = $(POPPER_OBJECTS) $(POP_DEBUG_OBJECTS)
|
|||||||
|
|
||||||
POPPER_SOURCES = \
|
POPPER_SOURCES = \
|
||||||
pop_dele.c pop_dropcopy.c pop_dropinfo.c \
|
pop_dele.c pop_dropcopy.c pop_dropinfo.c \
|
||||||
pop_get_command.c pop_get_subcommand.c pop_init.c \
|
pop_get_command.c pop_init.c \
|
||||||
pop_last.c pop_list.c pop_log.c \
|
pop_last.c pop_list.c pop_log.c \
|
||||||
pop_msg.c pop_parse.c pop_pass.c pop_quit.c \
|
pop_msg.c pop_parse.c pop_pass.c pop_quit.c \
|
||||||
pop_rset.c pop_send.c pop_stat.c pop_updt.c \
|
pop_rset.c pop_send.c pop_stat.c pop_updt.c \
|
||||||
pop_user.c pop_xtnd.c pop_xmit.c pop_uidl.c pop_xover.c popper.c
|
pop_user.c pop_uidl.c pop_xover.c popper.c
|
||||||
|
|
||||||
POP_DEBUG_SOURCES = \
|
POP_DEBUG_SOURCES = \
|
||||||
pop_debug.c
|
pop_debug.c
|
||||||
|
|
||||||
POPPER_OBJECTS = \
|
POPPER_OBJECTS = \
|
||||||
pop_dele.o pop_dropcopy.o pop_dropinfo.o \
|
pop_dele.o pop_dropcopy.o pop_dropinfo.o \
|
||||||
pop_get_command.o pop_get_subcommand.o pop_init.o \
|
pop_get_command.o pop_init.o \
|
||||||
pop_last.o pop_list.o pop_log.o pop_msg.o \
|
pop_last.o pop_list.o pop_log.o pop_msg.o \
|
||||||
pop_parse.o pop_pass.o pop_quit.o pop_rset.o \
|
pop_parse.o pop_pass.o pop_quit.o pop_rset.o \
|
||||||
pop_send.o pop_stat.o pop_updt.o pop_user.o \
|
pop_send.o pop_stat.o pop_updt.o pop_user.o \
|
||||||
pop_xtnd.o pop_xmit.o pop_uidl.o pop_xover.o popper.o
|
pop_uidl.o pop_xover.o popper.o
|
||||||
|
|
||||||
POP_DEBUG_OBJECTS = \
|
POP_DEBUG_OBJECTS = \
|
||||||
pop_debug.o
|
pop_debug.o
|
||||||
|
@@ -27,11 +27,13 @@ static state_table states[] = {
|
|||||||
{trans, "rset", 0, 0, pop_rset, {trans, trans}},
|
{trans, "rset", 0, 0, pop_rset, {trans, trans}},
|
||||||
{trans, "top", 2, 2, pop_send, {trans, trans}},
|
{trans, "top", 2, 2, pop_send, {trans, trans}},
|
||||||
{trans, "last", 0, 0, pop_last, {trans, trans}},
|
{trans, "last", 0, 0, pop_last, {trans, trans}},
|
||||||
{trans, "xtnd", 1, 99, pop_xtnd, {trans, trans}},
|
|
||||||
{trans, "quit", 0, 0, pop_updt, {halt, halt}},
|
{trans, "quit", 0, 0, pop_updt, {halt, halt}},
|
||||||
{trans, "help", 0, 0, pop_help, {trans, trans}},
|
{trans, "help", 0, 0, pop_help, {trans, trans}},
|
||||||
#ifdef UIDL
|
#ifdef UIDL
|
||||||
{trans, "uidl", 0, 1, pop_uidl, {trans, trans}},
|
{trans, "uidl", 0, 1, pop_uidl, {trans, trans}},
|
||||||
|
#endif
|
||||||
|
#ifdef XOVER
|
||||||
|
{trans, "xover", 0, 0, pop_xover, {trans, trans}},
|
||||||
#endif
|
#endif
|
||||||
{(state) 0, NULL, 0, 0, NULL, {halt, halt}},
|
{(state) 0, NULL, 0, 0, NULL, {halt, halt}},
|
||||||
};
|
};
|
||||||
|
@@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 1989 Regents of the University of California.
|
|
||||||
* All rights reserved. The Berkeley software License Agreement
|
|
||||||
* specifies the terms and conditions for redistribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <popper.h>
|
|
||||||
RCSID("$Id$");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* get_subcommand: Extract a POP XTND subcommand from a client input line
|
|
||||||
*/
|
|
||||||
|
|
||||||
static xtnd_table subcommands[] = {
|
|
||||||
{"xmit", 0, 0, pop_xmit},
|
|
||||||
#ifdef XOVER
|
|
||||||
{"xover", 0, 0, pop_xover},
|
|
||||||
#endif
|
|
||||||
{NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
xtnd_table *
|
|
||||||
pop_get_subcommand(POP *p)
|
|
||||||
{
|
|
||||||
xtnd_table * s;
|
|
||||||
|
|
||||||
/* Search for the POP command in the command/state table */
|
|
||||||
for (s = subcommands; s->subcommand; s++) {
|
|
||||||
|
|
||||||
if (strcmp(s->subcommand,p->pop_subcommand) == 0) {
|
|
||||||
|
|
||||||
/* Were too few parameters passed to the subcommand? */
|
|
||||||
if ((p->parm_count-1) < s->min_parms) {
|
|
||||||
pop_msg(p,POP_FAILURE,
|
|
||||||
"Too few arguments for the %s %s command.",
|
|
||||||
p->pop_command,p->pop_subcommand);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Were too many parameters passed to the subcommand? */
|
|
||||||
if ((p->parm_count-1) > s->max_parms) {
|
|
||||||
pop_msg(p,POP_FAILURE,
|
|
||||||
"Too many arguments for the %s %s command.",
|
|
||||||
p->pop_command,p->pop_subcommand);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return a pointer to the entry for this subcommand
|
|
||||||
in the XTND command table */
|
|
||||||
return (s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* The client subcommand was not located in the XTND command table */
|
|
||||||
pop_msg(p,POP_FAILURE,
|
|
||||||
"Unknown command: \"%s %s\".",p->pop_command,p->pop_subcommand);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
@@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 1989 Regents of the University of California.
|
|
||||||
* All rights reserved. The Berkeley software License Agreement
|
|
||||||
* specifies the terms and conditions for redistribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <popper.h>
|
|
||||||
RCSID("$Id$");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* xmit: POP XTND function to receive a message from
|
|
||||||
* a client and send it in the mail
|
|
||||||
*/
|
|
||||||
|
|
||||||
int
|
|
||||||
pop_xmit (POP *p)
|
|
||||||
{
|
|
||||||
FILE * tmp; /* File descriptor for
|
|
||||||
temporary file */
|
|
||||||
char buffer[MAXLINELEN]; /* Read buffer */
|
|
||||||
char temp_xmit[MAXDROPLEN]; /* Name of the temporary
|
|
||||||
filedrop */
|
|
||||||
int stat;
|
|
||||||
int id, pid;
|
|
||||||
|
|
||||||
/* Create a temporary file into which to copy the user's message */
|
|
||||||
if ((tmp = fdopen(mkstemp(temp_xmit), "w+")) == NULL)
|
|
||||||
return (pop_msg(p, POP_FAILURE,
|
|
||||||
"Unable to create temporary message file \"%s\": %s",
|
|
||||||
temp_xmit,
|
|
||||||
strerror(errno)));
|
|
||||||
#ifdef DEBUG
|
|
||||||
if(p->debug)
|
|
||||||
pop_log(p, POP_DEBUG,
|
|
||||||
"Creating temporary file for sending a mail message \"%s\"\n",
|
|
||||||
temp_xmit);
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
/* Tell the client to start sending the message */
|
|
||||||
pop_msg(p,POP_SUCCESS,"Start sending the message.");
|
|
||||||
|
|
||||||
/* Receive the message */
|
|
||||||
#ifdef DEBUG
|
|
||||||
if(p->debug)pop_log(p,POP_DEBUG,"Receiving mail message");
|
|
||||||
#endif /* DEBUG */
|
|
||||||
while (fgets(buffer,MAXLINELEN,p->input)){
|
|
||||||
/* Look for initial period */
|
|
||||||
#ifdef DEBUG
|
|
||||||
if(p->debug)pop_log(p,POP_DEBUG,"Receiving: \"%s\"",buffer);
|
|
||||||
#endif /* DEBUG */
|
|
||||||
if (strcmp(buffer,".\r\n") == 0) break;
|
|
||||||
fputs (buffer,tmp);
|
|
||||||
}
|
|
||||||
fclose (tmp);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
if(p->debug)pop_log(p,POP_DEBUG,"Forking for \"%s\"",MAIL_COMMAND);
|
|
||||||
#endif /* DEBUG */
|
|
||||||
/* Send the message */
|
|
||||||
switch (pid = fork()) {
|
|
||||||
case 0:
|
|
||||||
fclose (p->input);
|
|
||||||
fclose (p->output);
|
|
||||||
close(0);
|
|
||||||
if (open(temp_xmit,O_RDONLY,0) < 0)
|
|
||||||
_exit(1);
|
|
||||||
execl (MAIL_COMMAND, "send-mail", "-t", "-oem", (char *)NULL);
|
|
||||||
_exit(1);
|
|
||||||
case -1:
|
|
||||||
#ifdef DEBUG
|
|
||||||
if (!p->debug) unlink (temp_xmit);
|
|
||||||
#endif /* DEBUG */
|
|
||||||
return (pop_msg(p,POP_FAILURE,
|
|
||||||
"Unable to execute \"%s\"",MAIL_COMMAND));
|
|
||||||
default:
|
|
||||||
while((id = wait(&stat)) >=0 && id != pid)
|
|
||||||
;
|
|
||||||
if (!p->debug)
|
|
||||||
unlink (temp_xmit);
|
|
||||||
if (WEXITSTATUS(stat) != 0)
|
|
||||||
return pop_msg(p,POP_FAILURE,"Unable to send message");
|
|
||||||
return pop_msg (p,POP_SUCCESS,"Message sent successfully");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 1989 Regents of the University of California.
|
|
||||||
* All rights reserved. The Berkeley software License Agreement
|
|
||||||
* specifies the terms and conditions for redistribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <popper.h>
|
|
||||||
RCSID("$Id$");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* xtnd: Handle extensions to the POP protocol suite
|
|
||||||
*/
|
|
||||||
|
|
||||||
int
|
|
||||||
pop_xtnd (POP *p)
|
|
||||||
{
|
|
||||||
xtnd_table * x;
|
|
||||||
|
|
||||||
/* Convert the XTND subcommand to lower case */
|
|
||||||
strlwr(p->pop_subcommand);
|
|
||||||
|
|
||||||
/* Search for the subcommand in the XTND command table */
|
|
||||||
if ((x = pop_get_subcommand(p)) == NULL) return(POP_FAILURE);
|
|
||||||
|
|
||||||
/* Call the function associated with this subcommand */
|
|
||||||
if (x->function) return((*x->function)(p));
|
|
||||||
|
|
||||||
/* Otherwise assume NOOP */
|
|
||||||
return (pop_msg(p,POP_SUCCESS,NULL));
|
|
||||||
}
|
|
@@ -288,8 +288,6 @@ int pop_send(POP *p);
|
|||||||
int pop_stat(POP *p);
|
int pop_stat(POP *p);
|
||||||
int pop_updt(POP *p);
|
int pop_updt(POP *p);
|
||||||
int pop_user(POP *p);
|
int pop_user(POP *p);
|
||||||
int pop_xmit(POP *p);
|
|
||||||
int pop_xtnd(POP *p);
|
|
||||||
#ifdef UIDL
|
#ifdef UIDL
|
||||||
int pop_uidl(POP *p);
|
int pop_uidl(POP *p);
|
||||||
#endif
|
#endif
|
||||||
@@ -299,7 +297,6 @@ int pop_xover(POP *p);
|
|||||||
int pop_help(POP *p);
|
int pop_help(POP *p);
|
||||||
state_table *pop_get_command(POP *p, char *mp);
|
state_table *pop_get_command(POP *p, char *mp);
|
||||||
void pop_lower(char *buf);
|
void pop_lower(char *buf);
|
||||||
xtnd_table *pop_get_subcommand(POP *p);
|
|
||||||
|
|
||||||
int pop_log(POP *p, int stat, char *format, ...)
|
int pop_log(POP *p, int stat, char *format, ...)
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
Reference in New Issue
Block a user