int mail_namespaces_init(struct mail_user *user);
struct mail_namespace *mail_namespaces_init_empty(struct mail_user *user);
+/* Deinitialize all namespaces. mail_user_deinit() calls this automatically
+ for user's namespaces. */
void mail_namespaces_deinit(struct mail_namespace **namespaces);
/* Destroy a single namespace and remove it from user's namespaces list. */
struct imap_arg;
struct mailbox;
+/* Start building a new search query. Use mail_search_args_unref() to
+ free it. */
struct mail_search_args *mail_search_build_init(void);
+/* Convert IMAP SEARCH command compatible parameters to mail_search_args. */
int mail_search_build_from_imap_args(const struct imap_arg *imap_args,
const char *charset,
struct mail_search_args **args_r,
const char **error_r);
+/* Add SEARCH_ALL to search args. */
void mail_search_build_add_all(struct mail_search_args *args);
+/* Add a sequence set to search args. */
void mail_search_build_add_seqset(struct mail_search_args *args,
uint32_t seq1, uint32_t seq2);
void mail_search_args_init(struct mail_search_args *args,
struct mailbox *box, bool change_uidsets,
const ARRAY_TYPE(seq_range) *search_saved_uidset);
-/* Free keywords. The args can initialized afterwards again if needed. */
+/* Free keywords. 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);
/* Convert sequence sets in args to UIDs. */
void mail_search_args_seq2uid(struct mail_search_args *args);