dovecot-2.2: lib-storage: Added mail_search_init/deinit_arg()
dovecot at dovecot.org
dovecot at dovecot.org
Mon May 18 10:39:32 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/eafbf9a13bbd
changeset: 18723:eafbf9a13bbd
user: Timo Sirainen <tss at iki.fi>
date: Mon May 18 06:36:56 2015 -0400
description:
lib-storage: Added mail_search_init/deinit_arg()
For forcibly initializing/deinitializing search args.
diffstat:
src/lib-storage/mail-search.c | 23 ++++++++++-------------
src/lib-storage/mail-search.h | 13 +++++++++++--
2 files changed, 21 insertions(+), 15 deletions(-)
diffs (94 lines):
diff -r e6513dd519d5 -r eafbf9a13bbd src/lib-storage/mail-search.c
--- a/src/lib-storage/mail-search.c Mon May 18 06:21:50 2015 -0400
+++ b/src/lib-storage/mail-search.c Mon May 18 06:36:56 2015 -0400
@@ -60,8 +60,7 @@
}
}
-static void
-mail_search_args_init_sub(struct mail_search_args *args,
+void mail_search_arg_init(struct mail_search_args *args,
struct mail_search_arg *arg,
bool change_uidsets,
const ARRAY_TYPE(seq_range) *search_saved_uidset)
@@ -118,9 +117,9 @@
/* fall through */
case SEARCH_SUB:
case SEARCH_OR:
- mail_search_args_init_sub(args, arg->value.subargs,
- change_uidsets,
- search_saved_uidset);
+ mail_search_arg_init(args, arg->value.subargs,
+ change_uidsets,
+ search_saved_uidset);
break;
default:
break;
@@ -142,12 +141,11 @@
args->box = box;
if (!args->simplified)
mail_search_args_simplify(args);
- mail_search_args_init_sub(args, args->args, change_uidsets,
- search_saved_uidset);
+ mail_search_arg_init(args, args->args, change_uidsets,
+ search_saved_uidset);
}
-static void mail_search_args_deinit_sub(struct mail_search_args *args,
- struct mail_search_arg *arg)
+void mail_search_arg_deinit(struct mail_search_arg *arg)
{
for (; arg != NULL; arg = arg->next) {
switch (arg->type) {
@@ -165,8 +163,7 @@
break;
case SEARCH_INTHREAD:
i_assert(arg->initialized.search_args->refcount > 0);
- if (args->refcount == 0 &&
- arg->value.search_result != NULL) {
+ if (arg->value.search_result != NULL) {
mailbox_search_result_free(
&arg->value.search_result);
}
@@ -175,7 +172,7 @@
/* fall through */
case SEARCH_SUB:
case SEARCH_OR:
- mail_search_args_deinit_sub(args, arg->value.subargs);
+ mail_search_arg_deinit(arg->value.subargs);
break;
default:
break;
@@ -188,7 +185,7 @@
if (--args->init_refcount > 0)
return;
- mail_search_args_deinit_sub(args, args->args);
+ mail_search_arg_deinit(args->args);
args->box = NULL;
}
diff -r e6513dd519d5 -r eafbf9a13bbd src/lib-storage/mail-search.h
--- a/src/lib-storage/mail-search.h Mon May 18 06:21:50 2015 -0400
+++ b/src/lib-storage/mail-search.h Mon May 18 06:36:56 2015 -0400
@@ -132,9 +132,18 @@
struct mailbox *box, bool change_uidsets,
const ARRAY_TYPE(seq_range) *search_saved_uidset)
ATTR_NULL(4);
-/* Free keywords. The args can initialized afterwards again if needed.
- The args can be reused for other queries after calling this. */
+/* Initialize arg and its children. args is used for getting mailbox and
+ pool. */
+void mail_search_arg_init(struct mail_search_args *args,
+ struct mail_search_arg *arg,
+ bool change_uidsets,
+ const ARRAY_TYPE(seq_range) *search_saved_uidset);
+/* Free memory allocated by mail_search_args_init(). The args can initialized
+ afterwards again if needed. The args can be reused for other queries after
+ calling this. */
void mail_search_args_deinit(struct mail_search_args *args);
+/* Free arg and its children. */
+void mail_search_arg_deinit(struct mail_search_arg *arg);
/* Convert sequence sets in args to UIDs. */
void mail_search_args_seq2uid(struct mail_search_args *args);
/* Returns TRUE if the two search arguments are fully compatible.
More information about the dovecot-cvs
mailing list