From 9bd2e41ac26b7c46bfd8efb8d51f1ddc8eb6d611 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Fri, 16 Apr 2010 18:13:23 -0300 Subject: [PATCH] obexd: Add support to more application parameters Adds support to MaxListCount and ListStartOffset to the tracker backend. --- obexd/plugins/phonebook-tracker.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/obexd/plugins/phonebook-tracker.c b/obexd/plugins/phonebook-tracker.c index c7c4e065c..efa7e3fd8 100644 --- a/obexd/plugins/phonebook-tracker.c +++ b/obexd/plugins/phonebook-tracker.c @@ -258,6 +258,7 @@ struct phonebook_data { phonebook_cb cb; void *user_data; int index; + const struct apparam_field *params; }; struct cache_data { @@ -458,12 +459,25 @@ static int query_tracker(const char* query, int num_fields, static void pull_contacts(char **reply, int num_fields, void *user_data) { struct phonebook_data *data = user_data; + const struct apparam_field *params = data->params; GString *vcards = data->vcards; char *formatted; + int last_index; if (reply == NULL) goto done; + data->index++; + + /* Just interested in knowing the phonebook size */ + if (params->maxlistcount == 0) + return; + + last_index = params->liststartoffset + params->maxlistcount; + + if (data->index < params->liststartoffset || data->index > last_index) + return; + formatted = g_strdup_printf("%s;%s;%s;%s;%s", reply[1], reply[2], reply[3], reply[4], reply[5]); @@ -472,8 +486,6 @@ static void pull_contacts(char **reply, int num_fields, void *user_data) g_free(formatted); - data->index++; - return; done: @@ -603,6 +615,7 @@ int phonebook_pull(const char *name, const struct apparam_field *params, data = g_new0(struct phonebook_data, 1); data->vcards = g_string_new(NULL); + data->params = params; data->user_data = user_data; data->cb = cb; @@ -620,6 +633,7 @@ int phonebook_get_entry(const char *folder, const char *id, data = g_new0(struct phonebook_data, 1); data->vcards = g_string_new(NULL); data->user_data = user_data; + data->params = params; data->cb = cb; query = g_strdup_printf(CONTACTS_QUERY_FROM_URI, id, id, id, id, id); -- 2.47.3