Mercurial > hg > mlmmj
changeset 121:bd18a247ae4a
Listcontrol shouldn't open the mailfile to retrieve info we've already
retrieved in mlmmj-process. Instead we parse it on to listcontrol from
mlmmj-process.
author | mmj |
---|---|
date | Sat, 29 May 2004 23:39:39 +1000 |
parents | 154b486fefd5 |
children | 213b1e372027 |
files | include/listcontrol.h src/listcontrol.c |
diffstat | 2 files changed, 20 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/include/listcontrol.h Sat May 29 23:36:19 2004 +1000 +++ b/include/listcontrol.h Sat May 29 23:39:39 2004 +1000 @@ -9,7 +9,9 @@ #ifndef LISTCONTROL_H #define LISTCONTROL_H -int listcontrol(const char *mailfilename, const char *listdir, +#include "find_email_adr.h" + +int listcontrol(struct email_container *fromemails, const char *listdir, const char *controladdr, const char *mlmmjsub, const char *mlmmjunsub, const char *mlmmjsend, const char *mlmmjbounce);
--- a/src/listcontrol.c Sat May 29 23:36:19 2004 +1000 +++ b/src/listcontrol.c Sat May 29 23:39:39 2004 +1000 @@ -53,27 +53,21 @@ }; -int listcontrol(const char *mailfilename, const char *listdir, +int listcontrol(struct email_container *fromemails, const char *listdir, const char *controladdr, const char *mlmmjsub, const char *mlmmjunsub, const char *mlmmjsend, const char *mlmmjbounce) { char tmpstr[READ_BUFSIZE]; - char *atsign, *recipdelimsign, *tokenvalue, *bouncenr; + char *atsign, *recipdelimsign, *bouncenr; char *controlstr, *param, *conffilename, *moderatefilename; - FILE *mailfile, *tempfile; - struct email_container fromemails; + FILE *tempfile; size_t len; struct stat stbuf; int closedlist; size_t cmdlen; unsigned int ctrl; - if((mailfile = fopen(mailfilename, "r")) == NULL) { - log_error(LOG_ARGS, "listcontrol, could not open mail"); - exit(EXIT_FAILURE); - } - /* A closed list doesn't allow subscribtion and unsubscription */ closedlist = statctrl(listdir, "closedlist"); @@ -87,14 +81,10 @@ MY_ASSERT(controlstr); snprintf(controlstr, len, "%s", recipdelimsign + 1); - tokenvalue = find_header_file(mailfile, tmpstr, "From:"); - fclose(mailfile); - unlink(mailfilename); - - find_email_adr(tmpstr, &fromemails); - #if 0 log_error(LOG_ARGS, "controlstr = [%s]\n", controlstr); + log_error(LOG_ARGS, "fromemails->emaillist[0] = [%s]\n", + fromemails->emaillist[0]); #endif for (ctrl=0; ctrl<CTRL_END; ctrl++) { cmdlen = strlen(ctrl_commands[ctrl].command); @@ -133,10 +123,10 @@ case CTRL_SUBSCRIBE: if (closedlist) exit(EXIT_SUCCESS); - if(index(fromemails.emaillist[0], '@')) { + if(strchr(fromemails->emaillist[0], '@')) { execlp(mlmmjsub, mlmmjsub, "-L", listdir, - "-a", fromemails.emaillist[0], + "-a", fromemails->emaillist[0], "-C", 0); log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsub); exit(EXIT_FAILURE); @@ -151,14 +141,15 @@ if((tempfile = fopen(conffilename, "r"))) { fgets(tmpstr, READ_BUFSIZE, tempfile); fclose(tempfile); - if(strncasecmp(tmpstr, fromemails.emaillist[0], + if(strncasecmp(tmpstr, fromemails->emaillist[0], strlen(tmpstr)) == 0) { unlink(conffilename); execlp(mlmmjsub, mlmmjsub, "-L", listdir, "-a", tmpstr, "-c", 0); - log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsub); + log_error(LOG_ARGS, "execlp() of '%s' failed", + mlmmjsub); exit(EXIT_FAILURE); } else { /* Not proper confirm */ @@ -170,12 +161,13 @@ case CTRL_UNSUBSCRIBE: if (closedlist) exit(EXIT_SUCCESS); - if(index(fromemails.emaillist[0], '@')) { + if(strchr(fromemails->emaillist[0], '@')) { execlp(mlmmjunsub, mlmmjunsub, "-L", listdir, - "-a", fromemails.emaillist[0], + "-a", fromemails->emaillist[0], "-C", 0); - log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjunsub); + log_error(LOG_ARGS, "execlp() of '%s' failed", + mlmmjunsub); exit(EXIT_FAILURE); } else /* Not a valid From: address, so we silently ignore */ exit(EXIT_SUCCESS); @@ -188,7 +180,7 @@ if((tempfile = fopen(conffilename, "r"))) { fgets(tmpstr, READ_BUFSIZE, tempfile); fclose(tempfile); - if(strncasecmp(tmpstr, fromemails.emaillist[0], + if(strncasecmp(tmpstr, fromemails->emaillist[0], strlen(tmpstr)) == 0) { unlink(conffilename); execlp(mlmmjunsub, mlmmjunsub, @@ -236,8 +228,8 @@ case CTRL_HELP: printf("Help wanted!\n"); - if(index(fromemails.emaillist[0], '@')) - send_help(listdir, fromemails.emaillist[0], + if(strchr(fromemails->emaillist[0], '@')) + send_help(listdir, fromemails->emaillist[0], mlmmjsend); break;