Mercurial > hg > mlmmj
changeset 184:86d7d42fe996
Assorted bugfixes.
Addition of lots of unlink() in listcontrol.c
Make random-str return an even more random str, and hex format it
since it looks better :)
author | mmj |
---|---|
date | Mon, 07 Jun 2004 07:08:09 +1000 |
parents | 2ec251b9a2f8 |
children | f92879537344 |
files | src/do_all_the_voodo_here.c src/listcontrol.c src/mlmmj-process.c src/mlmmj-send.c src/send_help.c src/strgen.c |
diffstat | 6 files changed, 34 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/src/do_all_the_voodo_here.c Mon Jun 07 04:29:13 2004 +1000 +++ b/src/do_all_the_voodo_here.c Mon Jun 07 07:08:09 2004 +1000 @@ -68,7 +68,7 @@ while((hdrline = gethdrline(infd))) { /* Done with headers? Then add extra if wanted*/ if((strlen(hdrline) == 1) && (hdrline[0] == '\n')){ - if(hdrfd) { + if(hdrfd >= 0) { if(dumpfd2fd(hdrfd, outfd) < 0) { log_error(LOG_ARGS, "Could not" "add extra headers"); @@ -119,7 +119,7 @@ } /* No more, lets add the footer if one */ - if(footfd) + if(footfd >= 0) if(dumpfd2fd(footfd, outfd) < 0) { log_error(LOG_ARGS, "Error when adding footer"); return -1;
--- a/src/listcontrol.c Mon Jun 07 04:29:13 2004 +1000 +++ b/src/listcontrol.c Mon Jun 07 07:08:09 2004 +1000 @@ -23,6 +23,7 @@ #include "log_error.h" #include "statctrl.h" #include "mygetline.h" +#include "chomp.h" enum ctrl_e { CTRL_SUBSCRIBE, @@ -121,6 +122,7 @@ switch (ctrl) { case CTRL_SUBSCRIBE: + unlink(mailname); if (closedlist) exit(EXIT_SUCCESS); if(strchr(fromemails->emaillist[0], '@')) { execlp(mlmmjsub, mlmmjsub, @@ -134,14 +136,15 @@ break; case CTRL_CONFSUB: + unlink(mailname); if (closedlist) exit(EXIT_SUCCESS); conffilename = concatstr(3, listdir, "/subconf/", param); free(param); if((tmpfd = open(conffilename, O_RDONLY)) > 0) { tmpstr = mygetline(tmpfd); + chomp(tmpstr); close(tmpfd); - if(strncasecmp(tmpstr, fromemails->emaillist[0], - strlen(tmpstr)) == 0) { + if(strcasecmp(tmpstr, fromemails->emaillist[0]) == 0) { unlink(conffilename); execlp(mlmmjsub, mlmmjsub, "-L", listdir, @@ -160,6 +163,7 @@ break; case CTRL_UNSUBSCRIBE: + unlink(mailname); if (closedlist) exit(EXIT_SUCCESS); if(strchr(fromemails->emaillist[0], '@')) { execlp(mlmmjunsub, mlmmjunsub, @@ -174,14 +178,15 @@ break; case CTRL_CONFUNSUB: + unlink(mailname); if (closedlist) exit(EXIT_SUCCESS); conffilename = concatstr(3, listdir, "/unsubconf/", param); free(param); if((tmpfd = open(conffilename, O_RDONLY))) { tmpstr = mygetline(tmpfd); close(tmpfd); - if(strncasecmp(tmpstr, fromemails->emaillist[0], - strlen(tmpstr)) == 0) { + chomp(tmpstr); + if(strcasecmp(tmpstr, fromemails->emaillist[0]) == 0) { unlink(conffilename); execlp(mlmmjunsub, mlmmjunsub, "-L", listdir, @@ -213,6 +218,7 @@ case CTRL_MODERATE: /* TODO Add accept/reject parameter to moderate */ + unlink(mailname); moderatefilename = concatstr(3, listdir, "/moderation/", param); free(param); if(stat(moderatefilename, &stbuf) < 0) { @@ -228,7 +234,7 @@ break; case CTRL_HELP: - printf("Help wanted!\n"); + unlink(mailname); if(strchr(fromemails->emaillist[0], '@')) send_help(listdir, fromemails->emaillist[0], mlmmjsend); @@ -236,5 +242,7 @@ } + unlink(mailname); + return 0; }
--- a/src/mlmmj-process.c Mon Jun 07 04:29:13 2004 +1000 +++ b/src/mlmmj-process.c Mon Jun 07 07:08:09 2004 +1000 @@ -51,18 +51,8 @@ exit(EXIT_FAILURE); } free(moderatorfilename); - queuefilename = concatstr(3, listdir, "/queue/", randomstr); - if((queuefd = open(queuefilename, O_WRONLY|O_CREAT|O_EXCL, - S_IRUSR|S_IWUSR)) < 0) { - log_error(LOG_ARGS, "Could not open '%s'", queuefilename); - free(queuefilename); - free(randomstr); - exit(EXIT_FAILURE); - } - free(randomstr); - - moderatorsfilename = concatstr(2, listdir, "/moderators"); + moderatorsfilename = concatstr(2, listdir, "/control/moderators"); if((moderatorsfd = open(moderatorsfilename, O_RDONLY)) < 0) { log_error(LOG_ARGS, "Could not open '%s'", moderatorsfilename); free(queuefilename); @@ -80,6 +70,17 @@ exit(EXIT_FAILURE); } + queuefilename = concatstr(3, listdir, "/queue/", randomstr); + + if((queuefd = open(queuefilename, O_WRONLY|O_CREAT|O_EXCL, + S_IRUSR|S_IWUSR)) < 0) { + log_error(LOG_ARGS, "Could not open '%s'", queuefilename); + free(queuefilename); + free(randomstr); + exit(EXIT_FAILURE); + } + free(randomstr); + from = concatstr(3, listname, "+owner@", fqdn); s1 = concatstr(15, "From: ", from, "\nTo: ", listname, "-moderators@", fqdn, "\nReply-To: ", listname, "+moderate-",
--- a/src/mlmmj-send.c Mon Jun 07 04:29:13 2004 +1000 +++ b/src/mlmmj-send.c Mon Jun 07 07:08:09 2004 +1000 @@ -382,6 +382,7 @@ " -l: List control variable:\n", prg); printf(" '1' means 'send a single mail'\n" " '2' means 'mail to moderators'\n" + " '3' means 'resend failed list mail'\n" " -L: Full path to list directory\n" " -m: Full path to mail file\n" " -r: Relayhost (defaults to localhost)\n" @@ -502,7 +503,7 @@ case '1': /* A single mail is to be sent, do nothing */ break; case '2': /* Moderators */ - subfilename = concatstr(2, listdir, "/moderators"); + subfilename = concatstr(2, listdir, "/control/moderators"); if((subfd = open(subfilename, O_RDONLY)) < 0) { log_error(LOG_ARGS, "Could not open '%s':", subfilename);
--- a/src/send_help.c Mon Jun 07 04:29:13 2004 +1000 +++ b/src/send_help.c Mon Jun 07 07:08:09 2004 +1000 @@ -62,8 +62,8 @@ fromaddr = concatstr(3, listname, "+bounces-help@", listfqdn); - s1 = concatstr(11, "From: ", listname, "+owner@", listfqdn, "\n" - "To: ", emailaddr, "\n", "Subject: Help for ", + s1 = concatstr(9, "From: ", listname, "+owner@", listfqdn, + "\nTo: ", emailaddr, "\nSubject: Help for ", listaddr, "\n\n"); if(writen(queuefd, s1, strlen(s1)) < 0) {
--- a/src/strgen.c Mon Jun 07 04:29:13 2004 +1000 +++ b/src/strgen.c Mon Jun 07 07:08:09 2004 +1000 @@ -19,10 +19,10 @@ char *random_str() { - size_t len = 16; + size_t len = 32; char *dest = malloc(len); - snprintf(dest, len, "%d", random_int()); + snprintf(dest, len, "%X%X", random_int(), random_int()); return dest; }