From daba6e9bf24e123ca36538160aa780e7f7a049ae Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Sun, 15 Sep 2024 00:15:40 +0200 Subject: [PATCH] lib-sieve: sieve-storage: sieve-file-script - Use int for sieve_file_script_init_from_filename() status result --- .../storage/file/sieve-file-script.c | 28 +++++++++++-------- .../storage/file/sieve-file-storage.h | 8 +++--- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c index d48df7735..488a56a80 100644 --- a/src/lib-sieve/storage/file/sieve-file-script.c +++ b/src/lib-sieve/storage/file/sieve-file-script.c @@ -105,14 +105,16 @@ static struct sieve_file_script *sieve_file_script_alloc(void) return fscript; } -struct sieve_file_script * -sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage, - const char *filename, - const char *scriptname) +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_storage *storage = &fstorage->storage; struct sieve_file_script *fscript = NULL; + *fscript_r = NULL; + /* Prevent initializing the active script link as a script when it resides in the sieve storage directory. */ @@ -122,7 +124,7 @@ sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage, sieve_storage_set_error( storage, SIEVE_ERROR_NOT_FOUND, "Script '%s' does not exist.", scriptname); - return NULL; + return -1; } } @@ -131,7 +133,9 @@ sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage, sieve_file_storage_path_extend(fstorage, filename), scriptname); fscript->filename = p_strdup(fscript->script.pool, filename); - return fscript; + + *fscript_r = fscript; + return 0; } struct sieve_file_script * @@ -142,9 +146,8 @@ sieve_file_script_open_from_filename(struct sieve_file_storage *fstorage, struct sieve_file_script *fscript; enum sieve_error error_code; - fscript = sieve_file_script_init_from_filename(fstorage, filename, - scriptname); - if (fscript == NULL) + if (sieve_file_script_init_from_filename(fstorage, filename, + scriptname, &fscript) < 0) return NULL; if (sieve_script_open(&fscript->script, &error_code) < 0) { @@ -165,8 +168,11 @@ sieve_file_script_init_from_name(struct sieve_file_storage *fstorage, struct sieve_file_script *fscript; if (name != NULL && S_ISDIR(fstorage->st.st_mode)) { - return sieve_file_script_init_from_filename( - fstorage, sieve_script_file_from_name(name), name); + if (sieve_file_script_init_from_filename( + fstorage, sieve_script_file_from_name(name), name, + &fscript) < 0) + return NULL; + return fscript; } fscript = sieve_file_script_alloc(); diff --git a/src/lib-sieve/storage/file/sieve-file-storage.h b/src/lib-sieve/storage/file/sieve-file-storage.h index 05ef1420d..764668c8c 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.h +++ b/src/lib-sieve/storage/file/sieve-file-storage.h @@ -136,10 +136,10 @@ struct sieve_file_script { time_t prev_mtime; }; -struct sieve_file_script * -sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage, - const char *filename, - const char *scriptname); +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, -- GitLab