summaryrefslogtreecommitdiff
path: root/lib/sdp.c
diff options
context:
space:
mode:
authorAnderson Lizardo <anderson.lizardo@openbossa.org>2013-02-15 11:07:46 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2013-02-18 09:59:34 +0200
commiteff66b3ebbd72cf2d8732a476a79745c905c6641 (patch)
tree7a2076557109c9027c7d7b5b9882cb98feb9caa0 /lib/sdp.c
parenta9544b8062e706f394d718880802359653e68952 (diff)
downloadbluez-eff66b3ebbd72cf2d8732a476a79745c905c6641.tar.gz
lib: Reuse identical code in sdp_get_{add,}_access_protos()
sdp_get_access_protos() and sdp_get_add_access_protos() do almost exactly the same thing, except for an additional statement for the latter.
Diffstat (limited to 'lib/sdp.c')
-rw-r--r--lib/sdp.c34
1 files changed, 12 insertions, 22 deletions
diff --git a/lib/sdp.c b/lib/sdp.c
index 8cfdde1a9..57abfd883 100644
--- a/lib/sdp.c
+++ b/lib/sdp.c
@@ -1860,18 +1860,22 @@ sdp_data_t *sdp_get_proto_desc(sdp_list_t *list, int proto)
return NULL;
}
-int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
+static int sdp_get_proto_descs(uint16_t attr_id, const sdp_record_t *rec,
+ sdp_list_t **pap)
{
sdp_data_t *pdlist, *curr;
sdp_list_t *ap = 0;
- pdlist = sdp_data_get(rec, SDP_ATTR_PROTO_DESC_LIST);
+ pdlist = sdp_data_get(rec, attr_id);
if (pdlist == NULL) {
errno = ENODATA;
return -1;
}
SDPDBG("AP type : 0%x\n", pdlist->dtd);
+ if (attr_id == SDP_ATTR_ADD_PROTO_DESC_LIST)
+ pdlist = pdlist->val.dataseq;
+
for (; pdlist; pdlist = pdlist->next) {
sdp_list_t *pds = 0;
for (curr = pdlist->val.dataseq; curr; curr = curr->next)
@@ -1882,28 +1886,14 @@ int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
return 0;
}
-int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
+int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
{
- sdp_data_t *pdlist, *curr;
- sdp_list_t *ap = 0;
-
- pdlist = sdp_data_get(rec, SDP_ATTR_ADD_PROTO_DESC_LIST);
- if (pdlist == NULL) {
- errno = ENODATA;
- return -1;
- }
- SDPDBG("AP type : 0%x\n", pdlist->dtd);
-
- pdlist = pdlist->val.dataseq;
+ return sdp_get_proto_descs(SDP_ATTR_PROTO_DESC_LIST, rec, pap);
+}
- for (; pdlist; pdlist = pdlist->next) {
- sdp_list_t *pds = 0;
- for (curr = pdlist->val.dataseq; curr; curr = curr->next)
- pds = sdp_list_append(pds, curr->val.dataseq);
- ap = sdp_list_append(ap, pds);
- }
- *pap = ap;
- return 0;
+int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
+{
+ return sdp_get_proto_descs(SDP_ATTR_ADD_PROTO_DESC_LIST, rec, pap);
}
int sdp_get_uuidseq_attr(const sdp_record_t *rec, uint16_t attr,