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 8cbc682eca166edb4662cd4aea481c61a105b1a6..c21e74d9595052c2253114270ec3d3c60ec0595e 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 488a56a80eb7493f689d8dec97c2a912b5ebcf17..8fddb77d1bd6bb1cfb9df7e7debb0f9c6490d7d8 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 764668c8c499eb68a8eaf67e6e2d7762a8f830b9..7c0d920e42b71a6d64e110d7e801551668b0ae0d 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);