summaryrefslogtreecommitdiffstats
path: root/src/storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/storage.c')
-rw-r--r--src/storage.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/storage.c b/src/storage.c
index fc0f15d4..c951f0f2 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -45,7 +45,7 @@
#include <bluetooth/sdp_lib.h>
#include "textfile.h"
-
+#include "glib-helper.h"
static inline int create_filename(char *buf, size_t size, const bdaddr_t *bdaddr, const char *name)
{
char addr[18];
@@ -854,6 +854,33 @@ sdp_list_t *read_records(const gchar *src, const gchar *dst)
return rec_list.recs;
}
+sdp_record_t *find_record_in_list(sdp_list_t *recs, const char *uuid)
+{
+ sdp_list_t *seq;
+
+ for (seq = recs; seq; seq = seq->next) {
+ sdp_record_t *rec = (sdp_record_t *) seq->data;
+ sdp_list_t *svcclass = NULL;
+ char *uuid_str;
+
+ if (sdp_get_service_classes(rec, &svcclass) < 0)
+ continue;
+
+ /* Extract the uuid */
+ uuid_str = bt_uuid2string(svcclass->data);
+ if (!uuid_str)
+ continue;
+
+ if (!strcasecmp(uuid_str, uuid)) {
+ sdp_list_free(svcclass, free);
+ free(uuid_str);
+ return rec;
+ }
+ sdp_list_free(svcclass, free);
+ free(uuid_str);
+ }
+ return NULL;
+}
int store_device_id(const gchar *src, const gchar *dst,
const uint16_t source, const uint16_t vendor,