OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution-data-server?expand=0&rev=37
This commit is contained in:
parent
8b72a4f747
commit
ddd6a8a87c
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:c21ed24bc880c6e6b2d286c539ea6761baba557892ca84b61a0cdfef414c9b42
|
|
||||||
size 7818457
|
|
3
evolution-data-server-2.23.92.tar.bz2
Normal file
3
evolution-data-server-2.23.92.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5d1b841d7deb9303022011df87ede06c89fd09a3f9bf9f5832f451ed7cdb45bc
|
||||||
|
size 7864941
|
@ -1,884 +0,0 @@
|
|||||||
commit c4c5a8f8017b2283fe2622cdbe66e049da221e44
|
|
||||||
Author: Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
Date: Wed Sep 3 14:10:51 2008 +0530
|
|
||||||
|
|
||||||
2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
|
|
||||||
* libedataserver/e-sexp.c (parse_list): Fix a crash in sexp.
|
|
||||||
|
|
||||||
diff --git a/ChangeLog b/ChangeLog
|
|
||||||
index 8358c8d..2702d11 100644
|
|
||||||
--- a/ChangeLog
|
|
||||||
+++ b/ChangeLog
|
|
||||||
@@ -1,3 +1,7 @@
|
|
||||||
+2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
+
|
|
||||||
+ * libedataserver/e-sexp.c (parse_list): Fix a crash in sexp.
|
|
||||||
+
|
|
||||||
2008-09-01 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
|
|
||||||
* NEWS: Evolution Data Server 2.23.91 release and version bump.
|
|
||||||
diff --git a/libedataserver/e-sexp.c b/libedataserver/e-sexp.c
|
|
||||||
index 364cc65..e07eb07 100644
|
|
||||||
--- a/libedataserver/e-sexp.c
|
|
||||||
+++ b/libedataserver/e-sexp.c
|
|
||||||
@@ -1031,6 +1031,8 @@ parse_list(ESExp *f, int gotbrace)
|
|
||||||
case G_TOKEN_IDENTIFIER:
|
|
||||||
e_sexp_fatal_error(f, "Unknown identifier: %s", g_scanner_cur_value(gs).v_identifier);
|
|
||||||
break;
|
|
||||||
+ case G_TOKEN_LEFT_PAREN:
|
|
||||||
+ return parse_list(f, TRUE);
|
|
||||||
default:
|
|
||||||
e_sexp_fatal_error(f, "Unexpected token encountered: %d", token);
|
|
||||||
}
|
|
||||||
commit 7d62ab35cc67da3b720b2a591c7dbe61c0c54011
|
|
||||||
Author: Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
Date: Wed Sep 3 14:12:28 2008 +0530
|
|
||||||
|
|
||||||
2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
|
|
||||||
* camel/Makefile.am:
|
|
||||||
* camel/camel-search-sql-sexp.c: New Sexp based sexp to sql parser.
|
|
||||||
* camel/camel-search-sql-sexp.h:
|
|
||||||
|
|
||||||
diff --git a/camel/ChangeLog b/camel/ChangeLog
|
|
||||||
index d82b0fa..bfdd2b3 100644
|
|
||||||
--- a/camel/ChangeLog
|
|
||||||
+++ b/camel/ChangeLog
|
|
||||||
@@ -1,3 +1,9 @@
|
|
||||||
+2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
+
|
|
||||||
+ * camel/Makefile.am:
|
|
||||||
+ * camel/camel-search-sql-sexp.c: New Sexp based sexp to sql parser.
|
|
||||||
+ * camel/camel-search-sql-sexp.h:
|
|
||||||
+
|
|
||||||
2008-09-01 Keith Packard <keithp@keithp.com>
|
|
||||||
|
|
||||||
** Fix for bug #541045
|
|
||||||
diff --git a/camel/Makefile.am b/camel/Makefile.am
|
|
||||||
index 7c8142d..ed93022 100644
|
|
||||||
--- a/camel/Makefile.am
|
|
||||||
+++ b/camel/Makefile.am
|
|
||||||
@@ -72,6 +72,7 @@ libcamel_provider_1_2_la_SOURCES = \
|
|
||||||
camel-sasl.c \
|
|
||||||
camel-search-private.c \
|
|
||||||
camel-search-sql.c \
|
|
||||||
+ camel-search-sql-sexp.c \
|
|
||||||
camel-service.c \
|
|
||||||
camel-session.c \
|
|
||||||
camel-smime-context.c \
|
|
||||||
diff --git a/camel/camel-search-sql-sexp.c b/camel/camel-search-sql-sexp.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..b1f2c27
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/camel/camel-search-sql-sexp.c
|
|
||||||
@@ -0,0 +1,719 @@
|
|
||||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) 2008 Novell, Inc. (www.novell.com)
|
|
||||||
+ *
|
|
||||||
+ * Author: Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of version 2 of the GNU Lesser General Public
|
|
||||||
+ * License as published by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ * General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU Lesser General Public
|
|
||||||
+ * License along with this program; if not, write to the
|
|
||||||
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
+ * Boston, MA 02110-1301, USA.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/* This is a helper class for folders to implement the search function.
|
|
||||||
+ It implements enough to do basic searches on folders that can provide
|
|
||||||
+ an in-memory summary and a body index. */
|
|
||||||
+
|
|
||||||
+#ifdef HAVE_CONFIG_H
|
|
||||||
+#include <config.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#include <stdio.h>
|
|
||||||
+#include <string.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <glib.h>
|
|
||||||
+#include "camel-search-sql-sexp.h"
|
|
||||||
+#include "libedataserver/e-sexp.h"
|
|
||||||
+#define d(x) //x;printf("\n");
|
|
||||||
+
|
|
||||||
+#ifdef TEST_MAIN
|
|
||||||
+#include <sqlite3.h>
|
|
||||||
+typedef enum {
|
|
||||||
+ CAMEL_SEARCH_MATCH_EXACT,
|
|
||||||
+ CAMEL_SEARCH_MATCH_CONTAINS,
|
|
||||||
+ CAMEL_SEARCH_MATCH_STARTS,
|
|
||||||
+ CAMEL_SEARCH_MATCH_ENDS,
|
|
||||||
+ CAMEL_SEARCH_MATCH_SOUNDEX
|
|
||||||
+} camel_search_match_t;
|
|
||||||
+char * camel_db_get_column_name (const char *raw_name);
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
+camel_db_sqlize_string (const char *string)
|
|
||||||
+{
|
|
||||||
+ return sqlite3_mprintf ("%Q", string);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+camel_db_free_sqlized_string (char *string)
|
|
||||||
+{
|
|
||||||
+ sqlite3_free (string);
|
|
||||||
+ string = NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#else
|
|
||||||
+#include "camel-db.h"
|
|
||||||
+#include "camel-folder-search.h"
|
|
||||||
+#include "camel-search-private.h"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
+get_db_safe_string (const char *str)
|
|
||||||
+{
|
|
||||||
+ char *tmp = camel_db_sqlize_string (str);
|
|
||||||
+ char *ret;
|
|
||||||
+
|
|
||||||
+ ret = g_strdup(tmp);
|
|
||||||
+ camel_db_free_sqlized_string (tmp);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Configuration of your sexp expression */
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+func_and(ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r, *r1;
|
|
||||||
+ GString *string;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ d(printf("executing and: %d", argc));
|
|
||||||
+
|
|
||||||
+ string = g_string_new("( ");
|
|
||||||
+ for (i = 0; i < argc; i ++) {
|
|
||||||
+ r1 = e_sexp_term_eval(f, argv[i]);
|
|
||||||
+
|
|
||||||
+ if (r1->type != ESEXP_RES_STRING) {
|
|
||||||
+ e_sexp_result_free (f, r1);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ if (r1->value.string && *r1->value.string)
|
|
||||||
+ g_string_append_printf(string, "%s%s", r1->value.string, ((argc>1) && (i != argc-1)) ? " AND ":"");
|
|
||||||
+ e_sexp_result_free (f, r1);
|
|
||||||
+ }
|
|
||||||
+ g_string_append(string, " )");
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+
|
|
||||||
+ if (strlen(string->str) == 4)
|
|
||||||
+ r->value.string = g_strdup("");
|
|
||||||
+ else
|
|
||||||
+ r->value.string = string->str;
|
|
||||||
+ g_string_free(string, FALSE);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+func_or(ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r, *r1;
|
|
||||||
+ GString *string;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ d(printf("executing or: %d", argc));
|
|
||||||
+
|
|
||||||
+ string = g_string_new("( ");
|
|
||||||
+ for (i = 0; i < argc; i ++) {
|
|
||||||
+ r1 = e_sexp_term_eval(f, argv[i]);
|
|
||||||
+
|
|
||||||
+ if (r1->type != ESEXP_RES_STRING){
|
|
||||||
+ e_sexp_result_free (f, r1);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ g_string_append_printf(string, "%s%s", r1->value.string, ((argc>1) && (i != argc-1)) ? " OR ":"");
|
|
||||||
+ e_sexp_result_free (f, r1);
|
|
||||||
+ }
|
|
||||||
+ g_string_append(string, " )");
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = string->str;
|
|
||||||
+ g_string_free(string, FALSE);
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+func_not(ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r=NULL, *r1;
|
|
||||||
+
|
|
||||||
+ d(printf("executing not: %d", argc));
|
|
||||||
+ r1 = e_sexp_term_eval(f, argv[0]);
|
|
||||||
+
|
|
||||||
+ if (r1->type == ESEXP_RES_STRING) {
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup_printf ("(NOT (%s))",
|
|
||||||
+ r1->value.string);
|
|
||||||
+ }
|
|
||||||
+ e_sexp_result_free (f, r1);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* this should support all arguments ...? */
|
|
||||||
+static ESExpResult *
|
|
||||||
+eval_eq(struct _ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ struct _ESExpResult *r, *r1, *r2;
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+
|
|
||||||
+ if (argc == 2) {
|
|
||||||
+ GString *str = g_string_new("( ");
|
|
||||||
+ r1 = e_sexp_term_eval(f, argv[0]);
|
|
||||||
+ r2 = e_sexp_term_eval(f, argv[1]);
|
|
||||||
+
|
|
||||||
+ if (r1->type == ESEXP_RES_INT)
|
|
||||||
+ g_string_append_printf(str, "%d", r1->value.number);
|
|
||||||
+ else if (r1->type == ESEXP_RES_TIME)
|
|
||||||
+ g_string_append_printf(str, "%ld", r1->value.time);
|
|
||||||
+ else if (r1->type == ESEXP_RES_STRING)
|
|
||||||
+ g_string_append_printf(str, "%s", r1->value.string);
|
|
||||||
+
|
|
||||||
+ if (!strstr(str->str, "completed-on") && !strstr(str->str, "follow-up")) {
|
|
||||||
+ gboolean ut = FALSE;
|
|
||||||
+
|
|
||||||
+ if (strstr(str->str, "usertags"))
|
|
||||||
+ ut = TRUE;
|
|
||||||
+ if (ut)
|
|
||||||
+ g_string_append_printf(str, " LIKE ");
|
|
||||||
+ else
|
|
||||||
+ g_string_append_printf(str, " = ");
|
|
||||||
+ if (r2->type == ESEXP_RES_INT)
|
|
||||||
+ g_string_append_printf(str, "%d", r2->value.number);
|
|
||||||
+ if (r2->type == ESEXP_RES_BOOL)
|
|
||||||
+ g_string_append_printf(str, "%d", r2->value.bool);
|
|
||||||
+ else if (r2->type == ESEXP_RES_TIME)
|
|
||||||
+ g_string_append_printf(str, "%ld", r2->value.time);
|
|
||||||
+ else if (r2->type == ESEXP_RES_STRING) {
|
|
||||||
+ char *tmp = g_strdup_printf("%c%s%c", ut ? '%':' ', r2->value.string, ut?'%':' ');
|
|
||||||
+ char *safe = get_db_safe_string(tmp);
|
|
||||||
+ g_string_append_printf(str, "%s", safe);
|
|
||||||
+ g_free(safe);
|
|
||||||
+ g_free(tmp);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ e_sexp_result_free(f, r1);
|
|
||||||
+ e_sexp_result_free(f, r2);
|
|
||||||
+ g_string_append (str, " )");
|
|
||||||
+ r->value.string = str->str;
|
|
||||||
+ g_string_free(str, FALSE);
|
|
||||||
+ }
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+eval_lt(struct _ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ struct _ESExpResult *r, *r1, *r2;
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+
|
|
||||||
+ if (argc == 2) {
|
|
||||||
+ GString *str = g_string_new("( ");
|
|
||||||
+ r1 = e_sexp_term_eval(f, argv[0]);
|
|
||||||
+ r2 = e_sexp_term_eval(f, argv[1]);
|
|
||||||
+
|
|
||||||
+ if (r1->type == ESEXP_RES_INT)
|
|
||||||
+ g_string_append_printf(str, "%d", r1->value.number);
|
|
||||||
+ else if (r1->type == ESEXP_RES_TIME)
|
|
||||||
+ g_string_append_printf(str, "%ld", r1->value.time);
|
|
||||||
+ else if (r1->type == ESEXP_RES_STRING)
|
|
||||||
+ g_string_append_printf(str, "%s", r1->value.string);
|
|
||||||
+
|
|
||||||
+ g_string_append_printf(str, " < ");
|
|
||||||
+ if (r2->type == ESEXP_RES_INT)
|
|
||||||
+ g_string_append_printf(str, "%d", r2->value.number);
|
|
||||||
+ if (r2->type == ESEXP_RES_BOOL)
|
|
||||||
+ g_string_append_printf(str, "%d", r2->value.bool);
|
|
||||||
+ else if (r2->type == ESEXP_RES_TIME)
|
|
||||||
+ g_string_append_printf(str, "%ld", r2->value.time);
|
|
||||||
+ else if (r2->type == ESEXP_RES_STRING)
|
|
||||||
+ g_string_append_printf(str, "%s", r2->value.string);
|
|
||||||
+ e_sexp_result_free(f, r1);
|
|
||||||
+ e_sexp_result_free(f, r2);
|
|
||||||
+ g_string_append (str, " )");
|
|
||||||
+
|
|
||||||
+ r->value.string = str->str;
|
|
||||||
+ g_string_free(str, FALSE);
|
|
||||||
+ }
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* this should support all arguments ...? */
|
|
||||||
+static ESExpResult *
|
|
||||||
+eval_gt(struct _ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ struct _ESExpResult *r, *r1, *r2;
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+
|
|
||||||
+ if (argc == 2) {
|
|
||||||
+ GString *str = g_string_new("( ");
|
|
||||||
+ r1 = e_sexp_term_eval(f, argv[0]);
|
|
||||||
+ r2 = e_sexp_term_eval(f, argv[1]);
|
|
||||||
+
|
|
||||||
+ if (r1->type == ESEXP_RES_INT)
|
|
||||||
+ g_string_append_printf(str, "%d", r1->value.number);
|
|
||||||
+ else if (r1->type == ESEXP_RES_TIME)
|
|
||||||
+ g_string_append_printf(str, "%ld", r1->value.time);
|
|
||||||
+ else if (r1->type == ESEXP_RES_STRING)
|
|
||||||
+ g_string_append_printf(str, "%s", r1->value.string);
|
|
||||||
+
|
|
||||||
+ g_string_append_printf(str, " > ");
|
|
||||||
+ if (r2->type == ESEXP_RES_INT)
|
|
||||||
+ g_string_append_printf(str, "%d", r2->value.number);
|
|
||||||
+ if (r2->type == ESEXP_RES_BOOL)
|
|
||||||
+ g_string_append_printf(str, "%d", r2->value.bool);
|
|
||||||
+ else if (r2->type == ESEXP_RES_TIME)
|
|
||||||
+ g_string_append_printf(str, "%ld", r2->value.time);
|
|
||||||
+ else if (r2->type == ESEXP_RES_STRING)
|
|
||||||
+ g_string_append_printf(str, "%s", r2->value.string);
|
|
||||||
+ e_sexp_result_free(f, r1);
|
|
||||||
+ e_sexp_result_free(f, r2);
|
|
||||||
+ g_string_append (str, " )");
|
|
||||||
+
|
|
||||||
+ r->value.string = str->str;
|
|
||||||
+ g_string_free(str, FALSE);
|
|
||||||
+ }
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+match_all(struct _ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+
|
|
||||||
+ d(printf("executing match-all: %d", argc));
|
|
||||||
+ if (argv[0]->type != ESEXP_TERM_TIME)
|
|
||||||
+ r = e_sexp_term_eval(f, argv[0]);
|
|
||||||
+ else {
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup("");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+match_threads(struct _ESExp *f, int argc, struct _ESExpTerm **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+ int i;
|
|
||||||
+ GString *str = g_string_new ("( ");
|
|
||||||
+
|
|
||||||
+ d(printf("executing match-threads: %d", argc));
|
|
||||||
+
|
|
||||||
+ for (i=1;i<argc;i++) {
|
|
||||||
+ r = e_sexp_term_eval(f, argv[i]);
|
|
||||||
+ g_string_append_printf(str, "%s%s", r->value.string, ((argc>1) && (i != argc-1)) ? " AND ":"");
|
|
||||||
+ e_sexp_result_free(f, r);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_string_append (str, " )");
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = str->str;
|
|
||||||
+ g_string_free(str, FALSE);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+check_header (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data, camel_search_match_t how)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+ char *str=NULL;
|
|
||||||
+
|
|
||||||
+ d(printf("executing check-header %d\n", how));
|
|
||||||
+
|
|
||||||
+ /* are we inside a match-all? */
|
|
||||||
+ if (argc>1 && argv[0]->type == ESEXP_RES_STRING) {
|
|
||||||
+ char *headername;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ /* only a subset of headers are supported .. */
|
|
||||||
+ headername = camel_db_get_column_name (argv[0]->value.string);
|
|
||||||
+
|
|
||||||
+ /* performs an OR of all words */
|
|
||||||
+ for (i=1;i<argc;i++) {
|
|
||||||
+ if (argv[i]->type == ESEXP_RES_STRING) {
|
|
||||||
+ char *value=NULL, *tstr=NULL;
|
|
||||||
+ if (argv[i]->value.string[0] == 0)
|
|
||||||
+ continue;
|
|
||||||
+ if (how == CAMEL_SEARCH_MATCH_CONTAINS) {
|
|
||||||
+ tstr = g_strdup_printf ("%c%s%c", '%', argv[i]->value.string, '%');
|
|
||||||
+ value = get_db_safe_string (tstr);
|
|
||||||
+ g_free (tstr);
|
|
||||||
+ } else if (how == CAMEL_SEARCH_MATCH_ENDS) {
|
|
||||||
+ tstr = g_strdup_printf ("%c%s", '%', argv[i]->value.string);
|
|
||||||
+ value = get_db_safe_string (tstr);
|
|
||||||
+ g_free (tstr);
|
|
||||||
+ } else if (how == CAMEL_SEARCH_MATCH_STARTS) {
|
|
||||||
+ tstr = g_strdup_printf ("%s%c", argv[i]->value.string, '%');
|
|
||||||
+ value = get_db_safe_string (tstr);
|
|
||||||
+ g_free (tstr);
|
|
||||||
+ } else if (how == CAMEL_SEARCH_MATCH_EXACT) {
|
|
||||||
+ value = get_db_safe_string(argv[i]->value.string);
|
|
||||||
+ }
|
|
||||||
+ str = g_strdup_printf("(%s LIKE %s)", headername, value);
|
|
||||||
+ g_free(value);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ g_free (headername);
|
|
||||||
+ }
|
|
||||||
+ /* TODO: else, find all matches */
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = str;
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+header_contains(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ d(printf("executing header-contains: %d", argc));
|
|
||||||
+
|
|
||||||
+ return check_header(f, argc, argv, data, CAMEL_SEARCH_MATCH_CONTAINS);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+header_matches(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ d(printf("executing header-matches: %d", argc));
|
|
||||||
+
|
|
||||||
+ return check_header(f, argc, argv, data, CAMEL_SEARCH_MATCH_EXACT);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+header_starts_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ d(printf("executing header-starts-with: %d", argc));
|
|
||||||
+
|
|
||||||
+ return check_header(f, argc, argv, data, CAMEL_SEARCH_MATCH_STARTS);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+header_ends_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ d(printf("executing header-ends-with: %d", argc));
|
|
||||||
+
|
|
||||||
+ return check_header(f, argc, argv, data, CAMEL_SEARCH_MATCH_ENDS);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+header_exists (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+ char *headername;
|
|
||||||
+
|
|
||||||
+ d(printf("executing header-exists: %d", argc));
|
|
||||||
+
|
|
||||||
+ headername = camel_db_get_column_name (argv[0]->value.string);
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup_printf ("(%s NOTNULL)", headername);
|
|
||||||
+ g_free (headername);
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+user_tag(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+
|
|
||||||
+ d(printf("executing user-tag: %d", argc));
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ /* Hacks no otherway to fix these really :( */
|
|
||||||
+ if (strcmp(argv[0]->value.string, "completed-on") == 0)
|
|
||||||
+ r->value.string = g_strdup_printf("usertags NOT LIKE '%ccompleted-on%c'", '%', '%');
|
|
||||||
+ else if (strcmp(argv[0]->value.string, "follow-up") == 0)
|
|
||||||
+ r->value.string = g_strdup_printf("usertags NOT LIKE '%cfollow-up%c'", '%', '%');
|
|
||||||
+ else
|
|
||||||
+ r->value.string = g_strdup("usertags");
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+user_flag(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+ char *tstr, *qstr;
|
|
||||||
+
|
|
||||||
+ d(printf("executing user-flag: %d", argc));
|
|
||||||
+
|
|
||||||
+ tstr = g_strdup_printf("%c%s%c", '%', argv[0]->value.string, '%');
|
|
||||||
+ qstr = get_db_safe_string(tstr);
|
|
||||||
+ g_free(tstr);
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup_printf("(labels LIKE %s)", qstr);
|
|
||||||
+ g_free(qstr);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+system_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+ char *tstr;
|
|
||||||
+
|
|
||||||
+ d(printf("executing system-flag: %d", argc));
|
|
||||||
+
|
|
||||||
+ tstr = camel_db_get_column_name(argv[0]->value.string);
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup_printf("(%s = 1)", tstr);
|
|
||||||
+ g_free(tstr);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+get_sent_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+
|
|
||||||
+ d(printf("executing get-sent-date\n"));
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup("dsent");
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+get_received_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+
|
|
||||||
+ d(printf("executing get-received-date\n"));
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup("dreceived");
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+get_current_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+
|
|
||||||
+ d(printf("executing get-current-date\n"));
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_INT);
|
|
||||||
+ r->value.number = time (NULL);
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static ESExpResult *
|
|
||||||
+get_size (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
|
|
||||||
+{
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+
|
|
||||||
+ d(printf("executing get-size\n"));
|
|
||||||
+
|
|
||||||
+ r = e_sexp_result_new(f, ESEXP_RES_STRING);
|
|
||||||
+ r->value.string = g_strdup("size");
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* 'builtin' functions */
|
|
||||||
+static struct {
|
|
||||||
+ char *name;
|
|
||||||
+ ESExpFunc *func;
|
|
||||||
+ int builtin :1;
|
|
||||||
+} symbols[] = {
|
|
||||||
+ { "and", (ESExpFunc *) func_and, 1 },
|
|
||||||
+ { "or", (ESExpFunc *) func_or, 1},
|
|
||||||
+ { "not", (ESExpFunc *) func_not, 1},
|
|
||||||
+ { "=", (ESExpFunc *)eval_eq, 1},
|
|
||||||
+ { ">", (ESExpFunc *)eval_gt, 1},
|
|
||||||
+ { "<", (ESExpFunc *)eval_lt, 1},
|
|
||||||
+
|
|
||||||
+ { "match-all", (ESExpFunc *)match_all, 0 },
|
|
||||||
+ { "match-threads", (ESExpFunc *)match_threads, 0 },
|
|
||||||
+/* { "body-contains", body_contains}, */ /* We don't store body on the db. */
|
|
||||||
+ { "header-contains", header_contains, 0},
|
|
||||||
+ { "header-matches", header_matches, 0},
|
|
||||||
+ { "header-starts-with", header_starts_with, 0},
|
|
||||||
+ { "header-ends-with", header_ends_with, 0},
|
|
||||||
+ { "header-exists", header_exists, 0},
|
|
||||||
+ { "user-tag", user_tag, 0},
|
|
||||||
+ { "user-flag", user_flag, 0},
|
|
||||||
+ { "system-flag", system_flag, 0},
|
|
||||||
+ { "get-sent-date", get_sent_date, 0},
|
|
||||||
+ { "get-received-date", get_received_date, 0},
|
|
||||||
+ { "get-current-date", get_current_date, 0},
|
|
||||||
+ { "get-size", get_size, 0},
|
|
||||||
+/* { "uid", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, uid), 1 }, */
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
+camel_sexp_to_sql_sexp (const char *sql)
|
|
||||||
+{
|
|
||||||
+ ESExp *sexp;
|
|
||||||
+ ESExpResult *r;
|
|
||||||
+ int i;
|
|
||||||
+ char *res;
|
|
||||||
+
|
|
||||||
+ sexp = e_sexp_new();
|
|
||||||
+
|
|
||||||
+ for(i=0;i<sizeof(symbols)/sizeof(symbols[0]);i++) {
|
|
||||||
+ e_sexp_add_function(sexp, 0, symbols[i].name,
|
|
||||||
+ symbols[i].func, NULL);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ e_sexp_input_text (sexp, sql, strlen (sql));
|
|
||||||
+ e_sexp_parse (sexp);
|
|
||||||
+
|
|
||||||
+ r = e_sexp_eval (sexp);
|
|
||||||
+ if (r->type == ESEXP_RES_STRING) {
|
|
||||||
+ res = g_strdup (r->value.string);
|
|
||||||
+ } else
|
|
||||||
+ g_assert(0);
|
|
||||||
+
|
|
||||||
+ e_sexp_result_free(sexp, r);
|
|
||||||
+ e_sexp_unref (sexp);
|
|
||||||
+ return res;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#ifdef TEST_MAIN
|
|
||||||
+/*
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+(and (match-all (and (not (system-flag "deleted")) (not (system-flag "junk"))))
|
|
||||||
+ (and (or
|
|
||||||
+
|
|
||||||
+ (match-all (not (system-flag "Attachments")))
|
|
||||||
+
|
|
||||||
+ )
|
|
||||||
+ ))
|
|
||||||
+
|
|
||||||
+"
|
|
||||||
+replied INTEGER , (match-all (system-flag "Answered"))
|
|
||||||
+size INTEGER , (match-all (< (get-size) 100))
|
|
||||||
+dsent NUMERIC , (match-all (< (get-sent-date) (- (get-current-date) 10)))
|
|
||||||
+dreceived NUMERIC , (match-all (< (get-received-date) (- (get-current-date) 10)))
|
|
||||||
+//mlist TEXT , x-camel-mlist (match-all (header-matches "x-camel-mlist" "gnome.org"))
|
|
||||||
+//attachment, system-flag "Attachments" (match-all (system-flag "Attachments"))
|
|
||||||
+//followup_flag TEXT , (match-all (not (= (user-tag "follow-up") "")))
|
|
||||||
+//followup_completed_on TEXT , (match-all (not (= (user-tag "completed-on") "")))
|
|
||||||
+//followup_due_by TEXT ," //NOTREQD
|
|
||||||
+*/
|
|
||||||
+
|
|
||||||
+char * camel_db_get_column_name (const char *raw_name)
|
|
||||||
+{
|
|
||||||
+ //d(g_print ("\n\aRAW name is : [%s] \n\a", raw_name));
|
|
||||||
+ if (!g_ascii_strcasecmp (raw_name, "Subject"))
|
|
||||||
+ return g_strdup ("subject");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "from"))
|
|
||||||
+ return g_strdup ("mail_from");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "Cc"))
|
|
||||||
+ return g_strdup ("mail_cc");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "To"))
|
|
||||||
+ return g_strdup ("mail_to");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "Flagged"))
|
|
||||||
+ return g_strdup ("important");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "deleted"))
|
|
||||||
+ return g_strdup ("deleted");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "junk"))
|
|
||||||
+ return g_strdup ("junk");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "Answered"))
|
|
||||||
+ return g_strdup ("replied");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "Seen"))
|
|
||||||
+ return g_strdup ("read");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "user-tag"))
|
|
||||||
+ return g_strdup ("usertags");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "user-flag"))
|
|
||||||
+ return g_strdup ("labels");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "Attachments"))
|
|
||||||
+ return g_strdup ("attachment");
|
|
||||||
+ else if (!g_ascii_strcasecmp (raw_name, "x-camel-mlist"))
|
|
||||||
+ return g_strdup ("mlist");
|
|
||||||
+ else {
|
|
||||||
+ /* Let it crash for all unknown columns for now.
|
|
||||||
+ We need to load the messages into memory and search etc.
|
|
||||||
+ We should extend this for camel-folder-search system flags search as well
|
|
||||||
+ otherwise, search-for-signed-messages will not work etc.*/
|
|
||||||
+
|
|
||||||
+ return g_strdup (raw_name);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int main ()
|
|
||||||
+{
|
|
||||||
+
|
|
||||||
+ int i=0;
|
|
||||||
+ char *txt[] = {
|
|
||||||
+ "(match-all (header-contains \"From\" \"org\"))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (or (header-ends-with \"To\" \"novell.com\") (header-ends-with \"Cc\" \"novell.com\"))) (match-all (or (= (user-tag \"label\") \"work\") (user-flag \"work\"))) )))",
|
|
||||||
+
|
|
||||||
+ "(and (and (match-all (header-contains \"From\" \"org\")) ) (match-all (not (system-flag \"junk\"))))",
|
|
||||||
+
|
|
||||||
+ "(and (and (match-all (header-contains \"From\" \"org\"))) (and (match-all (not (system-flag \"junk\"))) (and (or (match-all (header-contains \"Subject\" \"test\")) (match-all (header-contains \"From\" \"test\"))))))",
|
|
||||||
+ "(and (and (match-all (header-exists \"From\")) ) (match-all (not (system-flag \"junk\"))))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (header-contains \"Subject\" \"org\")) (match-all (header-contains \"From\" \"org\")) (match-all (system-flag \"Flagged\")) (match-all (system-flag \"Seen\")) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (or (header-ends-with \"To\" \"novell.com\") (header-ends-with \"Cc\" \"novell.com\"))) (= (user-tag \"label\") \"work\") )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (or (header-ends-with \"To\" \"novell.com\") (header-ends-with \"Cc\" \"novell.com\"))) (user-flag \"work\") )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (or (header-ends-with \"To\" \"novell.com\") (header-ends-with \"Cc\" \"novell.com\"))) (user-flag (+ \"$Label\" \"work\")) )))"
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (not (= (user-tag \"follow-up\") \"\"))) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (= (user-tag \"follow-up\") \"\")) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (not (= (user-tag \"completed-on\") \"\"))) )))",
|
|
||||||
+ "(match-all (and (match-all #t) (system-flag \"deleted\")))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (or (= (user-tag \"label\") \"important\") (user-flag (+ \"$Label\" \"important\")) (user-flag \"important\"))) )))",
|
|
||||||
+ "(or (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")) (not (system-flag \"Attachments\")) (not (system-flag \"Answered\")))) (and (or (match-all (= (user-tag \"completed-on\") \"\")) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (= (user-tag \"completed-on\") \"\")) (match-all (= (user-tag \"follow-up\") \"\")) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (> (get-sent-date) (- (get-current-date) 100))) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (< (get-sent-date) (+ (get-current-date) 100))) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (not (= (get-sent-date) 1216146600))) )))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (= (get-sent-date) 1216146600)) )))" ,
|
|
||||||
+ "(match-threads \"all\" (or (match-all (header-contains \"From\" \"@edesvcs.com\")) (match-all (or (header-contains \"To\" \"@edesvcs.com\") (header-contains \"Cc\" \"@edesvcs.com\"))) ))",
|
|
||||||
+ "(match-all (not (system-flag \"deleted\")))",
|
|
||||||
+ "(match-all (system-flag \"seen\"))",
|
|
||||||
+ "(match-all (and (match-all #t) (system-flag \"deleted\")))",
|
|
||||||
+ "(match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\"))))",
|
|
||||||
+
|
|
||||||
+ "(and (or (match-all (header-contains \"Subject\" \"lin\")) ) (and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (header-contains \"Subject\" \"case\")) (match-all (header-contains \"From\" \"case\"))))))",
|
|
||||||
+ "(and ( match-all(or (match-all (header-contains \"Subject\" \"lin\")) (match-all (header-contains \"From\" \"in\")))) (and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (header-contains \"Subject\" \"proc\")) (match-all (header-contains \"From\" \"proc\"))))))",
|
|
||||||
+ "(and (or (match-all (header-contains \"Subject\" \"[LDTP-NOSIP]\")) ) (and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (or (match-all (header-contains \"Subject\" \"vamsi\")) (match-all (header-contains \"From\" \"vamsi\"))))))",
|
|
||||||
+ /* Last one doesn't work so well and fails on one case. But I doubt, you can create a query like that in Evo. */
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (match-all (or (= (user-tag \"label\") \"_office\") (user-flag \"$Label_office\") (user-flag \"_office\"))))",
|
|
||||||
+ "(and (and (match-all #t))(and(match-all #t)))",
|
|
||||||
+ "(and (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))) (and (and (match-all (header-contains \"Subject\" \"mysubject\")) (match-all (not (header-matches \"From\" \"mysender\"))) (match-all (= (get-sent-date) (+ (get-current-date) 1))) (match-all (= (get-received-date) (- (get-current-date) 604800))) (match-all (or (= (user-tag \"label\") \"important\") (user-flag (+ \"$Label\" \"important\")) (match-all (< (get-size) 7000)) (match-all (not (= (get-sent-date) 1216146600))) (match-all (> (cast-int (user-tag \"score\")) 3)) (user-flag \"important\"))) (match-all (system-flag \"Deleted\")) (match-all (not (= (user-tag \"follow-up\") \"\"))) (match-all (= (user-tag \"completed-on\") \"\")) (match-all (system-flag \"Attachments\")) (match-all (header-contains \"x-camel-mlist\" \"evo-hackers\")) )))",
|
|
||||||
+ "(and (or (match-all (or (= (user-tag \"label\") \"important\") (user-flag (+ \"$Label\" \"important\")) (user-flag \"important\"))) (match-all (or (= (user-tag \"label\") \"work\") (user-flag (+ \"$Label\" \"work\")) (user-flag \"work\"))) (match-all (or (= (user-tag \"label\") \"personal\") (user-flag (+ \"$Label\" \"personal\")) (user-flag \"personal\"))) (match-all (or (= (user-tag \"label\") \"todo\") (user-flag (+ \"$Label\" \"todo\")) (user-flag \"todo\"))) (match-all (or (= (user-tag \"label\") \"later\") (user-flag (+ \"$Label\" \"later\")) (user-flag \"later\"))) ) (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))))",
|
|
||||||
+ "(or (header-matches \"to\" \"maw@ximian.com\") (header-matches \"to\" \"mw@ximian.com\") (header-matches \"to\" \"maw@novell.com\") (header-matches \"to\" \"maw.AMERICAS3.AMERICAS@novell.com\") (header-matches \"cc\" \"maw@ximian.com\") (header-matches \"cc\" \"mw@ximian.com\") (header-matches \"cc\" \"maw@novell.com\") (header-matches \"cc\" \"maw.AMERICAS3.AMERICAS@novell.com\"))",
|
|
||||||
+ "(not (or (header-matches \"from\" \"bugzilla-daemon@bugzilla.ximian.com\") (header-matches \"from\" \"bugzilla-daemon@bugzilla.gnome.org\") (header-matches \"from\" \"bugzilla_noreply@novell.com\") (header-matches \"from\" \"bugzilla-daemon@mozilla.org\") (header-matches \"from\" \"root@dist.suse.de\") (header-matches \"from\" \"root@hilbert3.suse.de\") (header-matches \"from\" \"root@hilbert4.suse.de\") (header-matches \"from\" \"root@hilbert5.suse.de\") (header-matches \"from\" \"root@hilbert6.suse.de\") (header-matches \"from\" \"root@suse.de\") (header-matches \"from\" \"swamp_noreply@suse.de\") (and (header-matches \"from\" \"hermes@opensuse.org\") (header-starts-with \"subject\" \"submit-Request\"))))",
|
|
||||||
+ "(and (match-threads \"replies_parents\" (and (match-all (or (header-matches \"to\" \"maw@ximian.com\") (header-matches \"to\" \"mw@ximian.com\") (header-matches \"to\" \"maw@novell.com\") (header-matches \"to\" \"maw.AMERICAS3.AMERICAS@novell.com\") (header-matches \"cc\" \"maw@ximian.com\") (header-matches \"cc\" \"mw@ximian.com\") (header-matches \"cc\" \"maw@novell.com\") (header-matches \"cc\" \"maw.AMERICAS3.AMERICAS@novell.com\"))) (match-all (not (or (header-matches \"from\" \"bugzilla-daemon@bugzilla.ximian.com\") (header-matches \"from\" \"bugzilla-daemon@bugzilla.gnome.org\") (header-matches \"from\" \"bugzilla_noreply@novell.com\") (header-matches \"from\" \"bugzilla-daemon@mozilla.org\") (header-matches \"from\" \"root@dist.suse.de\") (header-matches \"from\" \"root@hilbert3.suse.de\") (header-matches \"from\" \"root@hilbert4.suse.de\") (header-matches \"from\" \"root@hilbert5.suse.de\") (header-matches \"from\" \"root@hilbert6.suse.de\") (header-matches \"from\" \"root@suse.de\") (header-matches \"from\" \"swamp_noreply@suse.de\") (and (header-matches \"from\" \"hermes@opensuse.org\") (header-starts-with \"subject\" \"submit-Request\"))))) (match-all (> (get-sent-date) (- (get-current-date) 1209600))) )) (match-all (and (not (system-flag \"deleted\")) (not (system-flag \"junk\")))))",
|
|
||||||
+ "and ((match-all (system-flag \"Deleted\")) (match-all (system-flag \"junk\")))",
|
|
||||||
+ "(and (match-threads \"replies_parents\" (and (match-all (or (header-matches \"to\" \"maw@ximian.com\")))))))"
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ for (i=0; i < G_N_ELEMENTS(txt); i++) {
|
|
||||||
+ char *sql = NULL;
|
|
||||||
+ printf("Q: %s\n\"%c\"\n", txt[i], 40);
|
|
||||||
+ sql = camel_e_sexp_to_sql (txt[i]);
|
|
||||||
+ printf("A: %s\n\n\n", sql);
|
|
||||||
+ g_free (sql);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+
|
|
||||||
diff --git a/camel/camel-search-sql-sexp.h b/camel/camel-search-sql-sexp.h
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..1bcced0
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/camel/camel-search-sql-sexp.h
|
|
||||||
@@ -0,0 +1,32 @@
|
|
||||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) 2008 Novell, Inc. (www.novell.com)
|
|
||||||
+ *
|
|
||||||
+ * Authors: Srinivsa Ragavan <sragavan@novell.com>
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of version 2 of the GNU Lesser General Public
|
|
||||||
+ * License as published by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ * General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU Lesser General Public
|
|
||||||
+ * License along with this program; if not, write to the
|
|
||||||
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
+ * Boston, MA 02110-1301, USA.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef _CAMEL_SEARCH_SQL_SEXP_H
|
|
||||||
+#define _CAMEL_SEARCH_SQL_SEXP_H
|
|
||||||
+
|
|
||||||
+G_BEGIN_DECLS
|
|
||||||
+
|
|
||||||
+/* FIXME: Weird naming, since, I want both parsers to be there for some time.*/
|
|
||||||
+char * camel_sexp_to_sql_sexp (const char *sexp);
|
|
||||||
+
|
|
||||||
+G_END_DECLS
|
|
||||||
+
|
|
||||||
+#endif /* ! _CAMEL_SEARCH_SQL_H */
|
|
||||||
commit 1f0aef2eba882c21df30af66eb33fc1169e77b9d
|
|
||||||
Author: Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
Date: Wed Sep 3 14:18:36 2008 +0530
|
|
||||||
|
|
||||||
2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
|
|
||||||
** Fix for BNC bug #418080
|
|
||||||
|
|
||||||
* camel/camel-folder-search.c: Make thing better, with new sexp/sql
|
|
||||||
parser.
|
|
||||||
|
|
||||||
diff --git a/camel/ChangeLog b/camel/ChangeLog
|
|
||||||
index bfdd2b3..db4f962 100644
|
|
||||||
--- a/camel/ChangeLog
|
|
||||||
+++ b/camel/ChangeLog
|
|
||||||
@@ -1,5 +1,12 @@
|
|
||||||
2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
|
|
||||||
+ ** Fix for BNC bug #418080
|
|
||||||
+
|
|
||||||
+ * camel/camel-folder-search.c: Make thing better, with new sexp/sql
|
|
||||||
+ parser.
|
|
||||||
+
|
|
||||||
+2008-09-03 Srinivasa Ragavan <sragavan@novell.com>
|
|
||||||
+
|
|
||||||
* camel/Makefile.am:
|
|
||||||
* camel/camel-search-sql-sexp.c: New Sexp based sexp to sql parser.
|
|
||||||
* camel/camel-search-sql-sexp.h:
|
|
||||||
diff --git a/camel/camel-folder-search.c b/camel/camel-folder-search.c
|
|
||||||
index 24c7e2b..d511b37 100644
|
|
||||||
--- a/camel/camel-folder-search.c
|
|
||||||
+++ b/camel/camel-folder-search.c
|
|
||||||
@@ -51,6 +51,7 @@
|
|
||||||
#include "camel-vee-folder.h"
|
|
||||||
#include "camel-string-utils.h"
|
|
||||||
#include "camel-search-sql.h"
|
|
||||||
+#include "camel-search-sql-sexp.h"
|
|
||||||
|
|
||||||
#define d(x)
|
|
||||||
#define r(x)
|
|
||||||
@@ -483,7 +484,10 @@ camel_folder_search_search(CamelFolderSearch *search, const char *expr, GPtrArra
|
|
||||||
camel_folder_summary_save_to_db (search->folder->summary, ex);
|
|
||||||
|
|
||||||
d(printf ("sexp is : [%s]\n", expr));
|
|
||||||
- sql_query = camel_sexp_to_sql (expr);
|
|
||||||
+ if (g_getenv("SQL_SEARCH_OLD"))
|
|
||||||
+ sql_query = camel_sexp_to_sql (expr);
|
|
||||||
+ else
|
|
||||||
+ sql_query = camel_sexp_to_sql_sexp (expr);
|
|
||||||
tmp1 = camel_db_sqlize_string(search->folder->full_name);
|
|
||||||
tmp = g_strdup_printf ("SELECT uid FROM %s %s %s", tmp1, sql_query ? "WHERE":"", sql_query?sql_query:"");
|
|
||||||
camel_db_free_sqlized_string (tmp1);
|
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 8 14:14:19 CDT 2008 - maw@suse.de
|
||||||
|
|
||||||
|
- Update to version 2.23.92:
|
||||||
|
+ More work on bnc#418080, improvements in the sexp/sql machinery
|
||||||
|
+ Bugs fixed: bgo#547884, bgo#548343, and bgo#550412
|
||||||
|
+ Updated translations
|
||||||
|
- Drop evolution-data-server-sexp-to-sql-fixes.patch, which has
|
||||||
|
been upstreamed.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Sep 3 18:00:12 CEST 2008 - maw@suse.de
|
Wed Sep 3 18:00:12 CEST 2008 - maw@suse.de
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package evolution-data-server (Version 2.23.91)
|
# spec file for package evolution-data-server (Version 2.23.92)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -19,12 +19,31 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: evolution-data-server
|
Name: evolution-data-server
|
||||||
BuildRequires: bison db-devel fdupes gcc-c++ gnome-certauth-devel gnome-common gnome-keyring-devel gtk-doc intltool krb5-devel libglade2-devel libgnome-devel libidl-devel libsoup-devel mozilla-nss-devel openldap2-devel perl-XML-Parser python-devel sgml-skel sqlite3-devel
|
BuildRequires: bison
|
||||||
|
BuildRequires: db-devel
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: gcc-c++
|
||||||
|
BuildRequires: gnome-certauth-devel
|
||||||
|
BuildRequires: gnome-common
|
||||||
|
BuildRequires: gnome-keyring-devel
|
||||||
|
BuildRequires: gtk-doc
|
||||||
|
BuildRequires: intltool
|
||||||
|
BuildRequires: krb5-devel
|
||||||
|
BuildRequires: libglade2-devel
|
||||||
|
BuildRequires: libgnome-devel
|
||||||
|
BuildRequires: libidl-devel
|
||||||
|
BuildRequires: libsoup-devel
|
||||||
|
BuildRequires: mozilla-nss-devel
|
||||||
|
BuildRequires: openldap2-devel
|
||||||
|
BuildRequires: perl-XML-Parser
|
||||||
|
BuildRequires: python-devel
|
||||||
|
BuildRequires: sgml-skel
|
||||||
|
BuildRequires: sqlite3-devel
|
||||||
License: GPL v2 or later
|
License: GPL v2 or later
|
||||||
Group: Development/Libraries/GNOME
|
Group: Development/Libraries/GNOME
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Summary: Evolution Data Server
|
Summary: Evolution Data Server
|
||||||
Version: 2.23.91
|
Version: 2.23.92
|
||||||
Release: 1
|
Release: 1
|
||||||
Source0: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/2.22/%{name}-%{version}.tar.bz2
|
Source0: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/2.22/%{name}-%{version}.tar.bz2
|
||||||
Patch0: evolution-data-server-configure.patch
|
Patch0: evolution-data-server-configure.patch
|
||||||
@ -38,8 +57,6 @@ Patch4: bnc-304835-ex-crash-after-restart.patch
|
|||||||
Patch5: bnc-307861-calendar-auth.diff
|
Patch5: bnc-307861-calendar-auth.diff
|
||||||
# PATCH-FIX-UPSTREAM: bgo-530514-check-to-handle-specific-server-response.diff bgo530514 psankar@suse.de -- Fix is in upstream svn from 2.22.2
|
# PATCH-FIX-UPSTREAM: bgo-530514-check-to-handle-specific-server-response.diff bgo530514 psankar@suse.de -- Fix is in upstream svn from 2.22.2
|
||||||
Patch9: bgo-530514-check-to-handle-specific-server-response.diff
|
Patch9: bgo-530514-check-to-handle-specific-server-response.diff
|
||||||
# PATCH-FIX-UPSTREAM evolution-data-server-sexp-to-sql-fixes.patch bnc418080 sragavan@novell.com -- already committed, will go away in the next release
|
|
||||||
Patch10: evolution-data-server-sexp-to-sql-fixes.patch
|
|
||||||
# Change patch below if we move away from /opt/gnome
|
# Change patch below if we move away from /opt/gnome
|
||||||
# PATCH-FIX-OPENSUSE libgnomeui-dep.patch -- It avoids a build dependency on libgnomeui to speed up bootstrap
|
# PATCH-FIX-OPENSUSE libgnomeui-dep.patch -- It avoids a build dependency on libgnomeui to speed up bootstrap
|
||||||
Patch99: libgnomeui-dep.patch
|
Patch99: libgnomeui-dep.patch
|
||||||
@ -99,7 +116,6 @@ documentation.
|
|||||||
###%patch4
|
###%patch4
|
||||||
###%patch5
|
###%patch5
|
||||||
%patch9
|
%patch9
|
||||||
%patch10 -p1
|
|
||||||
%patch99
|
%patch99
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -113,13 +129,13 @@ autoheader
|
|||||||
(cd calendar/libical; autoreconf -fi)
|
(cd calendar/libical; autoreconf -fi)
|
||||||
# needed for evolution-data-server-2.22.0:
|
# needed for evolution-data-server-2.22.0:
|
||||||
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
|
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
|
||||||
%configure\
|
%configure \
|
||||||
--libexecdir=%{_prefix}/lib/evolution-data-server\
|
--libexecdir=%{_prefix}/lib/evolution-data-server \
|
||||||
--with-openldap\
|
--with-openldap \
|
||||||
--with-krb5=/usr\
|
--with-krb5=/usr \
|
||||||
--with-krb4=/usr\
|
--with-krb4=/usr \
|
||||||
--enable-gnome-keyring\
|
--enable-gnome-keyring \
|
||||||
--enable-gtk-doc\
|
--enable-gtk-doc \
|
||||||
--enable-ssl
|
--enable-ssl
|
||||||
make %{?jobs:-j%jobs}
|
make %{?jobs:-j%jobs}
|
||||||
|
|
||||||
@ -161,10 +177,17 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_datadir}/gtk-doc/html/*
|
%{_datadir}/gtk-doc/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Sep 08 2008 maw@suse.de
|
||||||
|
- Update to version 2.23.92:
|
||||||
|
+ More work on bnc#418080, improvements in the sexp/sql machinery
|
||||||
|
+ Bugs fixed: bgo#547884, bgo#548343, and bgo#550412
|
||||||
|
+ Updated translations
|
||||||
|
- Drop evolution-data-server-sexp-to-sql-fixes.patch, which has
|
||||||
|
been upstreamed.
|
||||||
* Wed Sep 03 2008 maw@suse.de
|
* Wed Sep 03 2008 maw@suse.de
|
||||||
- Add evolution-data-server-sexp-to-sql-fixes.patch (more work
|
- Add evolution-data-server-sexp-to-sql-fixes.patch (more work
|
||||||
on bnc#418080).
|
on bnc#418080).
|
||||||
* Wed Sep 03 2008 maw@suse.de
|
* Tue Sep 02 2008 maw@suse.de
|
||||||
- Update to version 2.23.91:
|
- Update to version 2.23.91:
|
||||||
+ Bugs fixed: bgo#213072, bnc#391936, bnc#418080 (more work),
|
+ Bugs fixed: bgo#213072, bnc#391936, bnc#418080 (more work),
|
||||||
bgo#466754, bgo#518728, bgo#546926, bgo#548331, bgo#548565,
|
bgo#466754, bgo#518728, bgo#546926, bgo#548331, bgo#548565,
|
||||||
@ -238,12 +261,12 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
* Mon Jun 02 2008 abharath@suse.de
|
* Mon Jun 02 2008 abharath@suse.de
|
||||||
- Added
|
- Added
|
||||||
+ bnc#394654 - bnc-394654-eds-crasher.patch: EDS crasher (Chenthill)
|
+ bnc#394654 - bnc-394654-eds-crasher.patch: EDS crasher (Chenthill)
|
||||||
* Wed May 21 2008 msuman@suse.de
|
* Tue May 20 2008 msuman@suse.de
|
||||||
- Added
|
- Added
|
||||||
+ bgo-530514-check-to-handle-specific-server-response.diff (Sankar P)
|
+ bgo-530514-check-to-handle-specific-server-response.diff (Sankar P)
|
||||||
+ bgo-530543-leak-while-syncing-mails-for-offline.diff (Sankar P)
|
+ bgo-530543-leak-while-syncing-mails-for-offline.diff (Sankar P)
|
||||||
+ bgo-531009-right-iterator-to-prevent-crash-in-offline-mail.diff (Sankar P)
|
+ bgo-531009-right-iterator-to-prevent-crash-in-offline-mail.diff (Sankar P)
|
||||||
* Wed May 14 2008 psankar@suse.de
|
* Tue May 13 2008 psankar@suse.de
|
||||||
- Removed: bnc-152070-eds-crash.patch
|
- Removed: bnc-152070-eds-crash.patch
|
||||||
- Removed: eds-compiler-warning.patch
|
- Removed: eds-compiler-warning.patch
|
||||||
- Removed: evolution-data-server-abuild.patch
|
- Removed: evolution-data-server-abuild.patch
|
||||||
@ -298,7 +321,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
added patch includes those changes as well.
|
added patch includes those changes as well.
|
||||||
* Wed Mar 26 2008 sbrabec@suse.cz
|
* Wed Mar 26 2008 sbrabec@suse.cz
|
||||||
- Fixed GroupWise attachment crash on x86_64 (bgo#522389).
|
- Fixed GroupWise attachment crash on x86_64 (bgo#522389).
|
||||||
* Fri Mar 14 2008 maw@suse.de
|
* Thu Mar 13 2008 maw@suse.de
|
||||||
- Update to versoin 2.22.0:
|
- Update to versoin 2.22.0:
|
||||||
+ Bugs fixed: bgo#327851, bgo#518728, and bgo#520362
|
+ Bugs fixed: bgo#327851, bgo#518728, and bgo#520362
|
||||||
+ Minor API doc updates
|
+ Minor API doc updates
|
||||||
@ -364,7 +387,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
+ Updated translations
|
+ Updated translations
|
||||||
+ Protect against a NULL subject string
|
+ Protect against a NULL subject string
|
||||||
- Remove old patches, and refresh and renumber the remaining ones.
|
- Remove old patches, and refresh and renumber the remaining ones.
|
||||||
* Wed Dec 05 2007 maw@suse.de
|
* Tue Dec 04 2007 maw@suse.de
|
||||||
- Don't require openldap2 to build.
|
- Don't require openldap2 to build.
|
||||||
* Thu Oct 11 2007 sbrabec@suse.cz
|
* Thu Oct 11 2007 sbrabec@suse.cz
|
||||||
- Removed bogus dependency on mDNSResponder.
|
- Removed bogus dependency on mDNSResponder.
|
||||||
@ -375,7 +398,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
+ Bug (bugzilla.novell.com) fixed: #275990
|
+ Bug (bugzilla.novell.com) fixed: #275990
|
||||||
+ Updated timezone info
|
+ Updated timezone info
|
||||||
+ Updated translations.
|
+ Updated translations.
|
||||||
* Sat Sep 15 2007 maw@suse.de
|
* Fri Sep 14 2007 maw@suse.de
|
||||||
- Fix bnc-307861-calendar-auth.diff.
|
- Fix bnc-307861-calendar-auth.diff.
|
||||||
* Fri Sep 14 2007 pchenthill@novell.com
|
* Fri Sep 14 2007 pchenthill@novell.com
|
||||||
- evolution-data-server-1.11.5-cert-auth-complete.patch: Updated the
|
- evolution-data-server-1.11.5-cert-auth-complete.patch: Updated the
|
||||||
@ -436,7 +459,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
* Fri Jun 22 2007 sbrabec@suse.cz
|
* Fri Jun 22 2007 sbrabec@suse.cz
|
||||||
- Fixed IMAP UID format string vulnerability (#284828,
|
- Fixed IMAP UID format string vulnerability (#284828,
|
||||||
GNOME#447414, CVE-2007-3257).
|
GNOME#447414, CVE-2007-3257).
|
||||||
* Thu May 24 2007 ro@suse.de
|
* Wed May 23 2007 ro@suse.de
|
||||||
- added ldconfig to post scripts
|
- added ldconfig to post scripts
|
||||||
* Wed Apr 11 2007 maw@suse.de
|
* Wed Apr 11 2007 maw@suse.de
|
||||||
- Update to version 1.10.1
|
- Update to version 1.10.1
|
||||||
@ -464,7 +487,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
evolution-data-server-devel.
|
evolution-data-server-devel.
|
||||||
* Fri Dec 29 2006 james@usr-local-bin.org
|
* Fri Dec 29 2006 james@usr-local-bin.org
|
||||||
- Re-enable custom configure options.
|
- Re-enable custom configure options.
|
||||||
* Thu Dec 14 2006 maw@suse.de
|
* Wed Dec 13 2006 maw@suse.de
|
||||||
- Move to /usr
|
- Move to /usr
|
||||||
- Do some specfile cleanup.
|
- Do some specfile cleanup.
|
||||||
* Tue Nov 21 2006 sbrabec@suse.cz
|
* Tue Nov 21 2006 sbrabec@suse.cz
|
||||||
@ -488,7 +511,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
as it is a "to-be" reverted patch.
|
as it is a "to-be" reverted patch.
|
||||||
* Wed Oct 18 2006 schwab@suse.de
|
* Wed Oct 18 2006 schwab@suse.de
|
||||||
- Fix missing declaration.
|
- Fix missing declaration.
|
||||||
* Tue Oct 03 2006 jhargadon@suse.de
|
* Mon Oct 02 2006 jhargadon@suse.de
|
||||||
- update to version 1.8.1
|
- update to version 1.8.1
|
||||||
- translation updates
|
- translation updates
|
||||||
- Bug fixes:
|
- Bug fixes:
|
||||||
@ -501,7 +524,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- update to 1.8.0:
|
- update to 1.8.0:
|
||||||
* updated translation
|
* updated translation
|
||||||
* bugfixes
|
* bugfixes
|
||||||
* Sat Aug 19 2006 jhargadon@suse.de
|
* Fri Aug 18 2006 jhargadon@suse.de
|
||||||
- update to version 1.7.91
|
- update to version 1.7.91
|
||||||
- Add filters to Groupwise SOAP calls so that each component
|
- Add filters to Groupwise SOAP calls so that each component
|
||||||
fetches items of its own type and none other
|
fetches items of its own type and none other
|
||||||
@ -517,7 +540,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
* Thu Jul 20 2006 kharish@novell.com
|
* Thu Jul 20 2006 kharish@novell.com
|
||||||
- Patch to add alarms to GW meetings by default based on customer
|
- Patch to add alarms to GW meetings by default based on customer
|
||||||
preference. Fixes bnc 167330.
|
preference. Fixes bnc 167330.
|
||||||
* Wed Jul 19 2006 kharish@novell.com
|
* Tue Jul 18 2006 kharish@novell.com
|
||||||
- Patch to correctly handle calendar attachment filenames that do
|
- Patch to correctly handle calendar attachment filenames that do
|
||||||
not require special characters handling. They were being parsed
|
not require special characters handling. They were being parsed
|
||||||
incorrectly and ignored by clients.
|
incorrectly and ignored by clients.
|
||||||
@ -551,7 +574,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Committed patch for bug 181906, which solves a exchange crash.
|
- Committed patch for bug 181906, which solves a exchange crash.
|
||||||
* Fri Jun 02 2006 sragavan@novell.com
|
* Fri Jun 02 2006 sragavan@novell.com
|
||||||
- Updated German Translations.
|
- Updated German Translations.
|
||||||
* Thu Jun 01 2006 fejj@suse.de
|
* Wed May 31 2006 fejj@suse.de
|
||||||
- Added bnc-176277-2.patch which fixes a deadlock condition
|
- Added bnc-176277-2.patch which fixes a deadlock condition
|
||||||
* Mon May 29 2006 vvaradhan@novell.com
|
* Mon May 29 2006 vvaradhan@novell.com
|
||||||
- Fixes (bnc)
|
- Fixes (bnc)
|
||||||
@ -584,7 +607,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Removed gw-force-use-imap.patch as it was decided to default to soap.
|
- Removed gw-force-use-imap.patch as it was decided to default to soap.
|
||||||
* Tue May 02 2006 fejj@suse.de
|
* Tue May 02 2006 fejj@suse.de
|
||||||
- Added bnc-167638.patch: Fixes long shutdown times due to the imap/gw providers trying to sync data at exit time.
|
- Added bnc-167638.patch: Fixes long shutdown times due to the imap/gw providers trying to sync data at exit time.
|
||||||
* Tue May 02 2006 fejj@suse.de
|
* Mon May 01 2006 fejj@suse.de
|
||||||
- Added bgo-315976-INBOX-not-shown-when-override-namespace.patch
|
- Added bgo-315976-INBOX-not-shown-when-override-namespace.patch
|
||||||
* Tue Apr 25 2006 sragavan@novell.com
|
* Tue Apr 25 2006 sragavan@novell.com
|
||||||
- Fixes (bnc)
|
- Fixes (bnc)
|
||||||
@ -676,7 +699,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
152062 Evolution won't show an attachment
|
152062 Evolution won't show an attachment
|
||||||
158093 Evolution: Groupwise "Sent Items" folder should have a
|
158093 Evolution: Groupwise "Sent Items" folder should have a
|
||||||
"To:" column instead of a "From:" column
|
"To:" column instead of a "From:" column
|
||||||
* Thu Mar 16 2006 vvaradhan@novell.com
|
* Wed Mar 15 2006 vvaradhan@novell.com
|
||||||
- Fixes (bnc)
|
- Fixes (bnc)
|
||||||
157323 Messages deleted from Groupwise folder remain in Evo.
|
157323 Messages deleted from Groupwise folder remain in Evo.
|
||||||
156559 Evolution won't show me 827 messages
|
156559 Evolution won't show me 827 messages
|
||||||
@ -742,12 +765,12 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Fixed devel dependencies.
|
- Fixed devel dependencies.
|
||||||
* Thu Dec 01 2005 gekker@suse.de
|
* Thu Dec 01 2005 gekker@suse.de
|
||||||
- Update to version 1.4.2.1
|
- Update to version 1.4.2.1
|
||||||
* Thu Nov 03 2005 dmueller@suse.de
|
* Wed Nov 02 2005 dmueller@suse.de
|
||||||
- don't build as root
|
- don't build as root
|
||||||
* Thu Oct 13 2005 gekker@suse.de
|
* Thu Oct 13 2005 gekker@suse.de
|
||||||
- Update to version 1.4.1
|
- Update to version 1.4.1
|
||||||
- Fix more warnings
|
- Fix more warnings
|
||||||
* Mon Sep 26 2005 ro@suse.de
|
* Sun Sep 25 2005 ro@suse.de
|
||||||
- added LDAP_DEPRECATED to CFLAGS
|
- added LDAP_DEPRECATED to CFLAGS
|
||||||
* Fri Sep 09 2005 aj@suse.de
|
* Fri Sep 09 2005 aj@suse.de
|
||||||
- Change last patch.
|
- Change last patch.
|
||||||
@ -756,20 +779,20 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
* Mon Sep 05 2005 rodrigo@suse.de
|
* Mon Sep 05 2005 rodrigo@suse.de
|
||||||
- Update to version 1.4.0
|
- Update to version 1.4.0
|
||||||
- Removed upstreamed patches
|
- Removed upstreamed patches
|
||||||
* Thu Aug 25 2005 gekker@suse.de
|
* Wed Aug 24 2005 gekker@suse.de
|
||||||
- Update to version 1.3.8
|
- Update to version 1.3.8
|
||||||
- Fix brokeness inlibical
|
- Fix brokeness inlibical
|
||||||
* Sat Aug 13 2005 aj@suse.de
|
* Sat Aug 13 2005 aj@suse.de
|
||||||
- Add lzo and lzo-devel to nfb.
|
- Add lzo and lzo-devel to nfb.
|
||||||
* Fri Aug 12 2005 gekker@suse.de
|
* Thu Aug 11 2005 gekker@suse.de
|
||||||
- Update to version 1.3.7
|
- Update to version 1.3.7
|
||||||
* Mon Aug 01 2005 gekker@suse.de
|
* Mon Aug 01 2005 gekker@suse.de
|
||||||
- Update to version 1.3.6.1
|
- Update to version 1.3.6.1
|
||||||
* Fri Jul 29 2005 sbrabec@suse.cz
|
* Fri Jul 29 2005 sbrabec@suse.cz
|
||||||
- Require mozilla-nss (#98002).
|
- Require mozilla-nss (#98002).
|
||||||
* Wed Jul 27 2005 ro@suse.de
|
* Tue Jul 26 2005 ro@suse.de
|
||||||
- fix typo in specfile
|
- fix typo in specfile
|
||||||
* Tue Jul 26 2005 gekker@suse.de
|
* Mon Jul 25 2005 gekker@suse.de
|
||||||
- Update to version 1.3.5
|
- Update to version 1.3.5
|
||||||
* Thu Jul 14 2005 schwab@suse.de
|
* Thu Jul 14 2005 schwab@suse.de
|
||||||
- Fix missing declarations again.
|
- Fix missing declarations again.
|
||||||
@ -787,7 +810,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Build with mozilla-nss.
|
- Build with mozilla-nss.
|
||||||
* Wed Jun 01 2005 sbrabec@suse.cz
|
* Wed Jun 01 2005 sbrabec@suse.cz
|
||||||
- Fixed devel requirements.
|
- Fixed devel requirements.
|
||||||
* Thu May 19 2005 ro@suse.de
|
* Wed May 18 2005 ro@suse.de
|
||||||
- fix build with current pkgconfig
|
- fix build with current pkgconfig
|
||||||
* Fri Apr 29 2005 sbrabec@suse.cz
|
* Fri Apr 29 2005 sbrabec@suse.cz
|
||||||
- Yet another mail crasher fix (#66996).
|
- Yet another mail crasher fix (#66996).
|
||||||
@ -801,14 +824,14 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
* Wed Mar 16 2005 gekker@suse.de
|
* Wed Mar 16 2005 gekker@suse.de
|
||||||
- Update to version 1.2.1
|
- Update to version 1.2.1
|
||||||
- Add 64bit-warn.patch
|
- Add 64bit-warn.patch
|
||||||
* Wed Mar 09 2005 gekker@suse.de
|
* Tue Mar 08 2005 gekker@suse.de
|
||||||
- Update to version 1.2.0 (GNOME 2.10)
|
- Update to version 1.2.0 (GNOME 2.10)
|
||||||
- remove upstreamed dest.patch
|
- remove upstreamed dest.patch
|
||||||
* Wed Mar 02 2005 gekker@suse.de
|
* Wed Mar 02 2005 gekker@suse.de
|
||||||
- add dest.patch
|
- add dest.patch
|
||||||
* Wed Mar 02 2005 gekker@suse.de
|
* Wed Mar 02 2005 gekker@suse.de
|
||||||
- update to version 1.1.6
|
- update to version 1.1.6
|
||||||
* Mon Feb 28 2005 ro@suse.de
|
* Sun Feb 27 2005 ro@suse.de
|
||||||
- fix build on lib64
|
- fix build on lib64
|
||||||
* Fri Feb 25 2005 gekker@suse.de
|
* Fri Feb 25 2005 gekker@suse.de
|
||||||
- fix libexecdir, so that e-d-s will actually get launched
|
- fix libexecdir, so that e-d-s will actually get launched
|
||||||
@ -824,7 +847,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
privileges) in lock helper (CAN-2005-0102, #50116).
|
privileges) in lock helper (CAN-2005-0102, #50116).
|
||||||
* Mon Jan 24 2005 meissner@suse.de
|
* Mon Jan 24 2005 meissner@suse.de
|
||||||
- Fixed some gcc 4 warnings/error that show code problems.
|
- Fixed some gcc 4 warnings/error that show code problems.
|
||||||
* Sat Jan 15 2005 clahey@suse.de
|
* Fri Jan 14 2005 clahey@suse.de
|
||||||
- Update to version 1.1.3.
|
- Update to version 1.1.3.
|
||||||
* Thu Jan 06 2005 gekker@suse.de
|
* Thu Jan 06 2005 gekker@suse.de
|
||||||
- Update to version 1.1.2
|
- Update to version 1.1.2
|
||||||
@ -842,14 +865,14 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- locale rename: no -> nb
|
- locale rename: no -> nb
|
||||||
* Thu Sep 30 2004 dobey@suse.de
|
* Thu Sep 30 2004 dobey@suse.de
|
||||||
- Add patch to fix bug 66368 in bugzilla.ximian.com
|
- Add patch to fix bug 66368 in bugzilla.ximian.com
|
||||||
* Thu Sep 30 2004 dobey@suse.de
|
* Wed Sep 29 2004 dobey@suse.de
|
||||||
- Add patch to fix bug 66230 in bugzilla.ximian.com
|
- Add patch to fix bug 66230 in bugzilla.ximian.com
|
||||||
* Fri Sep 24 2004 dobey@suse.de
|
* Fri Sep 24 2004 dobey@suse.de
|
||||||
- Updated to version 1.0.1
|
- Updated to version 1.0.1
|
||||||
- Removed evolution-data-server-0.0.99.dif which is in upstream source
|
- Removed evolution-data-server-0.0.99.dif which is in upstream source
|
||||||
* Fri Sep 17 2004 ro@suse.de
|
* Thu Sep 16 2004 ro@suse.de
|
||||||
- readd evolution-data-server-0.0.99.dif to fix parallel build
|
- readd evolution-data-server-0.0.99.dif to fix parallel build
|
||||||
* Tue Sep 14 2004 dobey@suse.de
|
* Mon Sep 13 2004 dobey@suse.de
|
||||||
- Updated to version 1.0.0
|
- Updated to version 1.0.0
|
||||||
- Removed evolution-data-server-0.0.99.dif which was not changelogged,
|
- Removed evolution-data-server-0.0.99.dif which was not changelogged,
|
||||||
and seems to not actually change anything
|
and seems to not actually change anything
|
||||||
@ -859,7 +882,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Update to version 0.0.99
|
- Update to version 0.0.99
|
||||||
* Wed Aug 18 2004 dobey@suse.de
|
* Wed Aug 18 2004 dobey@suse.de
|
||||||
- Fix LDAP support and remove unused configure options
|
- Fix LDAP support and remove unused configure options
|
||||||
* Sat Aug 14 2004 dobey@suse.de
|
* Fri Aug 13 2004 dobey@suse.de
|
||||||
- Update to version 0.0.98
|
- Update to version 0.0.98
|
||||||
- Add dependencies to the evolution-data-server-devel package
|
- Add dependencies to the evolution-data-server-devel package
|
||||||
* Thu Aug 05 2004 dobey@suse.de
|
* Thu Aug 05 2004 dobey@suse.de
|
||||||
@ -877,13 +900,13 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Updated to version 0.0.95.
|
- Updated to version 0.0.95.
|
||||||
* Mon Jun 21 2004 clahey@suse.de
|
* Mon Jun 21 2004 clahey@suse.de
|
||||||
- Updated to version 0.0.94.1.
|
- Updated to version 0.0.94.1.
|
||||||
* Fri Jun 04 2004 mibarra@suse.de
|
* Thu Jun 03 2004 mibarra@suse.de
|
||||||
- Updated to version 0.0.94.
|
- Updated to version 0.0.94.
|
||||||
* Mon May 24 2004 ro@suse.de
|
* Mon May 24 2004 ro@suse.de
|
||||||
- fix lib64 issue
|
- fix lib64 issue
|
||||||
* Sat May 22 2004 mibarra@suse.de
|
* Fri May 21 2004 mibarra@suse.de
|
||||||
- Updated to 0.0.93.
|
- Updated to 0.0.93.
|
||||||
* Tue May 18 2004 clahey@suse.de
|
* Tue May 18 2004 clahey@suse.de
|
||||||
- Don't install to /opt/gnome/libexec
|
- Don't install to /opt/gnome/libexec
|
||||||
* Tue May 18 2004 clahey@suse.de
|
* Mon May 17 2004 clahey@suse.de
|
||||||
- Initial import of evolution-data-server.
|
- Initial import of evolution-data-server.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user