From b1cfd1739e975a1090094e6ac40ddf2e3a180269 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sun, 15 Sep 2024 00:28:34 +0200
Subject: [PATCH] lib-sieve: sieve-storage: sieve-file-script - Use int for
 sieve_file_script_open_from_filename() status result

---
 .../storage/file/sieve-file-script-sequence.c |  6 +++---
 .../storage/file/sieve-file-script.c          | 21 +++++++++++--------
 .../storage/file/sieve-file-storage.h         |  8 +++----
 3 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/lib-sieve/storage/file/sieve-file-script-sequence.c b/src/lib-sieve/storage/file/sieve-file-script-sequence.c
index 8cbc682ec..c21e74d95 100644
--- a/src/lib-sieve/storage/file/sieve-file-script-sequence.c
+++ b/src/lib-sieve/storage/file/sieve-file-script-sequence.c
@@ -223,9 +223,9 @@ int sieve_file_script_sequence_next(struct sieve_script_sequence *sseq,
 			return 0;
 
 		for (;;) {
-			fscript = sieve_file_script_open_from_filename(
-				fstorage, files[fseq->index++], NULL);
-			if (fscript != NULL)
+			if (sieve_file_script_open_from_filename(
+				fstorage, files[fseq->index++], NULL,
+				&fscript) == 0)
 				break;
 			if (sseq->storage->error_code != SIEVE_ERROR_NOT_FOUND)
 				break;
diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c
index 488a56a80..8fddb77d1 100644
--- a/src/lib-sieve/storage/file/sieve-file-script.c
+++ b/src/lib-sieve/storage/file/sieve-file-script.c
@@ -138,26 +138,29 @@ int sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage,
 	return 0;
 }
 
-struct sieve_file_script *
-sieve_file_script_open_from_filename(struct sieve_file_storage *fstorage,
-				     const char *filename,
-				     const char *scriptname)
+int sieve_file_script_open_from_filename(struct sieve_file_storage *fstorage,
+					 const char *filename,
+					 const char *scriptname,
+					 struct sieve_file_script **fscript_r)
 {
 	struct sieve_file_script *fscript;
 	enum sieve_error error_code;
 
-	if (sieve_file_script_init_from_filename(fstorage, filename,
-						 scriptname, &fscript) < 0)
-		return NULL;
+	*fscript_r = NULL;
+
+	if (sieve_file_script_init_from_filename(fstorage, filename, scriptname,
+						 &fscript) < 0)
+		return -1;
 
 	if (sieve_script_open(&fscript->script, &error_code) < 0) {
 		struct sieve_script *script = &fscript->script;
 
 		sieve_script_unref(&script);
-		return NULL;
+		return -1;
 	}
 
-	return fscript;
+	*fscript_r = fscript;
+	return 0;
 }
 
 struct sieve_file_script *
diff --git a/src/lib-sieve/storage/file/sieve-file-storage.h b/src/lib-sieve/storage/file/sieve-file-storage.h
index 764668c8c..7c0d920e4 100644
--- a/src/lib-sieve/storage/file/sieve-file-storage.h
+++ b/src/lib-sieve/storage/file/sieve-file-storage.h
@@ -140,10 +140,10 @@ int sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage,
 					 const char *filename,
 					 const char *scriptname,
 					 struct sieve_file_script **fscript_r);
-struct sieve_file_script *
-sieve_file_script_open_from_filename(struct sieve_file_storage *fstorage,
-				     const char *filename,
-				     const char *scriptname);
+int sieve_file_script_open_from_filename(struct sieve_file_storage *fstorage,
+					 const char *filename,
+					 const char *scriptname,
+					 struct sieve_file_script **fscript_r);
 struct sieve_file_script *
 sieve_file_script_init_from_name(struct sieve_file_storage *fstorage,
 				 const char *name);
-- 
GitLab