]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
mlmmj-process: use a bit more the struct mlmmj_list
authorBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 27 Oct 2021 15:03:09 +0000 (17:03 +0200)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 27 Oct 2021 15:03:09 +0000 (17:03 +0200)
src/mlmmj-process.c

index 7d5a651811999535912fe2f92b7ac5bd138ca19f..a8ea06bac16fa825ad75ab0602650527972a085d 100644 (file)
@@ -126,13 +126,13 @@ static int is_moderator(const char *listdir, const char *address,
 }
 
 
-static void newmoderated(const char *listdir, const char *mailfilename,
+static void newmoderated(struct mlmmj_list *list, const char *mailfilename,
                  const char *mlmmjsend, const char *efromsender,
                  const char *subject, const char *posteraddr,
                  enum modreason modreason)
 {
-       char *from, *listfqdn, *listname, *moderators = NULL;
-       char *replyto, *listaddr = getlistaddr(listdir), *listdelim;
+       char *from, *moderators = NULL;
+       char *replyto;
        text *txt;
        memory_lines_state *mls;
        char *queuefilename = NULL;
@@ -144,13 +144,10 @@ static void newmoderated(const char *listdir, const char *mailfilename,
        printf("mailfilename = [%s], mailbasename = [%s]\n", mailfilename,
                                                             mailbasename);
 #endif
-       listfqdn = genlistfqdn(listaddr);
-       listname = genlistname(listaddr);
-
-       if(statctrl(listdir, "ifmodsendonlymodmoderate"))
+       if(statctrl(list->listdir, "ifmodsendonlymodmoderate"))
                efromismod = efromsender;
 
-       if(!is_moderator(listdir, efromismod, &moderators))
+       if(!is_moderator(list->listdir, efromismod, &moderators))
                efromismod = NULL;
 
        if(efromismod) mls = init_memory_lines(efromismod);
@@ -158,20 +155,15 @@ static void newmoderated(const char *listdir, const char *mailfilename,
 
        myfree(moderators);
 
-       listdelim = getlistdelim(listdir);
-       replyto = concatstr(6, listname, listdelim, "release-", mailbasename,
-                           "@", listfqdn);
-       reject = concatstr(6, listname, listdelim, "reject-", mailbasename,
-                           "@", listfqdn);
-
-       from = concatstr(4, listname, listdelim, "owner@", listfqdn);
-       to = concatstr(3, listname, "-moderators@", listfqdn); /* FIXME JFA: Should this be converted? Why, why not? */
+       replyto = concatstr(6, list->listname, list->listdelim, "release-", mailbasename,
+                           "@", list->listfqdn);
+       reject = concatstr(6, list->listname, list->listdelim, "reject-", mailbasename,
+                           "@", list->listfqdn);
 
-       myfree(listdelim);
-       myfree(listname);
-       myfree(listfqdn);
+       from = concatstr(4, list->listname, list->listdelim, "owner@", list->listfqdn);
+       to = concatstr(3, list->listname, "-moderators@", list->listfqdn); /* FIXME JFA: Should this be converted? Why, why not? */
 
-       txt = open_text(listdir, "moderate", "post",
+       txt = open_text(list->listdir, "moderate", "post",
                        modreason_strs[modreason], NULL, "moderation");
        MY_ASSERT(txt);
        register_unformatted(txt, "subject", subject);
@@ -183,13 +175,13 @@ static void newmoderated(const char *listdir, const char *mailfilename,
        register_formatted(txt, "moderators",
                        rewind_memory_lines, get_memory_line, mls);
        register_originalmail(txt, mailfilename);
-       queuefilename = prepstdreply(txt, listdir, "$listowner$", to, replyto);
+       queuefilename = prepstdreply(txt, list->listdir, "$listowner$", to, replyto);
        MY_ASSERT(queuefilename);
        close_text(txt);
 
        /* we might need to exec more than one mlmmj-send */
        
-       notifymod = !efromismod && statctrl(listdir,"notifymod");
+       notifymod = !efromismod && statctrl(list->listdir,"notifymod");
        
        if (notifymod) {
                childpid = fork();
@@ -210,14 +202,14 @@ static void newmoderated(const char *listdir, const char *mailfilename,
                if(efromismod)
                        execlp(mlmmjsend, mlmmjsend,
                                        "-l", "1",
-                                       "-L", listdir,
+                                       "-L", list->listdir,
                                        "-F", from,
                                        "-m", queuefilename,
                                        "-T", efromsender, (char *)NULL);
                else
                        execlp(mlmmjsend, mlmmjsend,
                                        "-l", "2",
-                                       "-L", listdir,
+                                       "-L", list->listdir,
                                        "-F", from,
                                        "-m", queuefilename, (char *)NULL);
                log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
@@ -228,7 +220,7 @@ static void newmoderated(const char *listdir, const char *mailfilename,
 
        /* send mail to poster that the list is moderated */
 
-       txt = open_text(listdir, "wait", "post",
+       txt = open_text(list->listdir, "wait", "post",
                        modreason_strs[modreason], NULL, "moderation-poster");
        MY_ASSERT(txt);
        register_unformatted(txt, "subject", subject);
@@ -237,7 +229,7 @@ static void newmoderated(const char *listdir, const char *mailfilename,
        register_formatted(txt, "moderators",
                        rewind_memory_lines, get_memory_line, mls);
        register_originalmail(txt, mailfilename);
-       queuefilename = prepstdreply(txt, listdir,
+       queuefilename = prepstdreply(txt, list->listdir,
                        "$listowner$", efromsender, NULL);
        MY_ASSERT(queuefilename);
        close_text(txt);
@@ -246,7 +238,7 @@ static void newmoderated(const char *listdir, const char *mailfilename,
 
        execlp(mlmmjsend, mlmmjsend,
                        "-l", "1",
-                       "-L", listdir,
+                       "-L", list->listdir,
                        "-F", from,
                        "-m", queuefilename,
                        "-T", efromsender, (char *)NULL);
@@ -1052,7 +1044,7 @@ int main(int argc, char **argv)
                        fsync(omitfd);
                        close(omitfd);
                }
-               newmoderated(list.listdir, mqueuename,
+               newmoderated(&list, mqueuename,
                                mlmmjsend, efrom, subject, posteraddr,
                                modreason);
                return EXIT_SUCCESS;