doveadm-mail.h revision e4ba52b8290d366b5763df03be6709af3da0bc57
0f39a57760d93cddbce3ca43096d78e0fe2f42fdTimo Sirainen /* Parse one getopt() parameter. This is called for each parameter. */
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen bool (*parse_arg)(struct doveadm_mail_cmd_context *ctx, int c);
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen /* Usually not needed. The preinit() is called just after parsing all
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen parameters, but before any userdb lookups are done. This allows the
22535a9e685e29214082878e37a267157044618eTimo Sirainen preinit() to alter the userdb lookup behavior (especially
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen service_flags). */
f3d506e525a720f214020ca0f989a1966b30edaeTimo Sirainen void (*preinit)(struct doveadm_mail_cmd_context *ctx);
74674a53a72dab535c61f455b2246ef2797844eaTimo Sirainen /* Initialize the command. Most importantly if the function prints
74674a53a72dab535c61f455b2246ef2797844eaTimo Sirainen anything, this should initialize the headers. It shouldn't however
74674a53a72dab535c61f455b2246ef2797844eaTimo Sirainen do any actual work. The init() is called also when doveadm is
74674a53a72dab535c61f455b2246ef2797844eaTimo Sirainen performing the work via doveadm-server, which could be running
c5383a0ed56a188a7d5efaaa4c6f8243af432d65Timo Sirainen remotely with completely different Dovecot configuration. */
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen void (*init)(struct doveadm_mail_cmd_context *ctx,
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen const char *const args[]);
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen /* Usually not needed. When iterating through multiple users, use this
3cf67672fdc87583cb23ce088c95bb5dee60e74dTimo Sirainen function to get the next username. Overriding this is usually done
3cf67672fdc87583cb23ce088c95bb5dee60e74dTimo Sirainen only when there's a known username filter, such as the expire
9ed2951bd0bb1878a27437d7c00611b2baadd614Timo Sirainen int (*get_next_user)(struct doveadm_mail_cmd_context *ctx,
9ed2951bd0bb1878a27437d7c00611b2baadd614Timo Sirainen const char **username_r);
e48d89622047bd8bbd0475b881ca9377d592f535Timo Sirainen /* Usually not needed. This is called between
2d8f66596f445dd8b399b7032c3f0e9202015b63Timo Sirainen mail_storage_service_lookup() and mail_storage_service_next() for
2d8f66596f445dd8b399b7032c3f0e9202015b63Timo Sirainen each user. */
2d8f66596f445dd8b399b7032c3f0e9202015b63Timo Sirainen int (*prerun)(struct doveadm_mail_cmd_context *ctx,
04052d7cacaa866a3f00afb4e104fa46c04c1dd7Timo Sirainen struct mail_storage_service_user *service_user,
9ed2951bd0bb1878a27437d7c00611b2baadd614Timo Sirainen const char **error_r);
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen /* This is the main function which performs all the work for the
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen command. This is called once per each user. */
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen int (*run)(struct doveadm_mail_cmd_context *ctx,
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen /* Deinitialize the command. Called once at the end - even if
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen preinit() or init() was never called. */
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen void (*deinit)(struct doveadm_mail_cmd_context *ctx);
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen unsigned int id;
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen const char *const *args;
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen /* args including -options */
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen const char *const *full_args;
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen /* connection via doveadm-server */
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4Timo Sirainen enum mail_storage_service_flags service_flags;
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4Timo Sirainen struct mail_storage_service_ctx *storage_service;
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen struct mail_storage_service_input storage_service_input;
e48d89622047bd8bbd0475b881ca9377d592f535Timo Sirainen /* search args aren't set for all mail commands */
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen struct mail_storage_service_user *cur_service_user;
1e21e6be70994b1aa9e52ca0e2f51afefca6d0dfTimo Sirainen ARRAY(union doveadm_mail_cmd_module_context *) module_contexts;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen /* if non-zero, exit with this code */
int exit_code;
struct doveadm_mail_cmd {
const char *name;
const char *usage_args;
extern char doveadm_mail_cmd_hide;
bool doveadm_is_killed(void);
void doveadm_mail_init(void);
void doveadm_mail_deinit(void);
const struct doveadm_mail_cmd *
const char *const **argv);
struct doveadm_mail_cmd_context *
const char **error_r);
const char **error_r);
void doveadm_mail_server_flush(void);
struct mailbox *
struct mail_search_args *
struct mail_search_args *
struct doveadm_mail_cmd_context *