Skip to content
Snippets Groups Projects
Commit 91888b9d authored by Stephan Bosch's avatar Stephan Bosch
Browse files

Cleaned up comparator-i;ascii-numeric.

parent 75233d72
No related branches found
No related tags found
No related merge requests found
/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
*/
/* Extension comparator-i;ascii-numeric /* Extension comparator-i;ascii-numeric
* ------------------------------------ * ------------------------------------
* *
...@@ -24,13 +27,16 @@ ...@@ -24,13 +27,16 @@
*/ */
static const struct sieve_operand my_comparator_operand; static const struct sieve_operand my_comparator_operand;
const struct sieve_comparator i_ascii_numeric_comparator; const struct sieve_comparator i_ascii_numeric_comparator;
static bool ext_cmp_i_ascii_numeric_load(int ext_id); static bool ext_cmp_i_ascii_numeric_load
static bool ext_cmp_i_ascii_numeric_validator_load(struct sieve_validator *validator); (int ext_id);
static bool ext_cmp_i_ascii_numeric_validator_load
(struct sieve_validator *validator);
/* /*
* Extension definitions * Extension
*/ */
static int ext_my_id; static int ext_my_id;
...@@ -45,20 +51,24 @@ const struct sieve_extension comparator_i_ascii_numeric_extension = { ...@@ -45,20 +51,24 @@ const struct sieve_extension comparator_i_ascii_numeric_extension = {
SIEVE_EXT_DEFINE_OPERAND(my_comparator_operand) SIEVE_EXT_DEFINE_OPERAND(my_comparator_operand)
}; };
static bool ext_cmp_i_ascii_numeric_load(int ext_id) static bool ext_cmp_i_ascii_numeric_load
(int ext_id)
{ {
ext_my_id = ext_id; ext_my_id = ext_id;
return TRUE; return TRUE;
} }
/* Actual extension implementation */ static bool ext_cmp_i_ascii_numeric_validator_load
(struct sieve_validator *validator)
/* Extension access structures */ {
sieve_comparator_register(validator, &i_ascii_numeric_comparator);
return TRUE;
}
static int cmp_i_ascii_numeric_compare /*
(const struct sieve_comparator *cmp, * Operand
const char *val1, size_t val1_size, const char *val2, size_t val2_size); */
static const struct sieve_extension_obj_registry ext_comparators = static const struct sieve_extension_obj_registry ext_comparators =
SIEVE_EXT_DEFINE_COMPARATOR(i_ascii_numeric_comparator); SIEVE_EXT_DEFINE_COMPARATOR(i_ascii_numeric_comparator);
...@@ -71,6 +81,18 @@ static const struct sieve_operand my_comparator_operand = { ...@@ -71,6 +81,18 @@ static const struct sieve_operand my_comparator_operand = {
&ext_comparators &ext_comparators
}; };
/*
* Comparator
*/
/* Forward declarations */
static int cmp_i_ascii_numeric_compare
(const struct sieve_comparator *cmp,
const char *val1, size_t val1_size, const char *val2, size_t val2_size);
/* Comparator object */
const struct sieve_comparator i_ascii_numeric_comparator = { const struct sieve_comparator i_ascii_numeric_comparator = {
SIEVE_OBJECT("i;ascii-numeric", &my_comparator_operand, 0), SIEVE_OBJECT("i;ascii-numeric", &my_comparator_operand, 0),
SIEVE_COMPARATOR_FLAG_ORDERING | SIEVE_COMPARATOR_FLAG_EQUALITY, SIEVE_COMPARATOR_FLAG_ORDERING | SIEVE_COMPARATOR_FLAG_EQUALITY,
...@@ -79,15 +101,7 @@ const struct sieve_comparator i_ascii_numeric_comparator = { ...@@ -79,15 +101,7 @@ const struct sieve_comparator i_ascii_numeric_comparator = {
NULL NULL
}; };
/* Load extension into validator */ /* Comparator implementation */
static bool ext_cmp_i_ascii_numeric_validator_load(struct sieve_validator *validator)
{
sieve_comparator_register(validator, &i_ascii_numeric_comparator);
return TRUE;
}
/* Implementation */
static int cmp_i_ascii_numeric_compare static int cmp_i_ascii_numeric_compare
(const struct sieve_comparator *cmp ATTR_UNUSED, (const struct sieve_comparator *cmp ATTR_UNUSED,
...@@ -99,8 +113,8 @@ static int cmp_i_ascii_numeric_compare ...@@ -99,8 +113,8 @@ static int cmp_i_ascii_numeric_compare
const char *kp = key; const char *kp = key;
int digits, i; int digits, i;
/* RFC 4790: All input is valid; strings that do not start with a digit represent /* RFC 4790: All input is valid; strings that do not start with a digit
* positive infinity. * represent positive infinity.
*/ */
if ( !i_isdigit(*vp) ) { if ( !i_isdigit(*vp) ) {
if ( i_isdigit(*kp) ) { if ( i_isdigit(*kp) ) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.