summaryrefslogtreecommitdiffstats
path: root/hcid/storage.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2007-08-03 13:09:40 +0000
committerJohan Hedberg <johan.hedberg@nokia.com>2007-08-03 13:09:40 +0000
commitba268bfe5652e348450b10dbc9981e9bcd6a55d5 (patch)
treed4e978d80dc0a508fdeeb117e463c6caab710b71 /hcid/storage.c
parent0ffdac3e37977d4db9fb42832b95a6fd1f3a4100 (diff)
Implement Adapter.ListTrusts method
Diffstat (limited to 'hcid/storage.c')
-rw-r--r--hcid/storage.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/hcid/storage.c b/hcid/storage.c
index 19b13777..68f3470c 100644
--- a/hcid/storage.c
+++ b/hcid/storage.c
@@ -608,3 +608,32 @@ gboolean read_trust(bdaddr_t *local, const char *addr, const char *service)
return ret;
}
+
+struct trust_list {
+ GSList *trusts;
+ const char *service;
+};
+
+static void append_trust(char *key, char *value, void *data)
+{
+ struct trust_list *list = data;
+
+ if (strstr(value, list->service))
+ list->trusts = g_slist_append(list->trusts, g_strdup(key));
+}
+
+GSList *list_trusts(bdaddr_t *local, const char *service)
+{
+ char filename[PATH_MAX + 1];
+ struct trust_list list;
+
+ create_filename(filename, PATH_MAX, local, "trusts");
+
+ list.trusts = NULL;
+ list.service = service;
+
+ if (textfile_foreach(filename, append_trust, &list) < 0)
+ return NULL;
+
+ return list.trusts;
+}