[evolution-data-server] Bug 300871 - Ignore a specific thread
- From: Milan Crha <mcrha src gnome org>
 
- To: commits-list gnome org
 
- Cc: 
 
- Subject: [evolution-data-server] Bug 300871 - Ignore a specific thread
 
- Date: Mon, 27 Oct 2014 21:13:30 +0000 (UTC)
 
commit c7e11d9208a1a0fe23bdf0d34da946b236986648
Author: Milan Crha <mcrha redhat com>
Date:   Mon Oct 27 22:11:01 2014 +0100
    Bug 300871 - Ignore a specific thread
    
    Added filters to get 'msgid' and 'references' from the folder summary
    encoded as MD5 checksums (like in the CamelMessageInfo members).
 camel/camel-search-sql-sexp.c |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/camel/camel-search-sql-sexp.c b/camel/camel-search-sql-sexp.c
index 6e3f6e7..5d98e0e 100644
--- a/camel/camel-search-sql-sexp.c
+++ b/camel/camel-search-sql-sexp.c
@@ -190,7 +190,25 @@ eval_eq (struct _CamelSExp *f,
                else if (r1->type == CAMEL_SEXP_RES_STRING)
                        g_string_append_printf (str, "%s", r1->value.string);
 
-               if (!strstr (str->str, "completed-on") && !strstr (str->str, "follow-up")) {
+               if (g_str_equal (str->str, "( msgid") || g_str_equal (str->str, "( references")) {
+                       gboolean is_msgid = g_str_equal (str->str, "( msgid");
+
+                       g_string_assign (str, "( part LIKE ");
+                       if (r2->type == CAMEL_SEXP_RES_STRING) {
+                               gchar *tmp, *safe;
+
+                               /* Expects CamelSummaryMessageID encoded as "%lu %lu", id.part.hi, id.part.lo.
+                                  The 'msgid' is always the first, while 'references' is inside. */
+                               /* Beware, the 'references' can return false positives, thus recheck returned 
UID-s. */
+                               tmp = g_strdup_printf ("%s%s%%", is_msgid ? "" : "%", r2->value.string);
+                               safe = get_db_safe_string (tmp);
+                               g_string_append_printf (str, "%s", safe);
+                               g_free (safe);
+                               g_free (tmp);
+                       } else {
+                               g_warn_if_reached ();
+                       }
+               } else if (!strstr (str->str, "completed-on") && !strstr (str->str, "follow-up")) {
                        gboolean ut = FALSE;
 
                        if (strstr (str->str, "usertags"))
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]