diff --git a/src/lib-sieve/sieve-code.c b/src/lib-sieve/sieve-code.c index 5aaf4d07d28ebe6a8cac5942b23e073a5c348908..164bb20fcea6f8a48571c223a994932041ebd401 100644 --- a/src/lib-sieve/sieve-code.c +++ b/src/lib-sieve/sieve-code.c @@ -470,6 +470,19 @@ bool sieve_opr_string_dump return sieve_opr_string_dump_data(denv, operand, address); } +bool sieve_opr_string_dump_ex +(const struct sieve_dumptime_env *denv, sieve_size_t *address, bool *literal) +{ + const struct sieve_operand *operand; + + sieve_code_mark(denv); + operand = sieve_operand_read(denv->sbin, address); + + *literal = ( operand == &string_operand ); + + return sieve_opr_string_dump_data(denv, operand, address); +} + bool sieve_opr_string_read_data (const struct sieve_runtime_env *renv, const struct sieve_operand *operand, sieve_size_t *address, string_t **str) @@ -495,6 +508,17 @@ bool sieve_opr_string_read return sieve_opr_string_read_data(renv, operand, address, str); } +bool sieve_opr_string_read_ex +(const struct sieve_runtime_env *renv, sieve_size_t *address, string_t **str, + bool *literal) +{ + const struct sieve_operand *operand = sieve_operand_read(renv->sbin, address); + + *literal = ( operand == &string_operand ); + + return sieve_opr_string_read_data(renv, operand, address, str); +} + static void _dump_string (const struct sieve_dumptime_env *denv, string_t *str) { diff --git a/src/lib-sieve/sieve-code.h b/src/lib-sieve/sieve-code.h index bf021dba40b8835e5b02e3cd2270dc8ba3d3d652..8f59a49feaa7ab659cbfbc9b9437c03e932f393a 100644 --- a/src/lib-sieve/sieve-code.h +++ b/src/lib-sieve/sieve-code.h @@ -163,11 +163,16 @@ bool sieve_opr_string_dump_data sieve_size_t *address); bool sieve_opr_string_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address); +bool sieve_opr_string_dump_ex + (const struct sieve_dumptime_env *denv, sieve_size_t *address, bool *literal); bool sieve_opr_string_read_data (const struct sieve_runtime_env *renv, const struct sieve_operand *operand, sieve_size_t *address, string_t **str); bool sieve_opr_string_read (const struct sieve_runtime_env *renv, sieve_size_t *address, string_t **str); +bool sieve_opr_string_read_ex + (const struct sieve_runtime_env *renv, sieve_size_t *address, string_t **str, + bool *literal); static inline bool sieve_operand_is_string (const struct sieve_operand *operand)