Mercurial > hg > mlmmj
changeset 67:b6828d24be7e
This is new function to quickly stat a control of the list. Example:
int moderatedlist = statctrl(listdir, "moderated);
Then it'll return true/false according to whether a file
listdir/control/moderated exists.
Add statctrl call to listcontrol for closedlist. The other functions I've
touched are only cleaning a bit.
author | mmj |
---|---|
date | Fri, 30 Apr 2004 18:58:08 +1000 |
parents | d87cfb668e46 |
children | 11de6a95c9a8 |
files | src/incindexfile.c src/listcontrol.c src/mlmmj-make-ml.sh src/mlmmj-send.c src/statctrl.c |
diffstat | 5 files changed, 48 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/incindexfile.c Fri Apr 30 18:57:33 2004 +1000 +++ b/src/incindexfile.c Fri Apr 30 18:58:08 2004 +1000 @@ -34,14 +34,11 @@ len = strlen(listdir) + strlen("/index") + 1; indexfilename = malloc(len); snprintf(indexfilename, len, "%s%s", listdir, "/index"); -#ifdef MLMMJ_DEBUG - fprintf(stderr, "indexfilename = [%s]\n", indexfilename); -#endif fd = open(indexfilename, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); if(fd == -1) { log_error(LOG_ARGS, "Error opening index file"); - exit(EXIT_FAILURE); + return -1; } lock = myexcllock(fd); @@ -49,7 +46,7 @@ if(lock) { log_error(LOG_ARGS, "Error locking index file"); close(fd); - exit(EXIT_FAILURE); + return -1; } read(fd, intbuf, INTBUF_SIZE);
--- a/src/listcontrol.c Fri Apr 30 18:57:33 2004 +1000 +++ b/src/listcontrol.c Fri Apr 30 18:58:08 2004 +1000 @@ -11,6 +11,8 @@ #include <string.h> #include <strings.h> #include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> #include "mlmmj.h" #include "header_token.h" @@ -19,6 +21,7 @@ #include "strgen.h" #include "send_help.h" #include "log_error.h" +#include "statctrl.h" int listcontrol(const char *mailfilename, const char *listdir, const char *controladdr, const char *mlmmjsub, @@ -30,12 +33,17 @@ char *controlstr, *conffilename; FILE *mailfile, *tempfile; struct email_container fromemails; + struct stat stbuf; size_t len; + int closedlist; if((mailfile = fopen(mailfilename, "r")) == NULL) { log_error(LOG_ARGS, "listcontrol, could not open mail"); exit(EXIT_FAILURE); } + /* Closed list only handling bounces? TODO: part of configfile instead?*/ + closedlist = statctrl(listdir, "closedlist"); + recipdelimsign = index(controladdr, RECIPDELIM); atsign = index(controladdr, '@'); len = atsign - recipdelimsign;
--- a/src/mlmmj-make-ml.sh Fri Apr 30 18:57:33 2004 +1000 +++ b/src/mlmmj-make-ml.sh Fri Apr 30 18:58:08 2004 +1000 @@ -60,7 +60,8 @@ mkdir -p $LISTDIR -for DIR in incoming queue archive text subconf unsubconf bounce +for DIR in incoming queue archive text subconf unsubconf bounce control \ + moderation moderation/queue do mkdir "$LISTDIR"/"$DIR" done
--- a/src/mlmmj-send.c Fri Apr 30 18:57:33 2004 +1000 +++ b/src/mlmmj-send.c Fri Apr 30 18:58:08 2004 +1000 @@ -163,18 +163,11 @@ { size_t len = 0; int sockfd = 0, opt, mindex, retval=0; - FILE *subfile = 0, *mailfile = 0; - char *mailfilename = 0; - char *subfilename = 0; - char *listdir = 0; - char listadr[READ_BUFSIZE]; - char *replyto = 0; - char *bounce_adr = 0; - char *to_addr = 0; - char *archivefilename = 0; - char buf[READ_BUFSIZE]; - char *bufres; - char *relayhost = 0; + FILE *subfile = NULL, *mailfile = NULL; + char listadr[READ_BUFSIZE], buf[READ_BUFSIZE]; + char *mailfilename = NULL, *subfilename = NULL, *listdir = NULL; + char *replyto = NULL, *bounce_adr = NULL, *to_addr = NULL; + char *bufres, *relayhost = NULL, *archivefilename = NULL; int deletewhensent = 1; log_set_name(argv[0]); @@ -253,7 +246,8 @@ mindex = incindexfile((const char *)listdir, 1); len = strlen(listdir) + 9 + 20; archivefilename = malloc(len); - snprintf(archivefilename, len, "%s/archive/%d", listdir, mindex); + snprintf(archivefilename, len, "%s/archive/%d", listdir, + mindex); } if((retval = checkwait_smtpreply(sockfd, MLMMJ_CONNECT)) != 0) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/statctrl.c Fri Apr 30 18:58:08 2004 +1000 @@ -0,0 +1,28 @@ +/* Copyright (C) 2004 Mads Martin Joergensen <mmj at mmj.dk> + * + * $Id$ + * + * This file is redistributable under version 2 of the GNU General + * Public License as described at http://www.gnu.org/licenses/gpl.txt + */ + +#include <sys/types.h> +#include <sys/stat.h> + +#include "strgen.h" +#include "statctrl.h" + +int statctrl(const char *listdir, const char *ctrlstr) +{ + char *filename = concatstr(3, listdir, "/control/", ctrlstr); + struct stat st; + int res; + + res = stat(filename, &st); + free(filename); + + if(res == 0) + return 1; + + return 0; +}