From acc9246f82b01c8d25bfd257ea48e7c2ac22d223 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sun, 11 Nov 2007 18:01:57 +0100 Subject: [PATCH] Enabled comparator execution support. --- src/lib-sieve/sieve-commands.c | 1 + src/lib-sieve/sieve-common.h | 4 ++++ src/lib-sieve/sieve-interpreter.c | 4 ++-- src/lib-sieve/sieve-interpreter.h | 5 ++--- src/lib-sieve/tst-address.c | 2 +- src/lib-sieve/tst-header.c | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lib-sieve/sieve-commands.c b/src/lib-sieve/sieve-commands.c index 1c9429e87..73c055b41 100644 --- a/src/lib-sieve/sieve-commands.c +++ b/src/lib-sieve/sieve-commands.c @@ -3,6 +3,7 @@ #include "sieve-ast.h" #include "sieve-validator.h" #include "sieve-generator.h" +#include "sieve-binary.h" #include "sieve-commands.h" #include "sieve-commands-private.h" diff --git a/src/lib-sieve/sieve-common.h b/src/lib-sieve/sieve-common.h index ef6412c24..2937a1b74 100644 --- a/src/lib-sieve/sieve-common.h +++ b/src/lib-sieve/sieve-common.h @@ -41,11 +41,15 @@ struct sieve_extension; /* sieve-code.h */ struct sieve_operand; struct sieve_opcode; +struct sieve_coded_stringlist; /* sieve-binary.h */ typedef size_t sieve_size_t; struct sieve_binary; +/* sieve-comparator.h */ +struct sieve_comparator; + /* * */ diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c index 1ba3a74f7..21596e8f4 100644 --- a/src/lib-sieve/sieve-interpreter.c +++ b/src/lib-sieve/sieve-interpreter.c @@ -177,7 +177,7 @@ bool sieve_interpreter_read_offset_operand /* Stringlist Utility */ bool sieve_stringlist_match - (struct sieve_coded_stringlist *key_list, const char *value) + (struct sieve_coded_stringlist *key_list, const char *value, const struct sieve_comparator *cmp) { string_t *key_item; sieve_coded_stringlist_reset(key_list); @@ -185,7 +185,7 @@ bool sieve_stringlist_match /* Match to all key values */ key_item = NULL; while ( sieve_coded_stringlist_next_item(key_list, &key_item) && key_item != NULL ) { - if ( strncmp(value, str_c(key_item), str_len(key_item)) == 0 ) + if ( cmp->compare(value, strlen(value), str_c(key_item), str_len(key_item)) == 0 ) return TRUE; } diff --git a/src/lib-sieve/sieve-interpreter.h b/src/lib-sieve/sieve-interpreter.h index 031583349..d89e85f5e 100644 --- a/src/lib-sieve/sieve-interpreter.h +++ b/src/lib-sieve/sieve-interpreter.h @@ -6,8 +6,7 @@ #include "buffer.h" #include "mail-storage.h" -#include "sieve-binary.h" -#include "sieve-code.h" +#include "sieve-common.h" struct sieve_interpreter; @@ -48,7 +47,7 @@ bool sieve_interpreter_read_offset_operand /* Stringlist Utility */ bool sieve_stringlist_match - (struct sieve_coded_stringlist *key_list, const char *value); + (struct sieve_coded_stringlist *key_list, const char *value, const struct sieve_comparator *cmp); /* Accessing runtime information */ diff --git a/src/lib-sieve/tst-address.c b/src/lib-sieve/tst-address.c index 6432abfb0..c13ca9c66 100644 --- a/src/lib-sieve/tst-address.c +++ b/src/lib-sieve/tst-address.c @@ -179,7 +179,7 @@ static bool tst_address_opcode_execute int i; for ( i = 0; !matched && headers[i] != NULL; i++ ) { - if ( sieve_stringlist_match(key_list, headers[i]) ) + if ( sieve_stringlist_match(key_list, headers[i], cmp) ) matched = TRUE; } } diff --git a/src/lib-sieve/tst-header.c b/src/lib-sieve/tst-header.c index 91444b351..78718568a 100644 --- a/src/lib-sieve/tst-header.c +++ b/src/lib-sieve/tst-header.c @@ -169,7 +169,7 @@ static bool tst_header_opcode_execute int i; for ( i = 0; !matched && headers[i] != NULL; i++ ) { - if ( sieve_stringlist_match(key_list, headers[i]) ) + if ( sieve_stringlist_match(key_list, headers[i], cmp) ) matched = TRUE; } } -- GitLab