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;
+}