diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 17:36:47 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 17:36:47 +0000 |
commit | 0441d265f2bb9da249c7abf333f0f771fadb4ab5 (patch) | |
tree | 3f3789daa2f6db22da6e55e92bee0062a7d613fe /src/imap/imap-commands-util.h | |
parent | Initial commit. (diff) | |
download | dovecot-0441d265f2bb9da249c7abf333f0f771fadb4ab5.tar.xz dovecot-0441d265f2bb9da249c7abf333f0f771fadb4ab5.zip |
Adding upstream version 1:2.3.21+dfsg1.upstream/1%2.3.21+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/imap/imap-commands-util.h')
-rw-r--r-- | src/imap/imap-commands-util.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/imap/imap-commands-util.h b/src/imap/imap-commands-util.h new file mode 100644 index 0000000..997ed02 --- /dev/null +++ b/src/imap/imap-commands-util.h @@ -0,0 +1,81 @@ +#ifndef IMAP_COMMANDS_UTIL_H +#define IMAP_COMMANDS_UTIL_H + +struct msgset_generator_context { + string_t *str; + uint32_t first_uid, last_uid; +}; + +struct mail_full_flags; +struct mailbox_keywords; + +/* Finds namespace for given mailbox from namespaces. If namespace isn't found + or mailbox name is invalid, sends a tagged NO reply to client. */ +struct mail_namespace * +client_find_namespace(struct client_command_context *cmd, const char **mailbox); +struct mail_namespace * +client_find_namespace_full(struct client *client, + const char **mailbox, const char **client_error_r); + +/* Returns TRUE if mailbox is selected. If not, sends "No mailbox selected" + error message to client. */ +bool client_verify_open_mailbox(struct client_command_context *cmd); +/* Close the selected mailbox. */ +void imap_client_close_mailbox(struct client *client); + +/* Open APPEND/COPY destination mailbox. */ +int client_open_save_dest_box(struct client_command_context *cmd, + const char *name, struct mailbox **destbox_r); + +/* Returns string based in IMAP command name and parameters. */ +const char *imap_client_command_get_reason(struct client_command_context *cmd); +/* Set transaction's reason to the IMAP command name and parameters. */ +void imap_transaction_set_cmd_reason(struct mailbox_transaction_context *trans, + struct client_command_context *cmd); +const char * +imap_get_error_string(struct client_command_context *cmd, + const char *error_string, enum mail_error error); + +void client_disconnect_if_inconsistent(struct client *client); + +/* Send an explicit error message to client. */ +void client_send_error(struct client_command_context *cmd, + const char *error_string, enum mail_error error); +/* Send last mailbox list error message to client. */ +void client_send_list_error(struct client_command_context *cmd, + struct mailbox_list *list); +/* Send last mail storage error message to client. */ +void client_send_storage_error(struct client_command_context *cmd, + struct mail_storage *storage); +/* Send last mailbox's storage error message to client. */ +void client_send_box_error(struct client_command_context *cmd, + struct mailbox *box); + +/* Send untagged error message to client. */ +void client_send_untagged_storage_error(struct client *client, + struct mail_storage *storage); + +/* Parse flags. Returns TRUE if successful, if not sends an error message to + client. */ +bool client_parse_mail_flags(struct client_command_context *cmd, + const struct imap_arg *args, + enum mail_flags *flags_r, + const char *const **keywords_r); + +/* Send FLAGS + PERMANENTFLAGS to client if they have changed, + or if selecting=TRUE. */ +void client_send_mailbox_flags(struct client *client, bool selecting); +/* Update client->keywords array. Use keywords=NULL when unselecting. */ +void client_update_mailbox_flags(struct client *client, + const ARRAY_TYPE(keywords) *keywords) + ATTR_NULL(2); +/* Convert keyword indexes to keyword names in selected mailbox. */ +const char *const * +client_get_keyword_names(struct client *client, ARRAY_TYPE(keywords) *dest, + const ARRAY_TYPE(keyword_indexes) *src); + +void msgset_generator_init(struct msgset_generator_context *ctx, string_t *str); +void msgset_generator_next(struct msgset_generator_context *ctx, uint32_t uid); +void msgset_generator_finish(struct msgset_generator_context *ctx); + +#endif |