]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: Add STATUS (DELETED)
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 27 Oct 2025 15:43:01 +0000 (15:43 +0000)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 24 Nov 2025 12:20:11 +0000 (12:20 +0000)
src/imap/imap-status.c
src/imap/imap-status.h

index 2cced0fa1de6d07a854847ba10652bc33e6ff2ac..c5b44a56d6fead3cb9942a127f50f7ab34a820b4 100644 (file)
@@ -34,6 +34,8 @@ int imap_status_parse_items(struct client_command_context *cmd,
                         ((client_enabled_mailbox_features(cmd->client) &
                           MAILBOX_FEATURE_IMAP4REV2) == 0))
                        flags |= IMAP_STATUS_ITEM_RECENT;
+               else if (strcmp(item, "DELETED") == 0)
+                       flags |= IMAP_STATUS_ITEM_DELETED;
                else if (strcmp(item, "UIDNEXT") == 0)
                        flags |= IMAP_STATUS_ITEM_UIDNEXT;
                else if (strcmp(item, "UIDVALIDITY") == 0)
@@ -71,6 +73,8 @@ int imap_status_get_result(struct client *client, struct mailbox *box,
                status |= STATUS_MESSAGES;
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_RECENT))
                status |= STATUS_RECENT;
+       if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_DELETED))
+               status |= STATUS_DELETED;
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_UIDNEXT))
                status |= STATUS_UIDNEXT;
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_UIDVALIDITY))
@@ -143,6 +147,8 @@ int imap_status_send(struct client *client, const char *mailbox_mutf7,
        if ((client_enabled_mailbox_features(client) & MAILBOX_FEATURE_IMAP4REV2) == 0 &&
            HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_RECENT))
                str_printfa(str, "RECENT %u ", status->recent);
+       if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_DELETED))
+               str_printfa(str, "DELETED %u ", status->deleted);
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_UIDNEXT))
                str_printfa(str, "UIDNEXT %u ", status->uidnext);
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_UIDVALIDITY))
index 58bd58179f6efdcfdd1aaa72798d6cdaa110d6f9..844c2b7aa7bfd7c1422a713b53f9b78e17677130 100644 (file)
@@ -9,6 +9,7 @@ enum imap_status_item_flags {
        IMAP_STATUS_ITEM_UNSEEN = BIT(4),
        IMAP_STATUS_ITEM_HIGHESTMODSEQ = BIT(5),
        IMAP_STATUS_ITEM_SIZE = BIT(6),
+       IMAP_STATUS_ITEM_DELETED = BIT(7),
 
        IMAP_STATUS_ITEM_X_SIZE = BIT(16), /* to be deprecated */
        IMAP_STATUS_ITEM_X_GUID = BIT(17),