Cross Reference: /dovecot/src/doveadm/doveadm-mail.h
doveadm-mail.h revision e09c7dc961cb9cab04ec7cc79215c2f6318fbde0
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
55
56
57
58
59
60
61
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen#ifndef DOVEADM_MAIL_H
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen#define DOVEADM_MAIL_H
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen#include "doveadm.h"
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct mail_user;
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenstruct doveadm_mail_cmd_context;
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenstruct doveadm_mail_cmd_context {
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen pool_t pool;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen const char *getopt_args;
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen bool (*parse_arg)(struct doveadm_mail_cmd_context *ctx,int c);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen void (*init)(struct doveadm_mail_cmd_context *ctx,
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen const char *const args[]);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen void (*run)(struct doveadm_mail_cmd_context *ctx,
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen struct mail_user *mail_user);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen void (*deinit)(struct doveadm_mail_cmd_context *ctx);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen};
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenstruct doveadm_mail_cmd {
2766f1de8141c09767a959d2d2c3065c5a300bf0Timo Sirainen struct doveadm_mail_cmd_context *(*alloc)(void);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen const char *name;
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen const char *usage_args;
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen};
c59b9c273b41f7bcf51f6803110b67813879ff05Timo SirainenARRAY_DEFINE_TYPE(doveadm_mail_cmd, struct doveadm_mail_cmd);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenextern ARRAY_TYPE(doveadm_mail_cmd) doveadm_mail_cmds;
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenbool doveadm_mail_try_run(const char *cmd_name, int argc, char *argv[]);
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_register_cmd(const struct doveadm_mail_cmd *cmd);
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_usage(void);
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_help(const struct doveadm_mail_cmd *cmd) ATTR_NORETURN;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_help_name(const char *cmd_name) ATTR_NORETURN;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_try_help_name(const char *cmd_name);
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_init(void);
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenvoid doveadm_mail_deinit(void);
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenstruct mailbox *
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainendoveadm_mailbox_find_and_sync(struct mail_user *user, const char *mailbox);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenstruct mail_search_args *
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainendoveadm_mail_build_search_args(const char *const args[]);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainenstruct doveadm_mail_cmd_context *
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainendoveadm_mail_cmd_alloc_size(size_t size);
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen#define doveadm_mail_cmd_alloc(type) \
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen (type *)doveadm_mail_cmd_alloc_size(sizeof(type))
c59b9c273b41f7bcf51f6803110b67813879ff05Timo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_expunge;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_search;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_fetch;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_altmove;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_mailbox_list;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_mailbox_create;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_mailbox_delete;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainenstruct doveadm_mail_cmd cmd_mailbox_rename;
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen#endif
c33d3f93abf8392fdc60e12bea41ffd12cc85a8dTimo Sirainen