]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
Implement control/delheaders in where one can specify all the headers
authormmj <none@none>
Thu, 17 Jun 2004 19:00:42 +0000 (05:00 +1000)
committermmj <none@none>
Thu, 17 Jun 2004 19:00:42 +0000 (05:00 +1000)
to delete in incoming mail to the list.

src/Makefile.am
src/mlmmj-process.c

index 75c43b27ef4030855fae335508d92cdcb840ae09..9323294ce0cae641d3c94e59bf1b3c063fc8f65d 100644 (file)
@@ -26,7 +26,7 @@ mlmmj_process_SOURCES = mlmmj-process.c writen.c find_email_adr.c \
                        print-version.c send_help.c prepstdreply.c \
                        do_all_the_voodo_here.c mygetline.c gethdrline.c \
                        log_error.c statctrl.c ctrlvalue.c dumpfd2fd.c \
-                       subscriberfuncs.c
+                       subscriberfuncs.c ctrlvalues.c
 
 mlmmj_sub_SOURCES = mlmmj-sub.c writen.c mylocking.c \
                        getlistaddr.c chomp.c random-int.c strgen.c \
index 0166e6c8bd1a1e3c67cc30b084ee22e016c3d2c6..d4ea8d92bd27e20d0d51ecef6b541e06976f0a21 100644 (file)
@@ -43,6 +43,7 @@
 #include "mygetline.h"
 #include "statctrl.h"
 #include "ctrlvalue.h"
+#include "ctrlvalues.h"
 #include "getlistaddr.h"
 #include "prepstdreply.h"
 #include "subscriberfuncs.h"
@@ -195,7 +196,7 @@ int main(int argc, char **argv)
        struct email_container toemails = { 0, NULL };
        struct email_container ccemails = { 0, NULL };
        struct email_container efromemails = { 0, NULL };
-       const char *badheaders[] = { "From ", "Return-Path:", NULL };
+       struct strlist *delheaders;
        struct mailhdr readhdrs[] = {
                { "From:", 0, NULL },
                { "To:", 0, NULL },
@@ -273,15 +274,34 @@ int main(int argc, char **argv)
        footerfilename = concatstr(2, listdir, "/control/footer");
        footfd = open(footerfilename, O_RDONLY);
        free(footerfilename);
+
+       delheaders = ctrlvalues(listdir, "delheaders");
+       if(delheaders == NULL) {
+               delheaders = malloc(sizeof(struct strlist));
+               delheaders->count = 0;
+               delheaders->strs = NULL;
+       }
+
+       delheaders->strs = realloc(delheaders->strs,
+                       (delheaders->count+3) * sizeof(char *));
+       delheaders->strs[delheaders->count++] = strdup("From ");
+       delheaders->strs[delheaders->count++] = strdup("Return-Path:");
+       delheaders->strs[delheaders->count++] = NULL;
        
        subjectprefix = ctrlvalue(listdir, "prefix");   
        
        if(do_all_the_voodo_here(rawmailfd, donemailfd, hdrfd, footfd,
-                               badheaders, readhdrs, subjectprefix) < 0) {
+                               (const char**)delheaders->strs, readhdrs,
+                               subjectprefix) < 0) {
                log_error(LOG_ARGS, "Error in do_all_the_voodo_here");
                exit(EXIT_FAILURE);
        }
 
+       for(i = 0; i < delheaders->count; i++)
+               free(delheaders->strs[i]);
+       free(delheaders->strs);
+       free(delheaders);
+
        close(rawmailfd);
        close(donemailfd);