From: Timo Sirainen Date: Thu, 5 Sep 2019 09:04:50 +0000 (+0300) Subject: lib-master: Code cleanup for handling event filter category parsing X-Git-Tag: 2.3.9~168 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa14236682604d47b4c7c8ed4dedcc3b2e5683a4;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Code cleanup for handling event filter category parsing --- diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index a302467658..0b2d51da66 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -108,6 +108,13 @@ const struct setting_parser_info master_service_setting_parser_info = { }; /* */ +static void add_category(ARRAY_TYPE(const_string) *categories, const char *name) +{ + if (!array_is_created(categories)) + t_array_init(categories, 4); + array_push_back(categories, &name); +} + static int parse_query(const char *str, struct event_filter_query *query_r, const char **error_r) { @@ -150,15 +157,11 @@ static int parse_query(const char *str, struct event_filter_query *query_r, array_append_space(&fields); field->key = t_strdup_until(str+6, value); field->value = value+1; - } else if (strncmp(str, "cat:", 4) == 0 || - strncmp(str, "category:", 9) == 0) { - if (!array_is_created(&categories)) - t_array_init(&categories, 4); - str = strchr(str, ':'); - i_assert(str != NULL); - str++; - array_push_back(&categories, &str); - } else { + } else if (str_begins(str, "cat:")) + add_category(&categories, str+4); + else if (str_begins(str, "category:")) + add_category(&categories, str+9); + else { *error_r = t_strdup_printf("Unknown event '%s'", str); return -1; }