]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: event filter - Generalize query construction helpers
authorJosef 'Jeff' Sipek <jeff.sipek@open-xchange.com>
Wed, 21 Apr 2021 15:19:31 +0000 (11:19 -0400)
committerjeff.sipek <jeff.sipek@open-xchange.com>
Tue, 27 Apr 2021 17:46:14 +0000 (17:46 +0000)
If instead of taking the internal query, they take a filter expression node,
they can be reused by optimizations in subsequent commits.

src/lib/event-filter.c

index f04b0822001d9cb36af55a79d2c8f8ab8f4bc47f..0c56d115f41f5d72fe9da89392de0078d5aeabec 100644 (file)
@@ -194,7 +194,7 @@ static void add_node(pool_t pool, struct event_filter_node **root,
 
 static void
 event_filter_add_categories(pool_t pool,
-                           struct event_filter_query_internal *int_query,
+                           struct event_filter_node **root,
                            const char *const *categories)
 {
        unsigned int categories_count = str_array_length(categories);
@@ -214,13 +214,13 @@ event_filter_add_categories(pool_t pool,
                        node->category.ptr = event_category_find_registered(categories[i]);
                }
 
-               add_node(pool, &int_query->expr, node);
+               add_node(pool, root, node);
        }
 }
 
 static void
 event_filter_add_fields(pool_t pool,
-                       struct event_filter_query_internal *int_query,
+                       struct event_filter_node **root,
                        const struct event_filter_field *fields)
 {
        unsigned int i;
@@ -245,7 +245,7 @@ event_filter_add_fields(pool_t pool,
                        node->field.value.intmax = INT_MIN;
                }
 
-               add_node(pool, &int_query->expr, node);
+               add_node(pool, root, node);
        }
 }
 
@@ -283,8 +283,8 @@ void event_filter_add(struct event_filter *filter,
                add_node(filter->pool, &int_query->expr, node);
        }
 
-       event_filter_add_categories(filter->pool, int_query, query->categories);
-       event_filter_add_fields(filter->pool, int_query, query->fields);
+       event_filter_add_categories(filter->pool, &int_query->expr, query->categories);
+       event_filter_add_fields(filter->pool, &int_query->expr, query->fields);
 }
 
 static struct event_filter_node *