From: Baptiste Daroussin Date: Wed, 3 Nov 2021 10:54:27 +0000 (+0100) Subject: delimiter: now parsing delimiter is handled directly withing mlmmj_list X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=296791b52dfc8bf071bd9701a4f3118550d084fa;p=thirdparty%2Fmlmmj.git delimiter: now parsing delimiter is handled directly withing mlmmj_list --- diff --git a/include/getlistdelim.h b/include/getlistdelim.h deleted file mode 100644 index ee5657e1..00000000 --- a/include/getlistdelim.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2005 Joel Aelwyn - * - * $Id$ - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef GETLISTDELIM_H -#define GETLISTDELIM_H - -char *getlistdelim(const char *listdir); - -#endif /* GETLISTDELIM_H */ diff --git a/src/Makefile.am b/src/Makefile.am index 23fb1b65..0a67dcdc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,8 +15,7 @@ mlmmj_send_SOURCES = mlmmj.c mlmmj-send.c mail-functions.c itoa.c chomp.c \ incindexfile.c checkwait_smtpreply.c utils.c \ mylocking.c init_sockfd.c strgen.c random-int.c \ print-version.c log_error.c mygetline.c memory.c \ - controls.c getaddrsfromfd.c readn.c \ - getlistdelim.c + controls.c getaddrsfromfd.c readn.c mlmmj_receive_SOURCES = mlmmj-receive.c random-int.c strgen.c \ print-version.c log_error.c dumpfd2fd.c memory.c \ @@ -29,31 +28,30 @@ mlmmj_process_SOURCES = mlmmj.c mlmmj-process.c find_email_adr.c \ do_all_the_voodoo_here.c mygetline.c gethdrline.c \ log_error.c controls.c dumpfd2fd.c \ subscriberfuncs.c memory.c log_oper.c \ - send_list.c readn.c getlistdelim.c unistr.c + send_list.c readn.c unistr.c mlmmj_sub_SOURCES = mlmmj.c mlmmj-sub.c mylocking.c \ chomp.c random-int.c strgen.c \ subscriberfuncs.c print-version.c \ log_error.c mygetline.c prepstdreply.c memory.c \ - controls.c readn.c getlistdelim.c utils.c \ - unistr.c + controls.c readn.c utils.c unistr.c mlmmj_unsub_SOURCES = mlmmj.c mlmmj-unsub.c mylocking.c \ chomp.c subscriberfuncs.c random-int.c \ strgen.c print-version.c log_error.c mygetline.c \ prepstdreply.c memory.c controls.c readn.c utils.c \ - getlistdelim.c unistr.c + unistr.c mlmmj_bounce_SOURCES = mlmmj.c mlmmj-bounce.c print-version.c log_error.c \ subscriberfuncs.c strgen.c random-int.c \ prepstdreply.c mygetline.c chomp.c \ memory.c find_email_adr.c gethdrline.c readn.c \ - getlistdelim.c unistr.c controls.c utils.c + unistr.c controls.c utils.c mlmmj_maintd_SOURCES = mlmmj.c mlmmj-maintd.c print-version.c log_error.c mygetline.c \ strgen.c random-int.c chomp.c memory.c \ send_digest.c dumpfd2fd.c utils.c \ - mylocking.c log_oper.c readn.c getlistdelim.c \ + mylocking.c log_oper.c readn.c \ prepstdreply.c gethdrline.c unistr.c controls.c mlmmj_list_SOURCES = mlmmj-list.c strgen.c print-version.c memory.c \ diff --git a/src/getlistdelim.c b/src/getlistdelim.c deleted file mode 100644 index 903a73f6..00000000 --- a/src/getlistdelim.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright 2005 Joel Aelwyn - * - * $Id$ - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS+ * IN THE SOFTWARE. - */ - -#include -#include -#include -#include -#include - -#include "mlmmj.h" -#include "getlistdelim.h" -#include "chomp.h" -#include "log_error.h" -#include "mygetline.h" -#include "strgen.h" -#include "memory.h" - -char *getlistdelim(const char *listdir) -{ - char *delimfn, *delimstr; - int delimfd; - - delimfn = concatstr(2, listdir, "/control/delimiter"); - if(-1 != (delimfd = open(delimfn, O_RDONLY))){ - delimstr = mygetline(delimfd); - close(delimfd); - - if(NULL == delimstr){ - log_error(LOG_ARGS, - "FATAL. Could not get list delimiter from %s", - delimfn); - myfree(delimfn); - exit(EXIT_FAILURE); - } - - chomp(delimstr); - - if(0 == strlen(delimstr)){ - log_error(LOG_ARGS, - "FATAL. Zero-length delimiter found from %s", - delimfn); - myfree(delimfn); - exit(EXIT_FAILURE); - } - } else - delimstr = mystrdup(DEFAULT_RECIPDELIM); - - myfree(delimfn); - - return delimstr; -} diff --git a/src/listcontrol.c b/src/listcontrol.c index f5db3768..06eb2f17 100644 --- a/src/listcontrol.c +++ b/src/listcontrol.c @@ -34,7 +34,6 @@ #include "mlmmj.h" #include "listcontrol.h" -#include "getlistdelim.h" #include "strgen.h" #include "prepstdreply.h" #include "send_help.h" diff --git a/src/mlmmj.c b/src/mlmmj.c index a3575e35..f8a036de 100644 --- a/src/mlmmj.c +++ b/src/mlmmj.c @@ -29,7 +29,6 @@ #include "memory.h" #include "strgen.h" #include "mlmmj.h" -#include "getlistdelim.h" #include "controls.h" void @@ -77,7 +76,10 @@ mlmmj_list_open(struct mlmmj_list *list) mlmmj_list_close(list); return (false); } - list->delim = getlistdelim(list->dir); + list->delim = ctrlvalue(list, "delimiter"); + if (list->delim == NULL) + list->delim = mystrdup(DEFAULT_RECIPDELIM); + if (!splitlistaddr(list->addr, &list->name, &list->fqdn)) { warnx("%s: is not a valid mailing list address, " "missing '@'", list->addr); diff --git a/src/prepstdreply.c b/src/prepstdreply.c index 4639814d..a020eb66 100644 --- a/src/prepstdreply.c +++ b/src/prepstdreply.c @@ -41,7 +41,6 @@ #include "wrappers.h" #include "memory.h" #include "mlmmj.h" -#include "getlistdelim.h" #include "unistr.h" diff --git a/tests/Makefile.am b/tests/Makefile.am index 24d0fcb8..df7d531f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -6,7 +6,7 @@ mlmmj_SOURCES = mlmmj.c $(top_srcdir)/src/prepstdreply.c $(top_srcdir)/include/p $(top_srcdir)/src/memory.c $(top_srcdir)/src/controls.c $(top_srcdir)/src/utils.c \ $(top_srcdir)/src/strgen.c $(top_srcdir)/src/random-int.c $(top_srcdir)/src/readn.c \ $(top_srcdir)/src/log_error.c $(top_srcdir)/src/chomp.c $(top_srcdir)/src/mygetline.c $(top_srcdir)/src/unistr.c \ - $(top_srcdir)/src/mlmmj.c $(top_srcdir)/src/getlistdelim.c + $(top_srcdir)/src/mlmmj.c mlmmj_CFLAGS = @ATF_CFLAGS@ -g -Wall -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"@textlibdir@"' -I$(top_srcdir)/include mlmmj_LDADD = @ATF_LIBS@ diff --git a/tests/mlmmj.c b/tests/mlmmj.c index 7797ebb8..43b68214 100644 --- a/tests/mlmmj.c +++ b/tests/mlmmj.c @@ -153,6 +153,15 @@ ATF_TC_BODY(mlmmj_list, tc) mlmmj_list_init(&list); list.dir = "list"; ATF_CHECK(mlmmj_list_open(&list) == true); + ATF_CHECK_STREQ_MSG(list.delim, "+", "Invalid delimiter"); + + fp = fopen("list/control/delimiter", "w"); + fputs("#bla#", fp); + fclose(fp); + mlmmj_list_init(&list); + list.dir = "list"; + ATF_CHECK(mlmmj_list_open(&list) == true); + ATF_CHECK_STREQ_MSG(list.delim, "#bla#", "Invalid delimiter"); fclose(f); }