};
-static int is_moderator(const char *listdir, const char *address,
+static int is_moderator(struct mlmmj_list *list, const char *address,
char **moderators) {
- char *buf, *tmp, *moderatorsfilename;
+ char *buf, *tmp;
int moderatorsfd, foundaddr = 0;
- moderatorsfilename = concatstr(2, listdir, "/control/moderators");
- if((moderatorsfd = open(moderatorsfilename, O_RDONLY)) < 0) {
- log_error(LOG_ARGS, "Could not open '%s'", moderatorsfilename);
- free(moderatorsfilename);
+ if((moderatorsfd = openat(list->fd, "control/moderators", O_RDONLY)) < 0) {
+ log_error(LOG_ARGS, "Could not open '%s/control/moderators'", list->dir);
exit(EXIT_FAILURE);
}
- free(moderatorsfilename);
while((buf = mygetline(moderatorsfd))) {
chomp(buf);
if(statctrl(list, "ifmodsendonlymodmoderate"))
efromismod = efromsender;
- if(!is_moderator(list->dir, efromismod, &moderators))
+ if(!is_moderator(list, efromismod, &moderators))
efromismod = NULL;
if(efromismod) mls = init_memory_lines(efromismod);
foundaddr = (is_subbed(&list, posteraddr, 0) !=
SUB_NONE);
} else if (modonlypost) {
- foundaddr = is_moderator(list.dir, posteraddr, NULL);
+ foundaddr = is_moderator(&list, posteraddr, NULL);
}
if(!foundaddr) {
if(modnonsubposts) {