dovecot-2.0: lib-storage: Added support for searching with mailb...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Apr 30 15:36:02 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/389a251c9cfe
changeset: 11232:389a251c9cfe
user: Timo Sirainen <tss at iki.fi>
date: Fri Apr 30 15:32:50 2010 +0300
description:
lib-storage: Added support for searching with mailbox GUID.
diffstat:
src/lib-storage/index/index-search.c | 8 ++++++++
src/lib-storage/mail-search-register-human.c | 9 ++++++++-
src/lib-storage/mail-search.c | 2 ++
src/lib-storage/mail-search.h | 1 +
4 files changed, 19 insertions(+), 1 deletions(-)
diffs (88 lines):
diff -r 5f3f0d5f9dd8 -r 389a251c9cfe src/lib-storage/index/index-search.c
--- a/src/lib-storage/index/index-search.c Fri Apr 30 14:39:32 2010 +0300
+++ b/src/lib-storage/index/index-search.c Fri Apr 30 15:32:50 2010 +0300
@@ -218,6 +218,7 @@
time_t date;
int tz_offset;
bool have_tz_offset;
+ uint8_t guid[MAIL_GUID_128_SIZE];
switch (arg->type) {
/* internal dates */
@@ -286,6 +287,12 @@
if (strcasecmp(str, "INBOX") == 0)
return strcasecmp(arg->value.str, "INBOX") == 0;
return strcmp(str, arg->value.str) == 0;
+ case SEARCH_MAILBOX_GUID:
+ if (mailbox_get_guid(ctx->mail->box, guid) < 0)
+ return -1;
+
+ return strcmp(mail_guid_128_to_string(guid),
+ arg->value.str) == 0;
case SEARCH_MAILBOX_GLOB:
if (mail_get_special(ctx->mail, MAIL_FETCH_MAILBOX_NAME,
&str) < 0)
@@ -1182,6 +1189,7 @@
case SEARCH_TEXT_FAST:
case SEARCH_GUID:
case SEARCH_MAILBOX:
+ case SEARCH_MAILBOX_GUID:
case SEARCH_MAILBOX_GLOB:
return TRUE;
}
diff -r 5f3f0d5f9dd8 -r 389a251c9cfe src/lib-storage/mail-search-register-human.c
--- a/src/lib-storage/mail-search-register-human.c Fri Apr 30 14:39:32 2010 +0300
+++ b/src/lib-storage/mail-search-register-human.c Fri Apr 30 15:32:50 2010 +0300
@@ -131,6 +131,12 @@
return mail_search_build_str(ctx, SEARCH_MAILBOX_GLOB);
}
+static struct mail_search_arg *
+human_search_mailbox_guid(struct mail_search_build_context *ctx)
+{
+ return mail_search_build_str(ctx, SEARCH_MAILBOX_GUID);
+}
+
static const struct mail_search_register_arg human_register_args[] = {
{ "OR", human_search_or },
@@ -154,7 +160,8 @@
/* Other Dovecot extensions: */
{ "GUID", human_search_guid },
- { "MAILBOX", human_search_mailbox }
+ { "MAILBOX", human_search_mailbox },
+ { "MAILBOX-GUID", human_search_mailbox_guid }
};
struct mail_search_register *
diff -r 5f3f0d5f9dd8 -r 389a251c9cfe src/lib-storage/mail-search.c
--- a/src/lib-storage/mail-search.c Fri Apr 30 14:39:32 2010 +0300
+++ b/src/lib-storage/mail-search.c Fri Apr 30 15:32:50 2010 +0300
@@ -312,6 +312,7 @@
case SEARCH_TEXT_FAST:
case SEARCH_GUID:
case SEARCH_MAILBOX:
+ case SEARCH_MAILBOX_GUID:
case SEARCH_MAILBOX_GLOB:
new_arg->value.str = p_strdup(pool, arg->value.str);
break;
@@ -845,6 +846,7 @@
case SEARCH_TEXT_FAST:
case SEARCH_GUID:
case SEARCH_MAILBOX:
+ case SEARCH_MAILBOX_GUID:
case SEARCH_MAILBOX_GLOB:
/* don't bother doing case-insensitive comparison. it must not
be done for guid/mailbox, and for others we should support
diff -r 5f3f0d5f9dd8 -r 389a251c9cfe src/lib-storage/mail-search.h
--- a/src/lib-storage/mail-search.h Fri Apr 30 14:39:32 2010 +0300
+++ b/src/lib-storage/mail-search.h Fri Apr 30 15:32:50 2010 +0300
@@ -43,6 +43,7 @@
SEARCH_INTHREAD,
SEARCH_GUID,
SEARCH_MAILBOX,
+ SEARCH_MAILBOX_GUID,
SEARCH_MAILBOX_GLOB
};
More information about the dovecot-cvs
mailing list