From: Timo Sirainen Date: Sun, 20 Jul 2008 23:48:51 +0000 (+0300) Subject: Added mailbox_keyword_is_valid(). X-Git-Tag: 1.2.alpha1~119 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e3796bfd2bc0fd5ba664893d346df9334a5b3af0;p=thirdparty%2Fdovecot%2Fcore.git Added mailbox_keyword_is_valid(). --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/cydir/cydir-storage.c b/src/lib-storage/index/cydir/cydir-storage.c index 278352b395..c4ce9a4cfb 100644 --- a/src/lib-storage/index/cydir/cydir-storage.c +++ b/src/lib-storage/index/cydir/cydir-storage.c @@ -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, diff --git a/src/lib-storage/index/dbox/dbox-storage.c b/src/lib-storage/index/dbox/dbox-storage.c index e974119d6c..caff4772ea 100644 --- a/src/lib-storage/index/dbox/dbox-storage.c +++ b/src/lib-storage/index/dbox/dbox-storage.c @@ -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, diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 7473190b76..72f9aeeb67 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -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) { diff --git a/src/lib-storage/index/index-storage.h b/src/lib-storage/index/index-storage.h index 60f0404032..8f9fd8f568 100644 --- a/src/lib-storage/index/index-storage.h +++ b/src/lib-storage/index/index-storage.h @@ -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, diff --git a/src/lib-storage/index/maildir/maildir-storage.c b/src/lib-storage/index/maildir/maildir-storage.c index f3c86cebc4..74abe78798 100644 --- a/src/lib-storage/index/maildir/maildir-storage.c +++ b/src/lib-storage/index/maildir/maildir-storage.c @@ -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, diff --git a/src/lib-storage/index/mbox/mbox-storage.c b/src/lib-storage/index/mbox/mbox-storage.c index 9bb24e74b5..9f7553557d 100644 --- a/src/lib-storage/index/mbox/mbox-storage.c +++ b/src/lib-storage/index/mbox/mbox-storage.c @@ -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, diff --git a/src/lib-storage/index/raw/raw-storage.c b/src/lib-storage/index/raw/raw-storage.c index bb57b222de..f9e617f870 100644 --- a/src/lib-storage/index/raw/raw-storage.c +++ b/src/lib-storage/index/raw/raw-storage.c @@ -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, diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index 3d23e87d7b..5a38a1d82f 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -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); diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index f7011308b6..30f14593ff 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -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) { diff --git a/src/lib-storage/mail-storage.h b/src/lib-storage/mail-storage.h index 2fc9513183..d603678067 100644 --- a/src/lib-storage/mail-storage.h +++ b/src/lib-storage/mail-storage.h @@ -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,