#include "str.h"
#include "istream.h"
#include "ostream.h"
+#include "settings.h"
#include "fs-sis-common.h"
+struct fs_sis_queue_settings {
+ pool_t pool;
+ const char *fs_sis_queue_path;
+};
+
struct sis_queue_fs {
struct fs fs;
char *queue_dir;
#define SISQUEUE_FS(ptr) container_of((ptr), struct sis_queue_fs, fs)
#define SISQUEUE_FILE(ptr) container_of((ptr), struct sis_queue_fs_file, file)
+#undef DEF
+#define DEF(type, name) \
+ SETTING_DEFINE_STRUCT_##type(#name, name, struct fs_sis_queue_settings)
+static const struct setting_define fs_sis_queue_setting_defines[] = {
+ DEF(STR, fs_sis_queue_path),
+
+ SETTING_DEFINE_LIST_END
+};
+static const struct fs_sis_queue_settings fs_sis_queue_default_settings = {
+ .fs_sis_queue_path = "",
+};
+
+const struct setting_parser_info fs_sis_queue_setting_parser_info = {
+ .name = "fs_sis_queue",
+
+ .defines = fs_sis_queue_setting_defines,
+ .defaults = &fs_sis_queue_default_settings,
+
+ .struct_size = sizeof(struct fs_sis_queue_settings),
+ .pool_offset1 = 1 + offsetof(struct fs_sis_queue_settings, pool),
+};
+
static struct fs *fs_sis_queue_alloc(void)
{
struct sis_queue_fs *fs;
}
static int
-fs_sis_queue_init(struct fs *_fs, const char *args,
- const struct fs_parameters *params, const char **error_r)
+fs_sis_queue_init(struct fs *_fs, const struct fs_parameters *params,
+ const char **error_r)
+{
+ struct sis_queue_fs *fs = SISQUEUE_FS(_fs);
+ const struct fs_sis_queue_settings *set;
+
+ if (settings_get(_fs->event, &fs_sis_queue_setting_parser_info, 0,
+ &set, error_r) < 0)
+ return -1;
+ fs->queue_dir = i_strdup(set->fs_sis_queue_path);
+ settings_free(set);
+
+ return fs_init_parent(_fs, params, error_r);
+}
+
+static int
+fs_sis_queue_legacy_init(struct fs *_fs, const char *args,
+ const struct fs_parameters *params, const char **error_r)
{
struct sis_queue_fs *fs = SISQUEUE_FS(_fs);
const char *p, *parent_name, *parent_args;
.name = "sis-queue",
.v = {
.alloc = fs_sis_queue_alloc,
- .legacy_init = fs_sis_queue_init,
+ .init = fs_sis_queue_init,
+ .legacy_init = fs_sis_queue_legacy_init,
.deinit = NULL,
.free = fs_sis_queue_free,
.get_properties = fs_wrapper_get_properties,