diff --git a/src/lib-sieve/sieve-validator.c b/src/lib-sieve/sieve-validator.c index f155cde6decf0a83bb37e266756572b91356d8ab..d3fd9cdc38999d0b4d5e92cb1bf7cc68b53bae52 100644 --- a/src/lib-sieve/sieve-validator.c +++ b/src/lib-sieve/sieve-validator.c @@ -65,6 +65,8 @@ struct sieve_validator_extension_reg { const struct sieve_validator_extension *val_ext; struct sieve_ast_argument *arg; void *context; + + bool loaded; }; /* @@ -543,6 +545,7 @@ const struct sieve_extension *sieve_validator_extension_load if ( ext_id >= 0 ) { reg = array_idx_modifiable(&valdtr->extensions, (unsigned int) ext_id); reg->arg = ext_arg; + reg->loaded = TRUE; } return ext; @@ -562,6 +565,17 @@ void sieve_validator_extension_register reg->context = context; } +bool sieve_validator_extension_loaded + (struct sieve_validator *valdtr, const struct sieve_extension *ext) +{ + int ext_id = SIEVE_EXT_ID(ext); + const struct sieve_validator_extension_reg *reg; + + reg = array_idx(&valdtr->extensions, (unsigned int) ext_id); + + return ( reg->loaded ); +} + void sieve_validator_extension_set_context (struct sieve_validator *valdtr, const struct sieve_extension *ext, void *context) diff --git a/src/lib-sieve/sieve-validator.h b/src/lib-sieve/sieve-validator.h index 2b553be680b77adbbdebb36b2935e6d69a18f6e2..ca8b59fd31918b99a602185bb366be293b3380b7 100644 --- a/src/lib-sieve/sieve-validator.h +++ b/src/lib-sieve/sieve-validator.h @@ -134,6 +134,9 @@ const struct sieve_extension *sieve_validator_extension_load void sieve_validator_extension_register (struct sieve_validator *valdtr, const struct sieve_validator_extension *val_ext, void *context); +bool sieve_validator_extension_loaded + (struct sieve_validator *valdtr, const struct sieve_extension *ext); + void sieve_validator_extension_set_context (struct sieve_validator *valdtr, const struct sieve_extension *ext, void *context);