]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add enum mail_search_register_arg_flags to mail_search_register_arg
authorMarkus Valentin <markus.valentin@open-xchange.com>
Fri, 9 May 2025 09:25:31 +0000 (11:25 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 12 May 2025 10:40:58 +0000 (10:40 +0000)
src/lib-storage/mail-search-register-human.c
src/lib-storage/mail-search-register-imap.c
src/lib-storage/mail-search-register.h

index 50e06a0e68a96751ad4b0eb26278b6eaa6cf2dfb..7400111e8e2c7230c31dc70e2f94d69007937116 100644 (file)
@@ -151,32 +151,32 @@ human_search_oldestonly(struct mail_search_build_context *ctx)
 }
 
 static const struct mail_search_register_arg human_register_args[] = {
-       { "OR", human_search_or },
+       { "OR", human_search_or, 0},
 
        /* dates */
-       { "BEFORE", human_search_before },
-       { "ON", human_search_on },
-       { "SINCE", human_search_since },
-       { "SENTBEFORE", human_search_sentbefore },
-       { "SENTON", human_search_senton },
-       { "SENTSINCE", human_search_sentsince },
-       { "SAVEDBEFORE", human_search_savedbefore },
-       { "SAVEDON", human_search_savedon },
-       { "SAVEDSINCE", human_search_savedsince },
-       { "SAVEDATESUPPORTED", human_search_savedatesupported },
-       { "X-SAVEDBEFORE", human_search_savedbefore },
-       { "X-SAVEDON", human_search_savedon },
-       { "X-SAVEDSINCE", human_search_savedsince },
+       { "BEFORE", human_search_before, 0},
+       { "ON", human_search_on, 0},
+       { "SINCE", human_search_since, 0},
+       { "SENTBEFORE", human_search_sentbefore, 0},
+       { "SENTON", human_search_senton, 0},
+       { "SENTSINCE", human_search_sentsince, 0},
+       { "SAVEDBEFORE", human_search_savedbefore, 0},
+       { "SAVEDON", human_search_savedon, 0},
+       { "SAVEDSINCE", human_search_savedsince, 0},
+       { "SAVEDATESUPPORTED", human_search_savedatesupported, 0},
+       { "X-SAVEDBEFORE", human_search_savedbefore, 0},
+       { "X-SAVEDON", human_search_savedon, 0},
+       { "X-SAVEDSINCE", human_search_savedsince, 0},
 
        /* sizes */
-       { "LARGER", human_search_larger },
-       { "SMALLER", human_search_smaller },
+       { "LARGER", human_search_larger, 0},
+       { "SMALLER", human_search_smaller, 0},
 
        /* Other Dovecot extensions: */
-       { "GUID", human_search_guid },
-       { "MAILBOX", human_search_mailbox },
-       { "MAILBOX-GUID", human_search_mailbox_guid },
-       { "OLDESTONLY", human_search_oldestonly }
+       { "GUID", human_search_guid, 0},
+       { "MAILBOX", human_search_mailbox, 0},
+       { "MAILBOX-GUID", human_search_mailbox_guid, 0},
+       { "OLDESTONLY", human_search_oldestonly, 0}
 };
 
 static struct mail_search_register *
