summaryrefslogtreecommitdiff
path: root/addressbook/libedata-book/e-book-backend-sexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/libedata-book/e-book-backend-sexp.c')
-rw-r--r--addressbook/libedata-book/e-book-backend-sexp.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/addressbook/libedata-book/e-book-backend-sexp.c b/addressbook/libedata-book/e-book-backend-sexp.c
index d6304ce2a..12b3315b1 100644
--- a/addressbook/libedata-book/e-book-backend-sexp.c
+++ b/addressbook/libedata-book/e-book-backend-sexp.c
@@ -152,8 +152,30 @@ static gboolean
compare_address (EContact *contact, const char *str,
char *(*compare)(const char*, const char*))
{
- g_warning("address searching not implemented\n");
- return FALSE;
+
+ int i;
+ gboolean rv = FALSE;
+
+ for (i = E_CONTACT_FIRST_ADDRESS_ID; i <= E_CONTACT_LAST_ADDRESS_ID; i ++) {
+ EContactAddress *address = e_contact_get (contact, i);
+ if (address) {
+ rv = (address->po && compare(address->po, str)) ||
+ (address->street && compare(address->street, str)) ||
+ (address->ext && compare(address->ext, str)) ||
+ (address->locality && compare(address->locality, str)) ||
+ (address->region && compare(address->region, str)) ||
+ (address->code && compare(address->code, str)) ||
+ (address->country && compare(address->country, str));
+
+ e_contact_address_free (address);
+
+ if (rv)
+ break;
+ }
+ }
+
+ return rv;
+
}
static gboolean