From: Josef 'Jeff' Sipek Date: Thu, 14 May 2020 19:11:35 +0000 (-0400) Subject: lib: Change event_filter_parse() filter arg to a single pointer X-Git-Tag: 2.3.13~498 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a58a505d91c8616a5bee3d1f80673371970f14e1;p=thirdparty%2Fdovecot%2Fcore.git lib: Change event_filter_parse() filter arg to a single pointer Instead of allocating a new filter, fill in a passed in one. --- diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index 5313873ce1..0ad8be023d 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -119,8 +119,10 @@ log_filter_parse(const char *set_name, const char *set_value, return TRUE; } - if (event_filter_parse(set_value, filter_r, &error) < 0) { + *filter_r = event_filter_create(); + if (event_filter_parse(set_value, *filter_r, &error) < 0) { *error_r = t_strdup_printf("Invalid %s: %s", set_name, error); + event_filter_unref(filter_r); return FALSE; } return TRUE; diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index b3e6eed62e..899dd2e8a9 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -336,11 +336,13 @@ master_service_init(const char *name, enum master_service_flags flags, if (value != NULL) { struct event_filter *filter; const char *error; - if (event_filter_parse(value, &filter, &error) < 0) { + filter = event_filter_create(); + if (event_filter_parse(value, filter, &error) < 0) { i_error("Invalid "DOVECOT_LOG_DEBUG_ENV" - ignoring: %s", error); + } else { + event_set_global_debug_log_filter(filter); } - event_set_global_debug_log_filter(filter); event_filter_unref(&filter); } diff --git a/src/lib/event-filter-parser.c b/src/lib/event-filter-parser.c index 2157f916ef..6c7b3aa459 100644 --- a/src/lib/event-filter-parser.c +++ b/src/lib/event-filter-parser.c @@ -79,8 +79,8 @@ static int parse_query(const char *str, struct event_filter_query *query_r, return 0; } -static int event_filter_parse_into(struct event_filter *filter, const char *str, - const char **error_r) +int event_filter_parse(const char *str, struct event_filter *filter, + const char **error_r) { struct event_filter_query query; const char *p; @@ -121,18 +121,3 @@ static int event_filter_parse_into(struct event_filter *filter, const char *str, return 0; } - -int event_filter_parse(const char *str, struct event_filter **filter_r, - const char **error_r) -{ - struct event_filter *filter = event_filter_create(); - - if (event_filter_parse_into(filter, str, error_r) < 0) { - event_filter_unref(&filter); - *filter_r = NULL; - return -1; - } - - *filter_r = filter; - return 0; -} diff --git a/src/lib/event-filter.h b/src/lib/event-filter.h index 9a3e9f4460..edc48a8771 100644 --- a/src/lib/event-filter.h +++ b/src/lib/event-filter.h @@ -60,8 +60,8 @@ bool event_filter_import_unescaped(struct event_filter *filter, const char *const *args, const char **error_r); -/* Parse a string-ified query */ -int event_filter_parse(const char *str, struct event_filter **filter_r, +/* Parse a string-ified query, filling the passed in filter */ +int event_filter_parse(const char *str, struct event_filter *filter, const char **error_r); /* Returns TRUE if the event matches the event filter. */