index 658269636342c2fd376aa8ac29bc48f9aee8e968..cf6db101ec0052a5ce4c29cc31c2e6c947b21893 100644 (file)
@@ -536,85 +536,85 @@ imap_search_x_real_uid(struct mail_search_build_context *ctx)
 
 static const struct mail_search_register_arg imap_register_args[] = {
        /* argument set operations */
-       { "NOT", imap_search_not },
-       { "OR", imap_search_or },
+       { "NOT", imap_search_not, 0 },
+       { "OR", imap_search_or, 0 },
 
        /* message sets */
-       { "ALL", imap_search_all },
-       { "UID", imap_search_uid },
+       { "ALL", imap_search_all, 0 },
+       { "UID", imap_search_uid, 0 },
 
        /* flags */
-       { "ANSWERED", imap_search_answered },
-       { "UNANSWERED", imap_search_unanswered },
-       { "DELETED", imap_search_deleted },
-       { "UNDELETED", imap_search_undeleted },
-       { "DRAFT", imap_search_draft },
-       { "UNDRAFT", imap_search_undraft },
-       { "FLAGGED", imap_search_flagged },
-       { "UNFLAGGED", imap_search_unflagged },
-       { "SEEN", imap_search_seen },
-       { "UNSEEN", imap_search_unseen },
-       { "RECENT", imap_search_recent },
-       { "OLD", imap_search_old },
-       { "NEW", imap_search_new },
+       { "ANSWERED", imap_search_answered, 0 },
+       { "UNANSWERED", imap_search_unanswered, 0 },
+       { "DELETED", imap_search_deleted, 0 },
+       { "UNDELETED", imap_search_undeleted, 0 },
+       { "DRAFT", imap_search_draft, 0 },
+       { "UNDRAFT", imap_search_undraft, 0 },
+       { "FLAGGED", imap_search_flagged, 0 },
+       { "UNFLAGGED", imap_search_unflagged, 0 },
+       { "SEEN", imap_search_seen, 0 },
+       { "UNSEEN", imap_search_unseen, 0 },
+       { "RECENT", imap_search_recent, MAIL_SEARCH_REGISTER_IMAP4REV1 },
+       { "OLD", imap_search_old, 0 },
+       { "NEW", imap_search_new, MAIL_SEARCH_REGISTER_IMAP4REV1 },
 
        /* keywords */
-       { "KEYWORD", imap_search_keyword },
-       { "UNKEYWORD", imap_search_unkeyword },
+       { "KEYWORD", imap_search_keyword, 0 },
+       { "UNKEYWORD", imap_search_unkeyword, 0 },
 
        /* dates */
-       { "BEFORE", imap_search_before },
-       { "ON", imap_search_on },
-       { "SINCE", imap_search_since },
-       { "SENTBEFORE", imap_search_sentbefore },
-       { "SENTON", imap_search_senton },
-       { "SENTSINCE", imap_search_sentsince },
-       { "SAVEDBEFORE", imap_search_savedbefore },
-       { "SAVEDON", imap_search_savedon },
-       { "SAVEDSINCE", imap_search_savedsince },
-       { "SAVEDATESUPPORTED", imap_search_savedatesupported },
+       { "BEFORE", imap_search_before, 0 },
+       { "ON", imap_search_on, 0 },
+       { "SINCE", imap_search_since, 0 },
+       { "SENTBEFORE", imap_search_sentbefore, 0 },
+       { "SENTON", imap_search_senton, 0 },
+       { "SENTSINCE", imap_search_sentsince, 0 },
+       { "SAVEDBEFORE", imap_search_savedbefore, 0 },
+       { "SAVEDON", imap_search_savedon, 0 },
+       { "SAVEDSINCE", imap_search_savedsince, 0 },
+       { "SAVEDATESUPPORTED", imap_search_savedatesupported, 0 },
        /* FIXME: remove these in v2.4: */
-       { "X-SAVEDBEFORE", imap_search_x_savedbefore },
-       { "X-SAVEDON", imap_search_x_savedon },
-       { "X-SAVEDSINCE", imap_search_x_savedsince },
+       { "X-SAVEDBEFORE", imap_search_x_savedbefore, 0 },
+       { "X-SAVEDON", imap_search_x_savedon, 0 },
+       { "X-SAVEDSINCE", imap_search_x_savedsince, 0 },
 
        /* sizes */
-       { "LARGER", imap_search_larger },
-       { "SMALLER", imap_search_smaller },
+       { "LARGER", imap_search_larger, 0 },
+       { "SMALLER", imap_search_smaller, 0 },
 
        /* headers */
-       { "BCC", imap_search_bcc },
-       { "CC", imap_search_cc },
-       { "FROM", imap_search_from },
-       { "TO", imap_search_to },
-       { "SUBJECT", imap_search_subject },
-       { "HEADER", imap_search_header },
+       { "BCC", imap_search_bcc, 0 },
+       { "CC", imap_search_cc, 0 },
+       { "FROM", imap_search_from, 0 },
+       { "TO", imap_search_to, 0 },
+       { "SUBJECT", imap_search_subject, 0 },
+       { "HEADER", imap_search_header, 0 },
 
        /* body */
-       { "BODY", imap_search_body },
-       { "TEXT", imap_search_text },
+       { "BODY", imap_search_body, 0 },
+       { "TEXT", imap_search_text, 0 },
 
        /* WITHIN extension: */
-       { "OLDER", imap_search_older },
-       { "YOUNGER", imap_search_younger },
+       { "OLDER", imap_search_older, 0 },
+       { "YOUNGER", imap_search_younger, 0 },
 
        /* CONDSTORE extension: */
-       { "MODSEQ", imap_search_modseq },
+       { "MODSEQ", imap_search_modseq, 0 },
 
        /* SEARCHRES extension: */
-       { "$", imap_search_last_result },
+       { "$", imap_search_last_result, 0 },
 
        /* FUZZY extension: */
-       { "FUZZY", imap_search_fuzzy },
+       { "FUZZY", imap_search_fuzzy, 0 },
 
        /* SEARCH=MIMEPART extension: */
-       { "MIMEPART", imap_search_mimepart },
+       { "MIMEPART", imap_search_mimepart, 0 },
 
        /* Other Dovecot extensions: */
-       { "INTHREAD", imap_search_inthread },
-       { "X-GUID", imap_search_x_guid },
-       { "X-MAILBOX", imap_search_x_mailbox },
-       { "X-REAL-UID", imap_search_x_real_uid }
+       { "INTHREAD", imap_search_inthread, 0 },
+       { "X-GUID", imap_search_x_guid, 0 },
+       { "X-MAILBOX", imap_search_x_mailbox, 0 },
+       { "X-REAL-UID", imap_search_x_real_uid, 0 }
 };
 
 static struct mail_search_register *mail_search_register_init_imap(void)
index 16e9427d50e606e66a7499d56e5e1ba984bcdce0..11840fc87764c690f3d45e5a8a8f3940871c8cca 100644 (file)
@@ -4,12 +4,17 @@
 struct mail_search_arg;
 struct mail_search_build_context;
 
+enum mail_search_register_arg_flags {
+       MAIL_SEARCH_REGISTER_IMAP4REV1 = BIT(1),
+};
+
 struct mail_search_register_arg {
        const char *key;
 
        /* returns parsed arg or NULL if error. error message is set to ctx. */
        struct mail_search_arg *
                (*build)(struct mail_search_build_context *ctx);
+       enum mail_search_register_arg_flags flags;
 };
 
 typedef struct mail_search_arg *