From 5dad5d7f25d8e37f670ef6e5effa0ddcb4ea2924 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sun, 20 Oct 2024 01:01:55 +0200
Subject: [PATCH] lib-sieve: sieve-storage - Add event parameter to
 sieve_storage_create()

---
 src/lib-sieve/plugins/include/ext-include-common.c |  3 ++-
 src/lib-sieve/sieve-script.c                       |  2 +-
 src/lib-sieve/sieve-storage.c                      | 12 ++++++++----
 src/lib-sieve/sieve-storage.h                      |  3 ++-
 src/plugins/imap-filter-sieve/imap-filter-sieve.c  |  2 +-
 5 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c
index 935285851..59e61825e 100644
--- a/src/lib-sieve/plugins/include/ext-include-common.c
+++ b/src/lib-sieve/plugins/include/ext-include-common.c
@@ -163,7 +163,8 @@ ext_include_open_script_global(struct sieve_instance *svinst,
 		return -1;
 	}
 	if (extctx->global_storage == NULL &&
-	    sieve_storage_create(svinst, extctx->global_location, 0,
+	    sieve_storage_create(svinst, svinst->event,
+				 extctx->global_location, 0,
 				 &extctx->global_storage, error_code_r) < 0)
 		return -1;
 
diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 8e4fe78b2..445f848e1 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -130,7 +130,7 @@ int sieve_script_create(struct sieve_instance *svinst,
 	*script_r = NULL;
 	sieve_error_args_init(&error_code_r, NULL);
 
-	if (sieve_storage_create(svinst, location, 0,
+	if (sieve_storage_create(svinst, svinst->event, location, 0,
 				 &storage, error_code_r) < 0)
 		return -1;
 
diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 8860c1243..05fe830ef 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -398,7 +398,8 @@ sieve_storage_init(struct sieve_instance *svinst, struct event *event_parent,
 	return ret;
 }
 
-int sieve_storage_create(struct sieve_instance *svinst, const char *location,
+int sieve_storage_create(struct sieve_instance *svinst, struct event *event,
+			 const char *location,
 			 enum sieve_storage_flags flags,
 			 struct sieve_storage **storage_r,
 			 enum sieve_error *error_code_r)
@@ -423,7 +424,7 @@ int sieve_storage_create(struct sieve_instance *svinst, const char *location,
 	if (ret == 0)
 		storage_class = &sieve_file_storage;
 
-	return sieve_storage_init(svinst, svinst->event, storage_class,
+	return sieve_storage_init(svinst, event, storage_class,
 				  data, flags, FALSE,
 				  storage_r, error_code_r);
 }
@@ -577,7 +578,8 @@ int sieve_storage_create_personal(struct sieve_instance *svinst,
 				"Trying default script location '%s'",
 				set_default);
 
-			ret = sieve_storage_create(svinst, set_default, 0,
+			ret = sieve_storage_create(svinst, svinst->event,
+						   set_default, 0,
 						   &storage, error_code_r);
 			if (ret < 0) {
 				switch (*error_code_r) {
@@ -1669,6 +1671,8 @@ int sieve_storage_sequence_next(struct sieve_storage_sequence *sseq,
 				struct sieve_storage **storage_r,
 				enum sieve_error *error_code_r)
 {
+	struct sieve_instance *svinst = sseq->svinst;
+
 	*storage_r = NULL;
 	sieve_error_args_init(&error_code_r, NULL);
 
@@ -1676,7 +1680,7 @@ int sieve_storage_sequence_next(struct sieve_storage_sequence *sseq,
 		return 0;
 	sseq->done = TRUE;
 
-	if (sieve_storage_create(sseq->svinst, sseq->location, 0,
+	if (sieve_storage_create(svinst, svinst->event, sseq->location, 0,
 				 storage_r, error_code_r) < 0)
 		return -1;
 	return 1;
diff --git a/src/lib-sieve/sieve-storage.h b/src/lib-sieve/sieve-storage.h
index 61bae1373..0a38ea5d5 100644
--- a/src/lib-sieve/sieve-storage.h
+++ b/src/lib-sieve/sieve-storage.h
@@ -29,7 +29,8 @@ struct sieve_storage;
 bool sieve_storage_class_exists(struct sieve_instance *svinst,
 				const char *name);
 
-int sieve_storage_create(struct sieve_instance *svinst, const char *location,
+int sieve_storage_create(struct sieve_instance *svinst, struct event *event,
+			 const char *location,
 			 enum sieve_storage_flags flags,
 			 struct sieve_storage **storage_r,
 			 enum sieve_error *error_code_r);
diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
index 150f86061..35bd6f615 100644
--- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c
+++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
@@ -253,7 +253,7 @@ imap_filter_sieve_get_global_storage(struct imap_filter_sieve_context *sctx,
 		*error_r = "No global Sieve scripts available";
 		return -1;
 	}
-	if (sieve_storage_create(svinst, location, 0,
+	if (sieve_storage_create(svinst, svinst->event, location, 0,
 				 &ifsuser->global_storage, &error_code) == 0) {
 		*storage_r = ifsuser->global_storage;
 		return 0;
-- 
GitLab