aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-backend-card-sexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/pas/pas-backend-card-sexp.c')
-rw-r--r--addressbook/backend/pas/pas-backend-card-sexp.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/addressbook/backend/pas/pas-backend-card-sexp.c b/addressbook/backend/pas/pas-backend-card-sexp.c
index 8b531d5ede..ea217fa052 100644
--- a/addressbook/backend/pas/pas-backend-card-sexp.c
+++ b/addressbook/backend/pas/pas-backend-card-sexp.c
@@ -71,6 +71,23 @@ compare_phone (ECardSimple *card, const char *str,
}
static gboolean
+compare_name (ECardSimple *card, const char *str,
+ char *(*compare)(const char*, const char*))
+{
+ const char *name;
+
+ name = e_card_simple_get_const (card, E_CARD_SIMPLE_FIELD_FULL_NAME);
+ if (name && compare (name, str))
+ return TRUE;
+
+ name = e_card_simple_get_const (card, E_CARD_SIMPLE_FIELD_FAMILY_NAME);
+ if (name && compare (name, str))
+ return TRUE;
+
+ return FALSE;
+}
+
+static gboolean
compare_address (ECardSimple *card, const char *str,
char *(*compare)(const char*, const char*))
{
@@ -157,7 +174,7 @@ static struct prop_info {
/* query prop, ecard prop, type, list compare function */
NORMAL_PROP ( E_CARD_SIMPLE_FIELD_FILE_AS, "file_as", "file_as" ),
- NORMAL_PROP ( E_CARD_SIMPLE_FIELD_FULL_NAME, "full_name", "full_name" ),
+ LIST_PROP ( "full_name", "full_name", compare_name), /* not really a list, but we need to compare both full and surname */
NORMAL_PROP ( E_CARD_SIMPLE_FIELD_URL, "url", "url" ),
NORMAL_PROP ( E_CARD_SIMPLE_FIELD_MAILER, "mailer", "mailer"),
NORMAL_PROP ( E_CARD_SIMPLE_FIELD_ORG, "org", "org"),
@@ -280,7 +297,7 @@ static char *
endswith_helper (const char *s1, const char *s2)
{
char *p;
- if ((p = strstr(s1, s2))
+ if ((p = (char*)e_utf8_strstrcase(s1, s2))
&& (strlen(p) == strlen(s2)))
return p;
else
@@ -299,7 +316,7 @@ static char *
beginswith_helper (const char *s1, const char *s2)
{
char *p;
- if ((p = strstr(s1, s2))
+ if ((p = (char*)e_utf8_strstrcase(s1, s2))
&& (p == s1))
return p;
else