From b55cf28ac4645783d674d38f478d515969dd59f9 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Wed, 16 Oct 2024 16:33:27 +0200 Subject: [PATCH] lib-sieve: sieve-storage: sieve-file-storage - Use int for sieve_file_storage_init_default() status result --- src/lib-sieve/sieve-storage-private.h | 10 ++++---- src/lib-sieve/sieve-storage.c | 6 +++-- .../storage/file/sieve-file-storage.c | 23 +++++++++++-------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/lib-sieve/sieve-storage-private.h b/src/lib-sieve/sieve-storage-private.h index c42822315..0baaa78a7 100644 --- a/src/lib-sieve/sieve-storage-private.h +++ b/src/lib-sieve/sieve-storage-private.h @@ -208,11 +208,11 @@ extern const struct sieve_storage sieve_data_storage; extern const struct sieve_storage sieve_file_storage; -struct sieve_storage * -sieve_file_storage_init_default(struct sieve_instance *svinst, - const char *active_path, - enum sieve_storage_flags flags, - enum sieve_error *error_code_r); +int sieve_file_storage_init_default(struct sieve_instance *svinst, + const char *active_path, + enum sieve_storage_flags flags, + struct sieve_storage **storage_r, + enum sieve_error *error_code_r); /* dict */ diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 4aee4fc38..9db3a4ade 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -443,8 +443,10 @@ sieve_storage_do_create_personal(struct sieve_instance *svinst, } if (storage == NULL) { - storage = sieve_file_storage_init_default(svinst, set_sieve, - flags, error_code_r); + if (sieve_file_storage_init_default(svinst, set_sieve, flags, + &storage, error_code_r) < 0) + return NULL; + i_assert(storage != NULL); } if (storage == NULL) diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c index cb4347f10..325f1511c 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.c +++ b/src/lib-sieve/storage/file/sieve-file-storage.c @@ -697,11 +697,11 @@ sieve_file_storage_do_init_default(struct sieve_file_storage *fstorage, return 0; } -struct sieve_storage * -sieve_file_storage_init_default(struct sieve_instance *svinst, - const char *active_path, - enum sieve_storage_flags flags, - enum sieve_error *error_code_r) +int sieve_file_storage_init_default(struct sieve_instance *svinst, + const char *active_path, + enum sieve_storage_flags flags, + struct sieve_storage **storage_r, + enum sieve_error *error_code_r) { struct sieve_storage *storage; struct sieve_file_storage *fstorage; @@ -713,12 +713,15 @@ sieve_file_storage_init_default(struct sieve_instance *svinst, fstorage = container_of(storage, struct sieve_file_storage, storage); T_BEGIN { - if (sieve_file_storage_do_init_default(fstorage, active_path, - error_code_r) < 0) - sieve_storage_unref(&storage); + ret = sieve_file_storage_do_init_default(fstorage, active_path, + error_code_r); } T_END; - - return storage; + if (ret < 0) { + sieve_storage_unref(&storage); + return -1; + } + *storage_r = storage; + return 0; } int sieve_file_storage_init_from_path(struct sieve_instance *svinst, -- GitLab