open_subscriber_directory(struct mlmmj_list *list, enum subtype typesub, const char **subdir)
{
int fd;
+ const char *dir;
+
switch (typesub) {
default:
case SUB_NORMAL:
- *subdir = "subscribers.d";
+ dir = "subscribers.d";
break;
case SUB_DIGEST:
- *subdir = "digesters.d";
+ dir = "digesters.d";
break;
case SUB_NOMAIL:
- *subdir = "nomailsubs.d";
+ dir = "nomailsubs.d";
break;
}
- fd = openat(list->fd, *subdir, O_DIRECTORY|O_CLOEXEC);
+ if (subdir != NULL)
+ *subdir = dir;
+ fd = openat(list->fd, dir, O_DIRECTORY|O_CLOEXEC);
if (fd == -1)
- err(EXIT_FAILURE, "Unable to open %s/%s", list->dir, *subdir);
+ err(EXIT_FAILURE, "Unable to open %s/%s", list->dir, dir);
return (fd);
}