From 58653596778109452e82b22ce1059d04fa65fbba Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Sun, 29 Sep 2024 01:04:36 +0200 Subject: [PATCH] lib-sieve: sieve-storage: sieve-file-storage - Use int for sieve_file_storage_init_from_path() status result --- .../storage/file/sieve-file-script.c | 5 ++- .../storage/file/sieve-file-storage.c | 32 ++++++++++++------- .../storage/file/sieve-file-storage.h | 10 +++--- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c index 3fadcc599..f9868f34e 100644 --- a/src/lib-sieve/storage/file/sieve-file-script.c +++ b/src/lib-sieve/storage/file/sieve-file-script.c @@ -221,9 +221,8 @@ int sieve_file_script_init_from_path(struct sieve_file_storage *fstorage, *fscript_r = NULL; - fsubstorage = sieve_file_storage_init_from_path(svinst, path, 0, - &error_code); - if (fsubstorage == NULL) { + if (sieve_file_storage_init_from_path(svinst, path, 0, &fsubstorage, + &error_code) < 0) { sieve_storage_set_error(storage, error_code, "Failed to open script"); return -1; diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c index 35bdaa63b..cb4347f10 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.c +++ b/src/lib-sieve/storage/file/sieve-file-storage.c @@ -721,32 +721,40 @@ sieve_file_storage_init_default(struct sieve_instance *svinst, return storage; } -struct sieve_file_storage * -sieve_file_storage_init_from_path(struct sieve_instance *svinst, - const char *path, - enum sieve_storage_flags flags, - enum sieve_error *error_code_r) +int sieve_file_storage_init_from_path(struct sieve_instance *svinst, + const char *path, + enum sieve_storage_flags flags, + struct sieve_file_storage **fstorage_r, + enum sieve_error *error_code_r) { struct sieve_storage *storage; struct sieve_file_storage *fstorage; + enum sieve_error error_code; int ret; i_assert(path != NULL); + *fstorage_r = NULL; + if (error_code_r != NULL) + *error_code_r = SIEVE_ERROR_NONE; + else + error_code_r = &error_code; + ret = sieve_storage_alloc(svinst, NULL, &sieve_file_storage, "", flags, FALSE, &storage); i_assert(ret == 0); fstorage = container_of(storage, struct sieve_file_storage, storage); T_BEGIN { - if (sieve_file_storage_init_common(fstorage, path, NULL, FALSE, - error_code_r) < 0) { - sieve_storage_unref(&storage); - fstorage = NULL; - } + ret = sieve_file_storage_init_common(fstorage, path, NULL, + FALSE, error_code_r); } T_END; - - return fstorage; + if (ret < 0) { + sieve_storage_unref(&storage); + return -1; + } + *fstorage_r = fstorage; + return 0; } static int sieve_file_storage_is_singular(struct sieve_storage *storage) diff --git a/src/lib-sieve/storage/file/sieve-file-storage.h b/src/lib-sieve/storage/file/sieve-file-storage.h index 6a9a7e929..2f1a995fe 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.h +++ b/src/lib-sieve/storage/file/sieve-file-storage.h @@ -46,11 +46,11 @@ const char * sieve_file_storage_path_extend(struct sieve_file_storage *fstorage, const char *filename); -struct sieve_file_storage * -sieve_file_storage_init_from_path(struct sieve_instance *svinst, - const char *path, - enum sieve_storage_flags flags, - enum sieve_error *error_code_r); +int sieve_file_storage_init_from_path(struct sieve_instance *svinst, + const char *path, + enum sieve_storage_flags flags, + struct sieve_file_storage **fstorage_r, + enum sieve_error *error_code_r); int sieve_file_storage_pre_modify(struct sieve_storage *storage); -- GitLab