static bool fts_autoindex_exclude_match(struct mailbox *box) { const char *const *exclude_list; unsigned int i; const struct mailbox_settings *set; const char *const *special_use; struct mail_user *user = box->storage->user; exclude_list = fts_exclude_get_patterns(user); if (exclude_list == NULL) return FALSE; set = mailbox_settings_find(mailbox_get_namespace(box), mailbox_get_vname(box)); special_use = set == NULL ? NULL : t_strsplit_spaces(set->special_use, " "); for (i = 0; exclude_list[i] != NULL; i++) { if (exclude_list[i][0] == '\\') { /* \Special-use flag */ if (str_array_icase_find(special_use, exclude_list[i])) return TRUE; } else { /* mailbox name with wildcards */ if (wildcard_match(box->name, exclude_list[i])) return TRUE; } } return FALSE; }
static void copy_update_trashed(struct client *client, struct mailbox *box, unsigned int count) { const struct mailbox_settings *set; set = mailbox_settings_find(mailbox_get_namespace(box), mailbox_get_vname(box)); if (set != NULL && set->special_use[0] != '\0' && str_array_icase_find(t_strsplit_spaces(set->special_use, " "), "\\Trash")) client->trashed_count += count; }