From: Timo Sirainen Date: Wed, 30 Oct 2024 20:45:32 +0000 (+0200) Subject: config: Add config_filters_equal_no_recursion() X-Git-Tag: 2.4.0~291 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=383e86a0977da5c70b4e52275516bc13b72ca732;p=thirdparty%2Fdovecot%2Fcore.git config: Add config_filters_equal_no_recursion() --- diff --git a/src/config/config-filter.c b/src/config/config-filter.c index 0743577396..f608f28de6 100644 --- a/src/config/config-filter.c +++ b/src/config/config-filter.c @@ -94,9 +94,8 @@ bool config_filter_match(const struct config_filter *mask, return mask == NULL && filter == NULL; } -static bool -config_filters_equal_without_defaults(const struct config_filter *f1, - const struct config_filter *f2) +bool config_filters_equal_no_recursion(const struct config_filter *f1, + const struct config_filter *f2) { if (null_strcmp(f1->service, f2->service) != 0) return FALSE; @@ -118,6 +117,15 @@ config_filters_equal_without_defaults(const struct config_filter *f1, return FALSE; if (f1->filter_name_array != f2->filter_name_array) return FALSE; + return TRUE; +} + +static bool +config_filters_equal_without_defaults(const struct config_filter *f1, + const struct config_filter *f2) +{ + if (!config_filters_equal_no_recursion(f1, f2)) + return FALSE; if (f1->parent != NULL || f2->parent != NULL) { /* Check the parents' compatibility also. However, it's possible that one of these parents is the empty root filter, diff --git a/src/config/config-filter.h b/src/config/config-filter.h index f35ecc7951..7012dd96b4 100644 --- a/src/config/config-filter.h +++ b/src/config/config-filter.h @@ -62,6 +62,8 @@ bool config_filter_match(const struct config_filter *mask, /* Returns TRUE if two filters are fully equal. */ bool config_filters_equal(const struct config_filter *f1, const struct config_filter *f2); +bool config_filters_equal_no_recursion(const struct config_filter *f1, + const struct config_filter *f2); /* Returns TRUE if filter is empty, and it has no parent filters, and it has default_settings=FALSE. */ bool config_filter_is_empty(const struct config_filter *filter);