From 161c62de6d5f48a7c3158f7b5a7c0a1049f06e72 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sat, 19 Oct 2024 22:00:09 +0200
Subject: [PATCH] lib-sieve: storage - Add sieve_storage_set_not_found_error()

---
 src/lib-sieve/sieve-storage-private.h |  2 ++
 src/lib-sieve/sieve-storage.c         | 13 +++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/src/lib-sieve/sieve-storage-private.h b/src/lib-sieve/sieve-storage-private.h
index 375d78952..81bd130b8 100644
--- a/src/lib-sieve/sieve-storage-private.h
+++ b/src/lib-sieve/sieve-storage-private.h
@@ -220,6 +220,8 @@ extern const struct sieve_storage sieve_ldap_storage;
  */
 
 void sieve_storage_set_internal_error(struct sieve_storage *storage);
+void sieve_storage_set_not_found_error(struct sieve_storage *storage,
+				       const char *name);
 
 void sieve_storage_copy_error(struct sieve_storage *storage,
 			      const struct sieve_storage *source);
diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 1467d9917..706533b94 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -1592,6 +1592,19 @@ void sieve_storage_set_critical(struct sieve_storage *storage,
 	}
 }
 
+void sieve_storage_set_not_found_error(struct sieve_storage *storage,
+				       const char *name)
+{
+	enum sieve_error error_code;
+	const char *error;
+
+	sieve_storage_clear_error(storage);
+	name = (name == NULL || *name == '\0' ? storage->script_name : name);
+	sieve_error_create_script_not_found(name, &error_code, &error);
+	storage->error_code = error_code;
+	storage->error = i_strdup(error);
+}
+
 const char *
 sieve_storage_get_last_error(struct sieve_storage *storage,
 			     enum sieve_error *error_code_r)
-- 
GitLab