Instead of allocating a new filter, fill in a passed in one.
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;
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);
}
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;
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;
-}
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. */