/usr/include/dovecot/mail-thread.h is in dovecot-dev 1:2.2.22-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #ifndef MAIL_THREAD_H
#define MAIL_THREAD_H
struct mailbox;
struct mail_search_args;
struct mail_thread_context;
enum mail_thread_type {
MAIL_THREAD_NONE,
MAIL_THREAD_ORDEREDSUBJECT,
MAIL_THREAD_REFERENCES,
MAIL_THREAD_REFS
};
struct mail_thread_child_node {
/* Node's index in mail hash transaction */
uint32_t idx;
/* UID or sequence */
uint32_t uid;
/* Timestamp node was sorted with (depends on thread algorithm) */
time_t sort_date;
};
ARRAY_DEFINE_TYPE(mail_thread_child_node, struct mail_thread_child_node);
/* Convert thread type string to enum. Returns TRUE if ok, FALSE if type is
unknown. */
bool mail_thread_type_parse(const char *str, enum mail_thread_type *type_r);
/* Return thread type as string. */
const char *mail_thread_type_to_str(enum mail_thread_type type);
/* Build thread from given search arguments. args=NULL searches everything. */
int mail_thread_init(struct mailbox *box, struct mail_search_args *args,
struct mail_thread_context **ctx_r) ATTR_NULL(2);
void mail_thread_deinit(struct mail_thread_context **ctx);
/* Iterate through thread tree. If write_seqs=TRUE, sequences are returned in
mail_thread_child_node.uid instead of UIDs. */
struct mail_thread_iterate_context *
mail_thread_iterate_init(struct mail_thread_context *ctx,
enum mail_thread_type thread_type, bool write_seqs);
/* If child_iter_r is not NULL, it's set to contain another iterator if the
returned node contains children. The returned iterator must be freed
explicitly. */
const struct mail_thread_child_node *
mail_thread_iterate_next(struct mail_thread_iterate_context *iter,
struct mail_thread_iterate_context **child_iter_r);
/* Returns number of nodes in the current iterator. */
unsigned int
mail_thread_iterate_count(struct mail_thread_iterate_context *iter);
/* Free the iterator. Iterators don't reference other iterators, so it doesn't
matter in which order they're freed. */
int mail_thread_iterate_deinit(struct mail_thread_iterate_context **iter);
#endif
|