]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Change event_filter_parse() filter arg to a single pointer
authorJosef 'Jeff' Sipek <jeff.sipek@open-xchange.com>
Thu, 14 May 2020 19:11:35 +0000 (15:11 -0400)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 26 Jun 2020 07:18:18 +0000 (07:18 +0000)
Instead of allocating a new filter, fill in a passed in one.

src/lib-master/master-service-settings.c
src/lib-master/master-service.c
src/lib/event-filter-parser.c
src/lib/event-filter.h

index 5313873ce1ee58ce5155b854ecc814f082083767..0ad8be023d8ba5cd355ea15eb9a0e6f7498823dd 100644 (file)
@@ -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;
index b3e6eed62efd8880998049a9520d4030b127e206..899dd2e8a95d2e40ced59e886cb227b430d29a87 100644 (file)
@@ -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);
        }
 
index 2157f916ef2672e7c4a2fcde49013d7dbe9ec04e..6c7b3aa45945f67bf215479caf5aad994af866b6 100644 (file)
@@ -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;
-}
index 9a3e9f446082d56d868a2a6f5f988fcb254d0f2d..edc48a877114740d7208978bd37698c5ded1675a 100644 (file)
@@ -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. */