From: mmj Date: Thu, 17 Jun 2004 19:00:42 +0000 (+1000) Subject: Implement control/delheaders in where one can specify all the headers X-Git-Tag: RELEASE_1_0_0~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07a3f2c1cd34bc8c6e2e4970dac6cdd93b6cf37a;p=thirdparty%2Fmlmmj.git Implement control/delheaders in where one can specify all the headers to delete in incoming mail to the list. --- diff --git a/src/Makefile.am b/src/Makefile.am index 75c43b27..9323294c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ diff --git a/src/mlmmj-process.c b/src/mlmmj-process.c index 0166e6c8..d4ea8d92 100644 --- a/src/mlmmj-process.c +++ b/src/mlmmj-process.c @@ -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);