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