]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added mailbox_keyword_is_valid().
authorTimo Sirainen <tss@iki.fi>
Sun, 20 Jul 2008 23:48:51 +0000 (02:48 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 20 Jul 2008 23:48:51 +0000 (02:48 +0300)
--HG--
branch : HEAD

src/lib-storage/index/cydir/cydir-storage.c
src/lib-storage/index/dbox/dbox-storage.c
src/lib-storage/index/index-storage.c
src/lib-storage/index/index-storage.h
src/lib-storage/index/maildir/maildir-storage.c
src/lib-storage/index/mbox/mbox-storage.c
src/lib-storage/index/raw/raw-storage.c
src/lib-storage/mail-storage-private.h
src/lib-storage/mail-storage.c
src/lib-storage/mail-storage.h

index 278352b39503132c8b0729849c8ea800da7d3c41..c4ce9a4cfb42f9a947d9fd0887dfe3c419a33d74 100644 (file)
@@ -441,6 +441,7 @@ struct mailbox cydir_mailbox = {
                index_transaction_set_max_modseq,
                index_keywords_create,
                index_keywords_free,
+               index_keyword_is_valid,
                index_storage_get_seq_range,
                index_storage_get_uid_range,
                index_storage_get_expunged_uids,
index e974119d6c79c8a19f93cae868cc526c8e9e9560..caff4772eae767a157c33fdae98c60b6657c0250 100644 (file)
@@ -701,6 +701,7 @@ struct mailbox dbox_mailbox = {
                index_transaction_set_max_modseq,
                index_keywords_create,
                index_keywords_free,
+               index_keyword_is_valid,
                index_storage_get_seq_range,
                index_storage_get_uid_range,
                index_storage_get_expunged_uids,
index 7473190b76aec6d798cb0302d5dce07075687add..72f9aeeb6759829da5d16c3891032e7b19fcbd45 100644 (file)
@@ -538,9 +538,10 @@ void mail_storage_set_index_error(struct index_mailbox *ibox)
        mail_index_reset_error(ibox->index);
 }
 
-int index_mailbox_keyword_is_valid(struct index_mailbox *ibox,
-                                  const char *keyword, const char **error_r)
+bool index_keyword_is_valid(struct mailbox *box, const char *keyword,
+                           const char **error_r)
 {
+       struct index_mailbox *ibox = (struct index_mailbox *)box;
        unsigned int i, idx;
 
        /* if it already exists, skip validity checks */
@@ -580,7 +581,7 @@ index_keywords_create_skip(struct index_mailbox *ibox,
 
        t_array_init(&valid_keywords, 32);
        for (; *keywords != NULL; keywords++) {
-               if (index_mailbox_keyword_is_valid(ibox, *keywords, &error))
+               if (mailbox_keyword_is_valid(&ibox->box, *keywords, &error))
                        array_append(&valid_keywords, keywords, 1);
        }
        (void)array_append_space(&valid_keywords); /* NULL-terminate */
@@ -595,7 +596,7 @@ int index_keywords_create(struct mailbox *_box, const char *const keywords[],
        unsigned int i;
 
        for (i = 0; keywords[i] != NULL; i++) {
-               if (index_mailbox_keyword_is_valid(ibox, keywords[i], &error))
+               if (mailbox_keyword_is_valid(_box, keywords[i], &error))
                        continue;
 
                if (!skip_invalid) {
index 60f0404032f7288cf42cf4a5f09819cf2af83fc4..8f9fd8f5686036467ce379d195a11a5434ae9a94 100644 (file)
@@ -116,6 +116,8 @@ int index_mailbox_keyword_is_valid(struct index_mailbox *ibox,
 int index_keywords_create(struct mailbox *box, const char *const keywords[],
                          struct mail_keywords **keywords_r, bool skip_invalid);
 void index_keywords_free(struct mail_keywords *keywords);
+bool index_keyword_is_valid(struct mailbox *box, const char *keyword,
+                           const char **error_r);
 
 void index_mailbox_set_recent_uid(struct index_mailbox *ibox, uint32_t uid);
 void index_mailbox_set_recent_seq(struct index_mailbox *ibox,
index f3c86cebc4be47d84285920bd373886535c41de0..74abe787987391090d992d59041520f6b9ecf3d7 100644 (file)
@@ -1046,6 +1046,7 @@ struct mailbox maildir_mailbox = {
                index_transaction_set_max_modseq,
                index_keywords_create,
                index_keywords_free,
+               index_keyword_is_valid,
                index_storage_get_seq_range,
                index_storage_get_uid_range,
                index_storage_get_expunged_uids,
index 9bb24e74b586dd8b81ef44ff30e1dfdd4f2d3762..9f7553557dd065ef09725dd68f531bdbfeb995a7 100644 (file)
@@ -1000,6 +1000,7 @@ struct mailbox mbox_mailbox = {
                index_transaction_set_max_modseq,
                index_keywords_create,
                index_keywords_free,
+               index_keyword_is_valid,
                index_storage_get_seq_range,
                index_storage_get_uid_range,
                index_storage_get_expunged_uids,
index bb57b222de75df2d04e3686e624b6d5ecf5a210d..f9e617f870641e4ae6095a3cf51c8bb27c75992c 100644 (file)
@@ -292,6 +292,7 @@ struct mailbox raw_mailbox = {
                index_transaction_set_max_modseq,
                index_keywords_create,
                index_keywords_free,
+               index_keyword_is_valid,
                index_storage_get_seq_range,
                index_storage_get_uid_range,
                index_storage_get_expunged_uids,
index 3d23e87d7bce3b86de04fc98a4d3d663371e733a..5a38a1d82f2ab794a982066e4aabd342308f04fb 100644 (file)
@@ -127,6 +127,8 @@ struct mailbox_vfuncs {
                               struct mail_keywords **keywords_r,
                               bool skip_invalid);
        void (*keywords_free)(struct mail_keywords *keywords);
+       bool (*keyword_is_valid)(struct mailbox *box, const char *keyword,
+                                const char **error_r);
 
        void (*get_seq_range)(struct mailbox *box, uint32_t uid1, uint32_t uid2,
                              uint32_t *seq1_r, uint32_t *seq2_r);
index f7011308b6a13579081eb024836d74cb08b5c28f..30f14593ffbb43ff7c690daef95c99d8e0a8cd2a 100644 (file)
@@ -603,6 +603,12 @@ void mailbox_keywords_free(struct mailbox *box,
        box->v.keywords_free(keywords);
 }
 
+bool mailbox_keyword_is_valid(struct mailbox *box, const char *keyword,
+                             const char **error_r)
+{
+       return box->v.keyword_is_valid(box, keyword, error_r);
+}
+
 void mailbox_get_seq_range(struct mailbox *box, uint32_t uid1, uint32_t uid2,
                           uint32_t *seq1_r, uint32_t *seq2_r)
 {
index 2fc9513183c4c958d0b54ea51b875197017f3264..d603678067f06a25a76aacff779b13f9d855a158 100644 (file)
@@ -385,6 +385,9 @@ mailbox_keywords_create_valid(struct mailbox *box,
                              const char *const keywords[]);
 void mailbox_keywords_free(struct mailbox *box,
                           struct mail_keywords **keywords);
+/* Returns TRUE if keyword is valid, FALSE and error if not. */
+bool mailbox_keyword_is_valid(struct mailbox *box, const char *keyword,
+                             const char **error_r);
 
 /* Convert uid range to sequence range. */
 void mailbox_get_seq_range(struct mailbox *box, uint32_t uid1, uint32_t uid2,