}
-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;
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);
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);
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();
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);
/* 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);
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);
execlp(mlmmjsend, mlmmjsend,
"-l", "1",
- "-L", listdir,
+ "-L", list->listdir,
"-F", from,
"-m", queuefilename,
"-T", efromsender, (char *)NULL);
fsync(omitfd);
close(omitfd);
}
- newmoderated(list.listdir, mqueuename,
+ newmoderated(&list, mqueuename,
mlmmjsend, efrom, subject, posteraddr,
modreason);
return EXIT_SUCCESS;